From 8cd99a8c04bde45cdd7cfcda7045dae158905921 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 28 Jan 2015 18:32:26 +0000 Subject: [PATCH] extra/kwin to 5.2.0.1-2 --- extra/kwin/PKGBUILD | 5 +- extra/kwin/kdebug-341971.patch | 190 +++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 extra/kwin/kdebug-341971.patch diff --git a/extra/kwin/PKGBUILD b/extra/kwin/PKGBUILD index b0876359c..082e27b4b 100644 --- a/extra/kwin/PKGBUILD +++ b/extra/kwin/PKGBUILD @@ -10,7 +10,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' @@ -22,9 +22,11 @@ groups=('plasma-next') install=${pkgname}.install conflicts=('kdebase-workspace') source=("http://download.kde.org/stable/plasma/${_dir}/${pkgname}-${pkgver}.tar.xz" + 'kdebug-341971.patch' "rpi_fix_build.patch" "kwin_remove_eglonxbackend.patch") md5sums=('47b6ce31b45450fa702098c9f3f5ac95' + '037db2eab5f9e07c74122f1a5fd4fe31' '3e11a42013f03d55b4b730463bdd6fe0' '28a1e8bd701a8fd1421e6ec238b4c522') @@ -32,6 +34,7 @@ prepare() { mkdir build cd "${pkgname}-${pkgver}" + patch -p1 -i "${srcdir}"/kdebug-341971.patch # Raspberry Pi if [ "$CARCH" == 'armv6h' ]; then diff --git a/extra/kwin/kdebug-341971.patch b/extra/kwin/kdebug-341971.patch new file mode 100644 index 000000000..d965fa405 --- /dev/null +++ b/extra/kwin/kdebug-341971.patch @@ -0,0 +1,190 @@ +From: Marco Martin +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 + #include + #include ++#include + #include + #include + #include +@@ -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(); +- 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("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("listView"); + if (listView) { + connect(listView, SIGNAL(currentIndexChanged()), this, SLOT(changed())); + } +@@ -122,7 +128,7 @@ + ); + connect(m_ui->borderSizesCombo, static_cast(&QComboBox::currentIndexChanged), + this, [this] (int index) { +- auto listView = m_ui->view->rootObject()->findChild("listView"); ++ auto listView = m_quickView->rootObject()->findChild("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("listView")) { ++ if (auto listView = m_quickView->rootObject()->findChild("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())); +- if (auto listView = m_ui->view->rootObject()->findChild("listView")) { ++ if (auto listView = m_quickView->rootObject()->findChild("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("listView")) { ++ if (auto listView = m_quickView->rootObject()->findChild("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 downloadDialog = new KNS3::DownloadDialog(config, this); + if (downloadDialog->exec() == QDialog::Accepted && !downloadDialog->changedEntries().isEmpty()) { +- auto listView = m_ui->view->rootObject()->findChild("listView"); ++ auto listView = m_quickView->rootObject()->findChild("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 + + 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 @@ + + + +- ++ + + + 0 + 0 + +- +- +- QQuickWidget::SizeRootObjectToView + + + + +--- 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 ++ } + } + } + +