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: 122416icc-effect-5.14.5
parent
fa1368cb9e
commit
92aa2fb553
32
geometry.cpp
32
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
|
||||
|
|
Loading…
Reference in New Issue