kde-frameworks/kirigami: 5.64.1 version bump

See also: https://mail.kde.org/pipermail/release-team/2019-November/011662.html
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=414003
Package-Manager: Portage-2.3.79, Repoman-2.3.18
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
Andreas Sturmlechner
2019-11-20 16:44:16 +01:00
parent 819270bf35
commit 99679f6ff2
3 changed files with 1 additions and 181 deletions

View File

@@ -1,2 +1,2 @@
DIST kirigami2-5.60.0.tar.xz 142232 BLAKE2B 729729b4fae0fcd55a55178074a766b3fad7fb9edee2367ddd2ad61d25e8c082be2c6de221eede6bb5a5b0f6984e0d507cbe69fd1bb73dc6cf4d22746f0d6066 SHA512 e8426e518744172b9c08f198244314ed80bb529af79475c921ed87bb21e031f788e90906e117916b11c10256814016c95583fe835e08e48de4bccda000b5dda2
DIST kirigami2-5.64.0.tar.xz 154912 BLAKE2B b18ab8fa8c7e8ccaf026bf343f44b4fe12b93cb5ef8e6609e125f131501b6963c0212d30e46eb8509e2027a44eec0b571de87e7c6b82bd97b4bb7ea8f87b9ede SHA512 8fe5b8fb1bf743d27acace5a30960d1ba2cb11d908f1df29014eccb137f12329625346bbc74cb88c9451e80f4e83d8d0fae47d7cf23b4718b1f2199b19a5fe26
DIST kirigami2-5.64.1.tar.xz 155444 BLAKE2B 4dfe452a36e75ce44ccd78107751bce68d873d1f2837ec0c9010292ef70d6a9f5fa8b093e51dcfd28a72ad836c2b87068f9c9fbf1195b5466630f73459ffa9b3 SHA512 e54854c477e38aead0a69178c47bc3ac9874553af999b273454b4d5d0c9552b65d29775bb9c24ab556a022fd8b0f3b743fda3baa6d1dda61d7b1eceed26a4d53

View File

@@ -1,178 +0,0 @@
From 4a9820a6df15a55a7d36d343ce70a25ba7d56b79 Mon Sep 17 00:00:00 2001
From: David Edmundson <kde@davidedmundson.co.uk>
Date: Wed, 13 Nov 2019 14:23:19 +0000
Subject: Make QmlComponentsPool one instance per engine
Summary:
If we create 2 engines in an application the singleton is initialised to
the first engine. If that first engine disappears the internal m_unit is
dangling.
A good example of this is systemsettings in the icon view if we enter
two modules one after another. It's currently only kept alive because
the sidebar created the first reference.
BUG: 414003
Test Plan:
System settings in icon view
opened global theme
went back
open fonts theme
didn't crash
Subscribers: plasma-devel
Tags: #kirigami
Differential Revision: https://phabricator.kde.org/D25284
---
src/columnview.cpp | 54 +++++++++++++++++++++++++++++++++---------------------
src/columnview_p.h | 4 +---
2 files changed, 34 insertions(+), 24 deletions(-)
diff --git a/src/columnview.cpp b/src/columnview.cpp
index cab89f8..35d591e 100644
--- a/src/columnview.cpp
+++ b/src/columnview.cpp
@@ -37,23 +37,37 @@ class QmlComponentsPoolSingleton
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 *ContentItem::ensureSeparator(QQuickItem *item)
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 *ContentItem::ensureRightSeparator(QQuickItem *item)
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 @@ qreal ColumnView::columnWidth() const
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 @@ int ColumnView::scrollDuration() const
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::mouseUngrabEvent()
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
index ebf5543..886b96b 100644
--- a/src/columnview_p.h
+++ b/src/columnview_p.h
@@ -32,11 +32,9 @@ class QmlComponentsPool: public QObject
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;
--
cgit v1.1

View File

@@ -37,8 +37,6 @@ RDEPEND="${DEPEND}
# requires package to already be installed
RESTRICT+=" test"
PATCHES=( "${FILESDIR}/${P}-one-qmlcomponentspool-instance-per-engine.patch" )
src_configure() {
local mycmakeargs=(
-DBUILD_EXAMPLES=$(usex examples)