On Monday 06 October 2014, Martin Gräßlin wrote: > On Monday 06 October 2014 14:04:16 Marco Martin wrote: > > Hi all, > > > > since i'm growing a bit tired about those black screens in kcms that use > > qml, i was thinking for the time being to switch to the newer (and > > supposedly better) QQuickWidget to the old (and hack-y xembed-y) > > QWidget::createWindowContainer > > > > will be slower, hackier, but i don't think we can really ship 5.1 with > > kcm modules randomly turing black > > if we can get it without other regressions I think that sounds valid. I > guess everybody would have used QQuickWidget if it had existed back when > we wrote the code.
the diff is very small: can someone try it to see if it solves the black widget for look and feel? (changes only that one, splash screen and lock screen should still be black) -- Marco Martin
diff --git a/kcms/lookandfeel/kcm.cpp b/kcms/lookandfeel/kcm.cpp index 0cf0d22..2b61412 100644 --- a/kcms/lookandfeel/kcm.cpp +++ b/kcms/lookandfeel/kcm.cpp @@ -31,6 +31,7 @@ #include <QStandardPaths> #include <QProcess> #include <QQuickWidget> +#include <QQuickView> #include <KGlobalSettings> #include <KIconLoader> @@ -93,16 +94,17 @@ KCMLookandFeel::KCMLookandFeel(QWidget* parent, const QVariantList& args) m_model->setItemRoleNames(roles); QVBoxLayout* layout = new QVBoxLayout(this); - m_quickWidget = new QQuickWidget(this); - m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); + m_quickView = new QQuickView(0); + QWidget *widget = QWidget::createWindowContainer(m_quickView, this); + m_quickView->setResizeMode(QQuickView::SizeRootObjectToView); Plasma::Package package = Plasma::PluginLoader::self()->loadPackage("Plasma/Generic"); package.setDefaultPackageRoot("plasma/kcms"); package.setPath("kcm_lookandfeel"); - m_quickWidget->rootContext()->setContextProperty("kcm", this); - m_quickWidget->setSource(QUrl::fromLocalFile(package.filePath("mainscript"))); - setMinimumHeight(m_quickWidget->initialSize().height()); + m_quickView->rootContext()->setContextProperty("kcm", this); + m_quickView->setSource(QUrl::fromLocalFile(package.filePath("mainscript"))); + setMinimumHeight(m_quickView->initialSize().height()); - layout->addWidget(m_quickWidget); + layout->addWidget(widget); } KCMLookandFeel::~KCMLookandFeel() diff --git a/kcms/lookandfeel/kcm.h b/kcms/lookandfeel/kcm.h index ca6d10f..b6b6ec9 100644 --- a/kcms/lookandfeel/kcm.h +++ b/kcms/lookandfeel/kcm.h @@ -28,7 +28,7 @@ #include <Plasma/Package> -class QQuickWidget; +class QQuickView; class QStandardItemModel; class KCMLookandFeel : public KCModule @@ -100,7 +100,7 @@ Q_SIGNALS: private: QDir cursorThemeDir(const QString &theme, const int depth); const QStringList cursorSearchPaths(); - QQuickWidget *m_quickWidget; + QQuickView *m_quickView; QStandardItemModel *m_model; Plasma::Package m_package; QString m_selectedPlugin;
_______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel