author | Andrea Scarpino
<andrea@archlinux.org> 2015-01-28 17:58:18 UTC |
committer | Andrea Scarpino
<andrea@archlinux.org> 2015-01-28 17:58:18 UTC |
parent | 56a2d79b54273650c5eaab82f3f418bc5a6b7e23 |
PKGBUILD | +8 | -3 |
kdebug-341971.patch | +190 | -0 |
diff --git a/PKGBUILD b/PKGBUILD index 33dcef8..babcc82 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,7 +3,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' @@ -14,11 +14,16 @@ makedepends=('extra-cmake-modules' 'qt5-tools' 'kdoctools') 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() { diff --git a/kdebug-341971.patch b/kdebug-341971.patch new file mode 100644 index 0000000..d965fa4 --- /dev/null +++ b/kdebug-341971.patch @@ -0,0 +1,190 @@ +From: Marco Martin <notmart@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 ++ } + } + } + +