diff --git a/effects.cpp b/effects.cpp --- a/effects.cpp +++ b/effects.cpp @@ -250,6 +250,9 @@ connect(c, &AbstractClient::windowClosed, this, &EffectsHandlerImpl::slotWindowClosed); connect(c, static_cast(&AbstractClient::clientMaximizedStateChanged), this, &EffectsHandlerImpl::slotClientMaximized); + connect(c, &AbstractClient::fullScreenChanged, this, [this, c] { + emit windowFullScreenChanged(c->effectWindow(), c->isFullScreen()); + }); connect(c, &AbstractClient::clientStartUserMovedResized, this, [this](AbstractClient *c) { emit windowStartUserMovedResized(c->effectWindow()); diff --git a/effects/maximize/package/contents/code/maximize.js b/effects/maximize/package/contents/code/maximize.js --- a/effects/maximize/package/contents/code/maximize.js +++ b/effects/maximize/package/contents/code/maximize.js @@ -93,6 +93,7 @@ effect.configChanged.connect(maximizeEffect.loadConfig); effects.windowGeometryShapeChanged.connect(maximizeEffect.geometryChange); effects.windowMaximizedStateChanged.connect(maximizeEffect.maximizeChanged); + effects.windowFullScreenChanged.connect(maximizeEffect.maximizeChanged); } }; maximizeEffect.init(); diff --git a/libkwineffects/kwineffects.h b/libkwineffects/kwineffects.h --- a/libkwineffects/kwineffects.h +++ b/libkwineffects/kwineffects.h @@ -1442,6 +1442,13 @@ **/ void windowMaximizedStateChanged(KWin::EffectWindow *w, bool horizontal, bool vertical); /** + * Signal emitted when the full screen state of the window @p w changed. + * @param w The window whose full screen state changed + * @param fullScreen Whether the window is full screened + * @since 5.11 + **/ + void windowFullScreenChanged(KWin::EffectWindow *w, bool fullScreen); + /** * Signal emitted when the geometry or shape of a window changed. * This is caused if the window changes geometry without user interaction. * E.g. the decoration is changed. This is in opposite to windowUserMovedResized