From 92aa2fb553184c708b8b696fd3ea4b58ec73ce7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Wed, 4 Feb 2015 00:50:17 +0100 Subject: [PATCH] save geom_restore before calling for border update otherwise the stored geometry would be correct for maximized borders, thus the unmaximized borders make the window to small on unmaximizing BUG: 343691 FIXED-IN: 5.2.1 REVIEW: 122416 --- geometry.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/geometry.cpp b/geometry.cpp index 198d12a30b..3850110e04 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2202,22 +2202,6 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust) changeMaximize(false, false, false); // restore } - // call into decoration update borders - if (m_decoration && m_decoration->client() && !(options->borderlessMaximizedWindows() && max_mode == KWin::MaximizeFull)) { - changeMaximizeRecursion = true; - const auto c = m_decoration->client().data(); - if ((max_mode & MaximizeVertical) != (old_mode & MaximizeVertical)) { - emit c->maximizedVerticallyChanged(max_mode & MaximizeVertical); - } - if ((max_mode & MaximizeHorizontal) != (old_mode & MaximizeHorizontal)) { - emit c->maximizedHorizontallyChanged(max_mode & MaximizeHorizontal); - } - if ((max_mode == MaximizeFull) != (old_mode == MaximizeFull)) { - emit c->maximizedChanged(max_mode & MaximizeFull); - } - changeMaximizeRecursion = false; - } - // save sizes for restoring, if maximalizing QSize sz; if (isShade()) @@ -2236,6 +2220,22 @@ void Client::changeMaximize(bool vertical, bool horizontal, bool adjust) } } + // call into decoration update borders + if (m_decoration && m_decoration->client() && !(options->borderlessMaximizedWindows() && max_mode == KWin::MaximizeFull)) { + changeMaximizeRecursion = true; + const auto c = m_decoration->client().data(); + if ((max_mode & MaximizeVertical) != (old_mode & MaximizeVertical)) { + emit c->maximizedVerticallyChanged(max_mode & MaximizeVertical); + } + if ((max_mode & MaximizeHorizontal) != (old_mode & MaximizeHorizontal)) { + emit c->maximizedHorizontallyChanged(max_mode & MaximizeHorizontal); + } + if ((max_mode == MaximizeFull) != (old_mode == MaximizeFull)) { + emit c->maximizedChanged(max_mode & MaximizeFull); + } + changeMaximizeRecursion = false; + } + if (options->borderlessMaximizedWindows()) { // triggers a maximize change. // The next setNoBorder interation will exit since there's no change but the first recursion pullutes the restore geometry