diff --git a/abstract_wayland_output.cpp b/abstract_wayland_output.cpp --- a/abstract_wayland_output.cpp +++ b/abstract_wayland_output.cpp @@ -18,6 +18,8 @@ along with this program. If not, see . *********************************************************************/ #include "abstract_wayland_output.h" + +#include "screens.h" #include "wayland_server.h" // KWayland @@ -167,6 +169,7 @@ { qCDebug(KWIN_CORE) << "Apply changes to the Wayland output."; bool emitModeChanged = false; + bool overallSizeCheckNeeded = false; // Enablement changes are handled by platform. if (changeSet->modeChanged()) { @@ -185,13 +188,19 @@ qCDebug(KWIN_CORE) << "Server setting position: " << changeSet->position(); setGlobalPos(changeSet->position()); // may just work already! + overallSizeCheckNeeded = true; } if (changeSet->scaleChanged()) { qCDebug(KWIN_CORE) << "Setting scale:" << changeSet->scale(); setScale(changeSet->scaleF()); emitModeChanged = true; } + overallSizeCheckNeeded |= emitModeChanged; + if (overallSizeCheckNeeded) { + emit screens()->changed(); + } + if (emitModeChanged) { emit modeChanged(); }