From f24676846822b40e7372036954774a15e167a786 Mon Sep 17 00:00:00 2001 From: Roman Gilg Date: Thu, 2 Jan 2020 14:55:03 +0000 Subject: [PATCH] Inform Screens about size change Summary: Changes to a Wayland output that could affect the overall geometry need to be communicated to the Screens class. Test Plan: Compiles, runtime tested with other patches for rotation. Reviewers: #kwin, zzag Reviewed By: #kwin, zzag Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D25900 --- abstract_wayland_output.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/abstract_wayland_output.cpp b/abstract_wayland_output.cpp index dbf551e31f..b4ce31ca10 100644 --- a/abstract_wayland_output.cpp +++ b/abstract_wayland_output.cpp @@ -18,6 +18,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . *********************************************************************/ #include "abstract_wayland_output.h" + +#include "screens.h" #include "wayland_server.h" // KWayland @@ -167,6 +169,7 @@ void AbstractWaylandOutput::applyChanges(const KWayland::Server::OutputChangeSet { 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,6 +188,7 @@ void AbstractWaylandOutput::applyChanges(const KWayland::Server::OutputChangeSet 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(); @@ -192,6 +196,11 @@ void AbstractWaylandOutput::applyChanges(const KWayland::Server::OutputChangeSet emitModeChanged = true; } + overallSizeCheckNeeded |= emitModeChanged; + if (overallSizeCheckNeeded) { + emit screens()->changed(); + } + if (emitModeChanged) { emit modeChanged(); }