From 04200484050bbd5710e31d6a02eb0691a8c3b854 Mon Sep 17 00:00:00 2001 From: Cyril Rossi Date: Thu, 17 Dec 2020 13:21:23 +0000 Subject: [PATCH] KCM KWinCompositing implement KCModuleData to highlight default at module level Fix Rendering backend combobox that was not highlighted. Particular case due to OpenGLIsUnsafe kcfg entry which is an indicating flag and not a configurable setting. --- kcmkwin/kwincompositing/CMakeLists.txt | 1 + .../kwincompositing/kwincompositing.desktop | 1 - .../kwincompositing/kwincompositingdata.cpp | 32 +++++++++++++++++++ kcmkwin/kwincompositing/kwincompositingdata.h | 32 +++++++++++++++++++ kcmkwin/kwincompositing/main.cpp | 10 +++++- 5 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 kcmkwin/kwincompositing/kwincompositingdata.cpp create mode 100644 kcmkwin/kwincompositing/kwincompositingdata.h diff --git a/kcmkwin/kwincompositing/CMakeLists.txt b/kcmkwin/kwincompositing/CMakeLists.txt index a7018267c3..7278b2eb6f 100644 --- a/kcmkwin/kwincompositing/CMakeLists.txt +++ b/kcmkwin/kwincompositing/CMakeLists.txt @@ -10,6 +10,7 @@ remove_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_STRICT_ITERATORS -DQT_NO_CAST_FR set(kwincompositing_SRC main.cpp + kwincompositingdata.cpp ) kconfig_add_kcfg_files(kwincompositing_SRC kwincompositing_setting.kcfgc GENERATE_MOC) diff --git a/kcmkwin/kwincompositing/kwincompositing.desktop b/kcmkwin/kwincompositing/kwincompositing.desktop index 60c5d368cf..4ed1334164 100644 --- a/kcmkwin/kwincompositing/kwincompositing.desktop +++ b/kcmkwin/kwincompositing/kwincompositing.desktop @@ -5,7 +5,6 @@ X-KDE-ServiceTypes=KCModule X-DocPath=https://userbase.kde.org/Desktop_Effects_Performance#Advanced_Desktop_Effects_Settings X-KDE-Library=kwincompositing -X-KDE-PluginKeyword=compositing X-KDE-ParentApp=kcontrol X-KDE-System-Settings-Parent-Category=display diff --git a/kcmkwin/kwincompositing/kwincompositingdata.cpp b/kcmkwin/kwincompositing/kwincompositingdata.cpp new file mode 100644 index 0000000000..41b1ee1b85 --- /dev/null +++ b/kcmkwin/kwincompositing/kwincompositingdata.cpp @@ -0,0 +1,32 @@ +/* + KWin - the KDE window manager + This file is part of the KDE project. + + SPDX-FileCopyrightText: 2020 Cyril Rossi + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#include "kwincompositingdata.h" + +#include "kwincompositing_setting.h" + +KWinCompositingData::KWinCompositingData(QObject *parent, const QVariantList &args) + : KCModuleData(parent, args) + , m_settings(new KWinCompositingSetting(this)) + +{ +} + +bool KWinCompositingData::isDefaults() const +{ + bool defaults = true; + for (const auto &item : m_settings->items()) { + if (item->key() != QStringLiteral("OpenGLIsUnsafe")) { + defaults &= item->isDefault(); + } + } + return defaults; +} + +#include "kwincompositingdata.moc" diff --git a/kcmkwin/kwincompositing/kwincompositingdata.h b/kcmkwin/kwincompositing/kwincompositingdata.h new file mode 100644 index 0000000000..31342435af --- /dev/null +++ b/kcmkwin/kwincompositing/kwincompositingdata.h @@ -0,0 +1,32 @@ +/* + KWin - the KDE window manager + This file is part of the KDE project. + + SPDX-FileCopyrightText: 2020 Cyril Rossi + + SPDX-License-Identifier: GPL-2.0-or-later +*/ + +#ifndef KWINCOMPOSITINGDATA_H +#define KWINCOMPOSITINGDATA_H + +#include + +#include "kcmoduledata.h" + +class KWinCompositingSetting; + +class KWinCompositingData : public KCModuleData +{ + Q_OBJECT + +public: + explicit KWinCompositingData(QObject *parent = nullptr, const QVariantList &args = QVariantList()); + + bool isDefaults() const override; + +private: + KWinCompositingSetting *m_settings; +}; + +#endif // KWINCOMPOSITINGDATA_H diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp index 78103699bf..032b7a8ec4 100644 --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -23,6 +23,7 @@ #include #include "kwincompositing_setting.h" +#include "kwincompositingdata.h" static bool isRunningPlasma() { @@ -88,6 +89,8 @@ KWinCompositingKCM::KWinCompositingKCM(QWidget *parent, const QVariantList &args m_form.kcfg_Enabled->setVisible(!compositingRequired()); m_form.kcfg_WindowsBlockCompositing->setVisible(!compositingRequired()); + connect(this, &KWinCompositingKCM::defaultsIndicatorsVisibleChanged, this, &KWinCompositingKCM::updateUnmanagedItemStatus); + init(); } @@ -211,6 +214,10 @@ void KWinCompositingKCM::updateUnmanagedItemStatus() if (!inPlasma) { defaulted &= animationDuration == m_settings->defaultAnimationDurationFactorValue(); } + + m_form.backend->setProperty("_kde_highlight_neutral", defaultsIndicatorsVisible() && (backend != m_settings->defaultBackendValue() || glCore != m_settings->defaultGlCoreValue())); + m_form.backend->update(); + unmanagedWidgetDefaultState(defaulted); } @@ -288,7 +295,8 @@ void KWinCompositingKCM::save() } K_PLUGIN_FACTORY(KWinCompositingConfigFactory, - registerPlugin("compositing"); + registerPlugin(); + registerPlugin(); ) #include "main.moc"