Hello community, here is the log from the commit of package kwin5 for openSUSE:Factory checked in at 2015-01-30 15:07:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwin5 (Old) and /work/SRC/openSUSE:Factory/.kwin5.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwin5" Changes: -------- --- /work/SRC/openSUSE:Factory/kwin5/kwin5.changes 2015-01-29 13:16:54.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kwin5.new/kwin5.changes 2015-01-30 15:08:00.000000000 +0100 @@ -1,0 +2,9 @@ +Thu Jan 29 20:07:07 UTC 2015 - [email protected] + +- Added patches from upstream: + 0001-Trigger-rebuilding-of-quads-after-creating-a-new-Dec.patch, + 0001-use-xembed-for-the-qml-view-of-window-decorations-mo.patch (kde#341971), + 0002-Avoid-deleting-an-engine-whilst-components-from-our-.patch and + 0003-Disable-libinput-integration-if-0.8-is-found.patch (kde#342893) + +------------------------------------------------------------------- New: ---- 0001-Trigger-rebuilding-of-quads-after-creating-a-new-Dec.patch 0001-use-xembed-for-the-qml-view-of-window-decorations-mo.patch 0002-Avoid-deleting-an-engine-whilst-components-from-our-.patch 0003-Disable-libinput-integration-if-0.8-is-found.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwin5.spec ++++++ --- /var/tmp/diff_new_pack.K1WziT/_old 2015-01-30 15:08:01.000000000 +0100 +++ /var/tmp/diff_new_pack.K1WziT/_new 2015-01-30 15:08:01.000000000 +0100 @@ -25,6 +25,14 @@ Url: http://www.kde.org Source: kwin-%{version}.tar.xz Source99: %{name}-rpmlintrc +# PATCH-FIX-UPSTREAM 0001-Trigger-rebuilding-of-quads-after-creating-a-new-Dec.patch +Patch0: 0001-Trigger-rebuilding-of-quads-after-creating-a-new-Dec.patch +# PATCH-FIX-UPSTREAM 0001-use-xembed-for-the-qml-view-of-window-decorations-mo.patch +Patch1: 0001-use-xembed-for-the-qml-view-of-window-decorations-mo.patch +# PATCH-FIX-UPSTREAM 0002-Avoid-deleting-an-engine-whilst-components-from-our-.patch +Patch2: 0002-Avoid-deleting-an-engine-whilst-components-from-our-.patch +# PATCH-FIX-UPSTREAM 0003-Disable-libinput-integration-if-0.8-is-found.patch +Patch3: 0003-Disable-libinput-integration-if-0.8-is-found.patch BuildRequires: extra-cmake-modules >= 0.0.11 BuildRequires: kactivities5-devel >= 5.6.0 BuildRequires: kcmutils-devel >= 5.6.0 @@ -105,6 +113,10 @@ %lang_package %prep %setup -q -n kwin-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %cmake_kf5 -d build -- -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5 ++++++ 0001-Trigger-rebuilding-of-quads-after-creating-a-new-Dec.patch ++++++ >From 7508cd49e032f3784255dcf2177b40f31cc042ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]> Date: Tue, 27 Jan 2015 11:01:22 +0100 Subject: [PATCH 1/1] Trigger rebuilding of quads after creating a new DecorationShadow If there were already a shadow, the quads are rebuild, but not if we created a new shadow. This is not a problem if the shadow exists before the quads are built for the first time (e.g. when managing the window), but if the shadow is created later on the quads are incorrect and the shadow doesn't get rendered at all. This happens for example with Aurorae based decoration themes, where the creation of the first shadow is delayed into the next event cycle. --- shadow.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shadow.cpp b/shadow.cpp index 4936a26c87c4d45a9efe0e2f9e038f63c1bbd556..9581290b102a818e61c9b6190995199bac6695ba 100644 --- a/shadow.cpp +++ b/shadow.cpp @@ -56,6 +56,11 @@ Shadow *Shadow::createShadow(Toplevel *toplevel) if (toplevel->effectWindow() && toplevel->effectWindow()->sceneWindow()) { toplevel->effectWindow()->sceneWindow()->updateShadow(shadow); } + if (shadow->hasDecorationShadow()) { + if (toplevel->effectWindow()) { + toplevel->effectWindow()->buildQuads(true); + } + } } return shadow; } -- 2.2.2 ++++++ 0001-use-xembed-for-the-qml-view-of-window-decorations-mo.patch ++++++ >From 63885cc5b3f2922441dac0af96ed001b737e78ea Mon Sep 17 00:00:00 2001 From: Marco Martin <[email protected]> Date: Wed, 28 Jan 2015 09:58:47 +0100 Subject: [PATCH 1/3] use xembed for the qml view of window decorations modul the only way to ensure the view won't randomly become black (probably QQuickwidget won't be fixed in qt anytime soon or ever in 5.x lifetime due to how architecturally is) basically systemsettings has no control of what gets loaded in, if one other kcm will call winId(), this one will break. BUG:341971 --- kcmkwin/kwindecoration/kcm.cpp | 40 ++++++++++++++++++++----------------- kcmkwin/kwindecoration/kcm.h | 2 ++ kcmkwin/kwindecoration/kcm.ui | 5 +---- kcmkwin/kwindecoration/qml/main.qml | 18 ++++++++++------- 4 files changed, 36 insertions(+), 29 deletions(-) diff --git a/kcmkwin/kwindecoration/kcm.cpp b/kcmkwin/kwindecoration/kcm.cpp index c6b83b6c7ed0163447cec17b3acd2342ddab3134..cde534d57f5e47f622af0591375487b02146263a 100644 --- a/kcmkwin/kwindecoration/kcm.cpp +++ b/kcmkwin/kwindecoration/kcm.cpp @@ -36,6 +36,7 @@ #include <QQmlContext> #include <QQmlEngine> #include <QQuickItem> +#include <QQuickView> #include <QSortFilterProxyModel> #include <QStandardPaths> #include <QVBoxLayout> @@ -77,21 +78,26 @@ ConfigurationModule::ConfigurationModule(QWidget *parent, const QVariantList &ar m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); connect(m_ui->filter, &QLineEdit::textChanged, m_proxyModel, &QSortFilterProxyModel::setFilterFixedString); + m_quickView = new QQuickView(0); KDeclarative::KDeclarative kdeclarative; - kdeclarative.setDeclarativeEngine(m_ui->view->engine()); + kdeclarative.setDeclarativeEngine(m_quickView->engine()); kdeclarative.setTranslationDomain(QStringLiteral(TRANSLATION_DOMAIN)); kdeclarative.setupBindings(); qmlRegisterType<QAbstractItemModel>(); - m_ui->view->rootContext()->setContextProperty(QStringLiteral("decorationsModel"), m_proxyModel); + QWidget *widget = QWidget::createWindowContainer(m_quickView, this); + QVBoxLayout* layout = new QVBoxLayout(m_ui->view); + layout->addWidget(widget); + + m_quickView->rootContext()->setContextProperty(QStringLiteral("decorationsModel"), m_proxyModel); updateColors(); - m_ui->view->rootContext()->setContextProperty("_borderSizesIndex", 3); // 3 is normal - m_ui->view->rootContext()->setContextProperty("configurationModule", this); - m_ui->view->rootContext()->setContextProperty("titleFont", QFontDatabase::systemFont(QFontDatabase::TitleFont)); - m_ui->view->setResizeMode(QQuickWidget::SizeRootObjectToView); - m_ui->view->setSource(QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kwin/kcm_kwindecoration/main.qml")))); - if (m_ui->view->status() == QQuickWidget::Ready) { - auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView"); + m_quickView->rootContext()->setContextProperty("_borderSizesIndex", 3); // 3 is normal + m_quickView->rootContext()->setContextProperty("configurationModule", this); + m_quickView->rootContext()->setContextProperty("titleFont", QFontDatabase::systemFont(QFontDatabase::TitleFont)); + m_quickView->setResizeMode(QQuickView::SizeRootObjectToView); + m_quickView->setSource(QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kwin/kcm_kwindecoration/main.qml")))); + if (m_quickView->status() == QQuickView::Ready) { + auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView"); if (listView) { connect(listView, SIGNAL(currentIndexChanged()), this, SLOT(changed())); } @@ -122,7 +128,7 @@ ConfigurationModule::ConfigurationModule(QWidget *parent, const QVariantList &ar ); connect(m_ui->borderSizesCombo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [this] (int index) { - auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView"); + auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView"); if (listView) { listView->setProperty("borderSizesIndex", index); } @@ -265,7 +271,7 @@ void ConfigurationModule::load() const QString plugin = config.readEntry("library", s_defaultPlugin); const QString theme = config.readEntry("theme", QString()); const QModelIndex index = m_proxyModel->mapFromSource(m_model->findDecoration(plugin, theme)); - if (auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView")) { + if (auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView")) { listView->setProperty("currentIndex", index.isValid() ? index.row() : -1); } m_ui->closeWindowsDoubleClick->setChecked(config.readEntry("CloseOnDoubleClickOnMenu", false)); @@ -305,7 +311,7 @@ void ConfigurationModule::save() KConfigGroup config = KSharedConfig::openConfig("kwinrc")->group(s_pluginName); config.writeEntry("CloseOnDoubleClickOnMenu", m_ui->closeWindowsDoubleClick->isChecked()); config.writeEntry("BorderSize", sizeToString(m_ui->borderSizesCombo->currentData().value<BorderSize>())); - if (auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView")) { + if (auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView")) { const int currentIndex = listView->property("currentIndex").toInt(); if (currentIndex != -1) { const QModelIndex index = m_proxyModel->index(currentIndex, 0); @@ -333,7 +339,7 @@ void ConfigurationModule::save() void ConfigurationModule::defaults() { - if (auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView")) { + if (auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView")) { const QModelIndex index = m_proxyModel->mapFromSource(m_model->findDecoration(s_defaultPlugin)); listView->setProperty("currentIndex", index.isValid() ? index.row() : -1); } @@ -346,7 +352,7 @@ void ConfigurationModule::showKNS(const QString &config) { QPointer<KNS3::DownloadDialog> downloadDialog = new KNS3::DownloadDialog(config, this); if (downloadDialog->exec() == QDialog::Accepted && !downloadDialog->changedEntries().isEmpty()) { - auto listView = m_ui->view->rootObject()->findChild<QQuickItem*>("listView"); + auto listView = m_quickView->rootObject()->findChild<QQuickItem*>("listView"); QString selectedPluginName; QString selectedThemeName; if (listView) { @@ -396,10 +402,8 @@ bool ConfigurationModule::eventFilter(QObject *watched, QEvent *e) void ConfigurationModule::updateColors() { -#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) - m_ui->view->setClearColor(m_ui->view->palette().color(QPalette::Window)); -#endif - m_ui->view->rootContext()->setContextProperty("highlightColor", QPalette().color(QPalette::Highlight)); + m_quickView->rootContext()->setContextProperty("backgroundColor", QPalette().color(QPalette::Window)); + m_quickView->rootContext()->setContextProperty("highlightColor", QPalette().color(QPalette::Highlight)); } } diff --git a/kcmkwin/kwindecoration/kcm.h b/kcmkwin/kwindecoration/kcm.h index 6133719dfbb48d147c1e275e978701f3ba3cc9e6..1d7ee73784f175afd509bde5c9423ed9515dd01d 100644 --- a/kcmkwin/kwindecoration/kcm.h +++ b/kcmkwin/kwindecoration/kcm.h @@ -25,6 +25,7 @@ #include <QAbstractItemModel> class QSortFilterProxyModel; +class QQuickView; namespace KDecoration2 { @@ -73,6 +74,7 @@ private: DecorationsModel *m_model; QSortFilterProxyModel *m_proxyModel; ConfigurationForm *m_ui; + QQuickView *m_quickView; Preview::ButtonsModel *m_leftButtons; Preview::ButtonsModel *m_rightButtons; Preview::ButtonsModel *m_availableButtons; diff --git a/kcmkwin/kwindecoration/kcm.ui b/kcmkwin/kwindecoration/kcm.ui index 3b4bca71fa59c0788b6ea4110bfdec9956e92e05..c26cd862ec435dc5bbf7760653a852e275fd6ffe 100644 --- a/kcmkwin/kwindecoration/kcm.ui +++ b/kcmkwin/kwindecoration/kcm.ui @@ -39,16 +39,13 @@ </layout> </item> <item> - <widget class="QQuickWidget" name="view"> + <widget class="QWidget" name="view"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="resizeMode"> - <enum>QQuickWidget::SizeRootObjectToView</enum> - </property> </widget> </item> <item> diff --git a/kcmkwin/kwindecoration/qml/main.qml b/kcmkwin/kwindecoration/qml/main.qml index ac8ca3fb19fe850976d0d85c9f5abc6ab8064be9..4d8bcf8c98f238676e9128da20f4969980bf143c 100644 --- a/kcmkwin/kwindecoration/qml/main.qml +++ b/kcmkwin/kwindecoration/qml/main.qml @@ -21,12 +21,16 @@ import QtQuick 2.1 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.1 -ColumnLayout { - Previews { - Layout.fillWidth: true - Layout.fillHeight: true - } - Buttons { - Layout.fillWidth: true +Rectangle { + color: backgroundColor + ColumnLayout { + anchors.fill: parent + Previews { + Layout.fillWidth: true + Layout.fillHeight: true + } + Buttons { + Layout.fillWidth: true + } } } -- 2.2.2 ++++++ 0002-Avoid-deleting-an-engine-whilst-components-from-our-.patch ++++++ >From b62bf432366228f4ab291cc2199670ba52742548 Mon Sep 17 00:00:00 2001 From: David Edmundson <[email protected]> Date: Wed, 28 Jan 2015 14:12:25 +0100 Subject: [PATCH 2/3] Avoid deleting an engine whilst components from our engine are still in use Otherwise it can lead to crashes Reviewed-by: Martin G --- kcmkwin/kwindecoration/declarative-plugin/previewitem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kcmkwin/kwindecoration/declarative-plugin/previewitem.cpp b/kcmkwin/kwindecoration/declarative-plugin/previewitem.cpp index ac981748d2636d696644d3902b864994645304b2..a77261a5422619554bf0c2e6d77562c5e89d996d 100644 --- a/kcmkwin/kwindecoration/declarative-plugin/previewitem.cpp +++ b/kcmkwin/kwindecoration/declarative-plugin/previewitem.cpp @@ -53,6 +53,7 @@ PreviewItem::PreviewItem(QQuickItem *parent) PreviewItem::~PreviewItem() { + m_decoration->deleteLater(); if (m_bridge){ m_bridge->unregisterPreviewItem(this); } @@ -74,7 +75,7 @@ void PreviewItem::createDecoration() if (m_bridge.isNull() || m_settings.isNull() || m_decoration) { return; } - m_decoration = m_bridge->createDecoration(this); + m_decoration = m_bridge->createDecoration(0); if (!m_decoration) { return; } -- 2.2.2 ++++++ 0003-Disable-libinput-integration-if-0.8-is-found.patch ++++++ >From a93a2ab1918630c6d571b5a24379c15a0458d1fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <[email protected]> Date: Wed, 28 Jan 2015 16:20:57 +0100 Subject: [PATCH 3/3] Disable libinput integration if >= 0.8 is found libinput 0.8 is incompatible causing the build to fail. As we are in dependency freeze the only option is to disable the build. BUG: 342893 FIXED-IN: 5.2.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 550ef5760a5bd8bf8f27449a8ebfc4f9ff94492c..8d9c59325d552d905f56e485b1cdacc133a948a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,7 +145,7 @@ set_package_properties(UDev PROPERTIES URL "http://www.freedesktop.org/software PURPOSE "Required for input handling on Wayland." ) set(HAVE_INPUT FALSE) -if (Libinput_FOUND AND UDEV_FOUND) +if (Libinput_FOUND AND UDEV_FOUND AND Libinput_VERSION VERSION_LESS 0.8) set(HAVE_INPUT TRUE) endif() -- 2.2.2 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
