diff options
author | Eric Hameleers <alien@slackware.com> | 2020-07-31 16:13:18 +0200 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2020-07-31 16:13:18 +0200 |
commit | 703149752c6265b36973d2c1f0f5a69721e3128a (patch) | |
tree | 7ded0d801771d5705f48ffbfb48f37dd4829439e /kde/patch/kirigami2/kirigami_iconview_crash.patch | |
parent | dd005500c624d127321ff3fe14a0c29bfa8d67f7 (diff) | |
parent | cd7ff1719433fbb3b6a8304596be173bc1b91b00 (diff) | |
download | ktown-master.tar.gz ktown-master.tar.xz |
Diffstat (limited to 'kde/patch/kirigami2/kirigami_iconview_crash.patch')
-rw-r--r-- | kde/patch/kirigami2/kirigami_iconview_crash.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/kde/patch/kirigami2/kirigami_iconview_crash.patch b/kde/patch/kirigami2/kirigami_iconview_crash.patch deleted file mode 100644 index 79a35ed..0000000 --- a/kde/patch/kirigami2/kirigami_iconview_crash.patch +++ /dev/null @@ -1,143 +0,0 @@ -diff --git a/src/columnview.cpp b/src/columnview.cpp ---- a/src/columnview.cpp -+++ b/src/columnview.cpp -@@ -37,23 +37,37 @@ - public: - QmlComponentsPoolSingleton() - {} -- -- QmlComponentsPool self; -+ static QmlComponentsPool *instance(QQmlEngine *engine); -+private: -+ QHash<QQmlEngine*, QmlComponentsPool*> m_instances; - }; - - Q_GLOBAL_STATIC(QmlComponentsPoolSingleton, privateQmlComponentsPoolSelf) - - --QmlComponentsPool::QmlComponentsPool(QObject *parent) -- : QObject(parent) --{} -- --void QmlComponentsPool::initialize(QQmlEngine *engine) -+QmlComponentsPool *QmlComponentsPoolSingleton::instance(QQmlEngine *engine) - { -- if (!engine || m_instance) { -- return; -+ Q_ASSERT(engine); -+ auto componentPool = privateQmlComponentsPoolSelf->m_instances.value(engine); -+ -+ if (componentPool) { -+ return componentPool; - } - -+ componentPool = new QmlComponentsPool(engine); -+ -+ QObject::connect(componentPool, &QObject::destroyed, [engine]() { -+ if (privateQmlComponentsPoolSelf) { -+ privateQmlComponentsPoolSelf->m_instances.remove(engine); -+ } -+ }); -+ privateQmlComponentsPoolSelf->m_instances[engine] = componentPool; -+ return componentPool; -+} -+ -+QmlComponentsPool::QmlComponentsPool(QQmlEngine *engine) -+ : QObject(engine) -+{ - QQmlComponent *component = new QQmlComponent(engine, this); - - component->setData(QByteArrayLiteral("import QtQuick 2.7\n" -@@ -572,12 +586,12 @@ - QQuickItem *separatorItem = m_separators.value(item); - - if (!separatorItem) { -- separatorItem = qobject_cast<QQuickItem *>(privateQmlComponentsPoolSelf->self.m_separatorComponent->beginCreate(QQmlEngine::contextForObject(item))); -+ separatorItem = qobject_cast<QQuickItem *>(privateQmlComponentsPoolSelf->instance(qmlEngine(item))->m_separatorComponent->beginCreate(QQmlEngine::contextForObject(item))); - if (separatorItem) { - separatorItem->setParentItem(item); - separatorItem->setZ(9999); - separatorItem->setProperty("column", QVariant::fromValue(item)); -- privateQmlComponentsPoolSelf->self.m_separatorComponent->completeCreate(); -+ QmlComponentsPoolSingleton::instance(qmlEngine(item))->m_separatorComponent->completeCreate(); - m_separators[item] = separatorItem; - } - } -@@ -590,12 +604,12 @@ - QQuickItem *separatorItem = m_rightSeparators.value(item); - - if (!separatorItem) { -- separatorItem = qobject_cast<QQuickItem *>(privateQmlComponentsPoolSelf->self.m_rightSeparatorComponent->beginCreate(QQmlEngine::contextForObject(item))); -+ separatorItem = qobject_cast<QQuickItem *>(QmlComponentsPoolSingleton::instance(qmlEngine(item))->m_rightSeparatorComponent->beginCreate(QQmlEngine::contextForObject(item))); - if (separatorItem) { - separatorItem->setParentItem(item); - separatorItem->setZ(9999); - separatorItem->setProperty("column", QVariant::fromValue(item)); -- privateQmlComponentsPoolSelf->self.m_rightSeparatorComponent->completeCreate(); -+ QmlComponentsPoolSingleton::instance(qmlEngine(item))->m_rightSeparatorComponent->completeCreate(); - m_rightSeparators[item] = separatorItem; - } - } -@@ -759,7 +773,7 @@ - void ColumnView::setColumnWidth(qreal width) - { - // Always forget the internal binding when the user sets anything, even the same value -- disconnect(&privateQmlComponentsPoolSelf->self, &QmlComponentsPool::gridUnitChanged, this, nullptr); -+ disconnect(QmlComponentsPoolSingleton::instance(qmlEngine(this)), &QmlComponentsPool::gridUnitChanged, this, nullptr); - - if (m_contentItem->m_columnWidth == width) { - return; -@@ -902,7 +916,7 @@ - - void ColumnView::setScrollDuration(int duration) - { -- disconnect(&privateQmlComponentsPoolSelf->self, &QmlComponentsPool::longDurationChanged, this, nullptr); -+ disconnect(QmlComponentsPoolSingleton::instance(qmlEngine(this)), &QmlComponentsPool::longDurationChanged, this, nullptr); - - if (m_contentItem->m_slideAnim->duration() == duration) { - return; -@@ -1392,22 +1406,20 @@ - - void ColumnView::classBegin() - { -- privateQmlComponentsPoolSelf->self.initialize(qmlEngine(this)); -- - auto syncColumnWidth = [this]() { -- m_contentItem->m_columnWidth = privateQmlComponentsPoolSelf->self.m_units->property("gridUnit").toInt() * 20; -+ m_contentItem->m_columnWidth = privateQmlComponentsPoolSelf->instance(qmlEngine(this))->m_units->property("gridUnit").toInt() * 20; - emit columnWidthChanged(); - }; - -- connect(&privateQmlComponentsPoolSelf->self, &QmlComponentsPool::gridUnitChanged, this, syncColumnWidth); -+ connect(QmlComponentsPoolSingleton::instance(qmlEngine(this)), &QmlComponentsPool::gridUnitChanged, this, syncColumnWidth); - syncColumnWidth(); - - auto syncDuration = [this]() { -- m_contentItem->m_slideAnim->setDuration(privateQmlComponentsPoolSelf->self.m_units->property("longDuration").toInt()); -+ m_contentItem->m_slideAnim->setDuration(QmlComponentsPoolSingleton::instance(qmlEngine(this))->m_units->property("longDuration").toInt()); - emit scrollDurationChanged(); - }; - -- connect(&privateQmlComponentsPoolSelf->self, &QmlComponentsPool::longDurationChanged, this, syncDuration); -+ connect(QmlComponentsPoolSingleton::instance(qmlEngine(this)), &QmlComponentsPool::longDurationChanged, this, syncDuration); - syncDuration(); - - QQuickItem::classBegin(); -diff --git a/src/columnview_p.h b/src/columnview_p.h ---- a/src/columnview_p.h -+++ b/src/columnview_p.h -@@ -32,11 +32,9 @@ - Q_OBJECT - - public: -- QmlComponentsPool(QObject *parent = nullptr); -+ QmlComponentsPool(QQmlEngine *engine); - ~QmlComponentsPool(); - -- void initialize(QQmlEngine *engine); -- - QQmlComponent *m_separatorComponent = nullptr; - QQmlComponent *m_rightSeparatorComponent = nullptr; - QObject *m_units = nullptr; - - |