mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-23 16:49:10 -07:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user