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
icc-effect-5.14.5
Thomas Lübking 2015-02-04 00:50:17 +01:00
parent fa1368cb9e
commit 92aa2fb553
1 changed files with 16 additions and 16 deletions

View File

@ -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