diff --git a/kcmkwin/kwincompositing/compositing.cpp b/kcmkwin/kwincompositing/compositing.cpp index ace0eec24d..5c928a5113 100644 --- a/kcmkwin/kwincompositing/compositing.cpp +++ b/kcmkwin/kwincompositing/compositing.cpp @@ -89,6 +89,12 @@ bool Compositing::xrSclaleFilter() const return kwinConfig.readEntry("XRenderSmoothScale", false); } +bool Compositing::unredirectFullscreen() const +{ + KConfigGroup kwinConfig(KSharedConfig::openConfig("kwinrc"), "Compositing"); + return kwinConfig.readEntry("UnredirectFullscreen", false); +} + CompositingType::CompositingType(QObject *parent) : QAbstractItemModel(parent) { @@ -196,7 +202,8 @@ int CompositingType::currentOpenGLType() return currentIndex; } -void CompositingType::syncConfig(int openGLType, int animationSpeed, int windowThumbnail, int glSclaleFilter, bool xrSclaleFilter) +void CompositingType::syncConfig(int openGLType, int animationSpeed, int windowThumbnail, int glSclaleFilter, bool xrSclaleFilter, + bool unredirectFullscreen) { QString backend; bool glLegacy; @@ -234,6 +241,7 @@ void CompositingType::syncConfig(int openGLType, int animationSpeed, int windowT kwinConfig.writeEntry("HiddenPreviews", windowThumbnail + 4); kwinConfig.writeEntry("GLTextureFilter", glSclaleFilter); kwinConfig.writeEntry("XRenderSmoothScale", xrSclaleFilter); + kwinConfig.writeEntry("UnredirectFullscreen", unredirectFullscreen); kwinConfig.sync(); } diff --git a/kcmkwin/kwincompositing/compositing.h b/kcmkwin/kwincompositing/compositing.h index 385e0b7fd8..5fedf69386 100644 --- a/kcmkwin/kwincompositing/compositing.h +++ b/kcmkwin/kwincompositing/compositing.h @@ -36,6 +36,7 @@ class Compositing : public QObject Q_PROPERTY(int windowThumbnail READ windowThumbnail CONSTANT); Q_PROPERTY(int glSclaleFilter READ glSclaleFilter CONSTANT); Q_PROPERTY(bool xrSclaleFilter READ xrSclaleFilter CONSTANT); + Q_PROPERTY(bool unredirectFullscreen READ unredirectFullscreen CONSTANT); public: explicit Compositing(QObject *parent = 0); @@ -45,6 +46,7 @@ public: int windowThumbnail() const; int glSclaleFilter() const; bool xrSclaleFilter() const; + bool unredirectFullscreen() const; private: @@ -88,7 +90,8 @@ public: virtual QHash< int, QByteArray > roleNames() const override; Q_INVOKABLE int currentOpenGLType(); - Q_INVOKABLE void syncConfig(int openGLType, int animationSpeed, int windowThumbnail, int glSclaleFilter, bool xrSclaleFilter); + Q_INVOKABLE void syncConfig(int openGLType, int animationSpeed, int windowThumbnail, int glSclaleFilter, bool xrSclaleFilter, + bool unredirectFullscreen); private: void generateCompositing(); diff --git a/kcmkwin/kwincompositing/qml/EffectView.qml b/kcmkwin/kwincompositing/qml/EffectView.qml index 5102e8a88e..0ed1ce7726 100644 --- a/kcmkwin/kwincompositing/qml/EffectView.qml +++ b/kcmkwin/kwincompositing/qml/EffectView.qml @@ -56,7 +56,7 @@ Item { checked: false anchors.left: col.right anchors.top: parent.top - anchors.topMargin: col.height/2 + anchors.topMargin: col.height/4 onClicked: searchModel.enableWidnowManagement(windowManagement.checked) } @@ -157,6 +157,16 @@ Item { onCurrentIndexChanged: apply.enabled = true; } + CheckBox { + id: unredirectFullScreen + text: i18n("Suspend desktop effects for \nfull screen windows") + checked: compositing.unredirectFullscreen + anchors.left: col.right + anchors.top: xrScaleFilter.bottom + onClicked: apply.enabled = true + } + + ColumnLayout { id: col height: parent.height @@ -236,7 +246,7 @@ Item { onClicked: { searchModel.syncConfig(); apply.enabled = false; - compositingType.syncConfig(openGLType.currentIndex, animationSpeed.value, windowThumbnail.currentIndex, glScaleFilter.currentIndex, xrScaleFilter.currentIndex == 1); + compositingType.syncConfig(openGLType.currentIndex, animationSpeed.value, windowThumbnail.currentIndex, glScaleFilter.currentIndex, xrScaleFilter.currentIndex == 1, unredirectFullScreen.checked); } }