[arch-commits] Commit in kwin/trunk (PKGBUILD kdebug-341971.patch)
Andrea Scarpino
andrea at archlinux.org
Wed Jan 28 17:58:18 UTC 2015
Date: Wednesday, January 28, 2015 @ 18:58:18
Author: andrea
Revision: 230217
Fix window decoration sometimes totally black (FS#43607)
Added:
kwin/trunk/kdebug-341971.patch
Modified:
kwin/trunk/PKGBUILD
---------------------+
PKGBUILD | 11 ++
kdebug-341971.patch | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 198 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2015-01-28 17:57:34 UTC (rev 230216)
+++ PKGBUILD 2015-01-28 17:58:18 UTC (rev 230217)
@@ -4,7 +4,7 @@
pkgname=kwin
pkgver=5.2.0.1
_dir=5.2.0
-pkgrel=1
+pkgrel=2
pkgdesc='KDE Window manager'
arch=('i686' 'x86_64')
url='https://projects.kde.org/projects/kde/workspace/kwin'
@@ -15,11 +15,16 @@
groups=('plasma')
install=${pkgname}.install
conflicts=('kdebase-workspace')
-source=("http://download.kde.org/stable/plasma/${_dir}/${pkgname}-${pkgver}.tar.xz")
-md5sums=('47b6ce31b45450fa702098c9f3f5ac95')
+source=("http://download.kde.org/stable/plasma/${_dir}/${pkgname}-${pkgver}.tar.xz"
+ 'kdebug-341971.patch')
+md5sums=('47b6ce31b45450fa702098c9f3f5ac95'
+ '037db2eab5f9e07c74122f1a5fd4fe31')
prepare() {
mkdir build
+
+ cd ${pkgname}-${pkgver}
+ patch -p1 -i "${srcdir}"/kdebug-341971.patch
}
build() {
Added: kdebug-341971.patch
===================================================================
--- kdebug-341971.patch (rev 0)
+++ kdebug-341971.patch 2015-01-28 17:58:18 UTC (rev 230217)
@@ -0,0 +1,190 @@
+From: Marco Martin <notmart at gmail.com>
+Date: Wed, 28 Jan 2015 08:58:47 +0000
+Subject: use xembed for the qml view of window decorations modul
+X-Git-Url: http://quickgit.kde.org/?p=kwin.git&a=commitdiff&h=63885cc5b3f2922441dac0af96ed001b737e78ea
+---
+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
+---
+
+
+--- 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 @@
+ 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 @@
+ );
+ 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 @@
+ 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 @@
+ 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::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 @@
+ {
+ 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 @@
+
+ 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));
+ }
+
+ }
+
+--- 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 @@
+ DecorationsModel *m_model;
+ QSortFilterProxyModel *m_proxyModel;
+ ConfigurationForm *m_ui;
++ QQuickView *m_quickView;
+ Preview::ButtonsModel *m_leftButtons;
+ Preview::ButtonsModel *m_rightButtons;
+ Preview::ButtonsModel *m_availableButtons;
+
+--- a/kcmkwin/kwindecoration/kcm.ui
++++ b/kcmkwin/kwindecoration/kcm.ui
+@@ -39,15 +39,12 @@
+ </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>
+
+--- a/kcmkwin/kwindecoration/qml/main.qml
++++ b/kcmkwin/kwindecoration/qml/main.qml
+@@ -21,13 +21,17 @@
+ 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
++ }
+ }
+ }
+
+
More information about the arch-commits
mailing list