diff --git a/src/window.cpp b/src/window.cpp index f8f0b72a4d..8b12aa1900 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1590,8 +1590,7 @@ void Window::setMaximize(bool vertically, bool horizontally) const MaximizeMode oldMode = requestedMaximizeMode(); changeMaximize( oldMode & MaximizeHorizontal ? !horizontally : horizontally, - oldMode & MaximizeVertical ? !vertically : vertically, - false); + oldMode & MaximizeVertical ? !vertically : vertically); const MaximizeMode newMode = maximizeMode(); if (oldMode != newMode) { Q_EMIT clientMaximizedStateChanged(this, newMode); @@ -4337,15 +4336,12 @@ void Window::setGeometryRestore(const QRectF &rect) /** * Toggles the maximized state along specified dimensions @p horizontal and @p vertical. * - * If @p adjust is @c true, only frame geometry will be updated to match requestedMaximizeMode(). - * * Default implementation does nothing. */ -void Window::changeMaximize(bool horizontal, bool vertical, bool adjust) +void Window::changeMaximize(bool horizontal, bool vertical) { Q_UNUSED(horizontal) Q_UNUSED(vertical) - Q_UNUSED(adjust) qCWarning(KWIN_CORE, "%s doesn't support setting maximized state", metaObject()->className()); } diff --git a/src/window.h b/src/window.h index ab64fb1df8..a1b65a0268 100644 --- a/src/window.h +++ b/src/window.h @@ -1721,7 +1721,7 @@ protected: int borderRight() const; int borderTop() const; int borderBottom() const; - virtual void changeMaximize(bool horizontal, bool vertical, bool adjust); + virtual void changeMaximize(bool horizontal, bool vertical); void setGeometryRestore(const QRectF &rect); void blockGeometryUpdates(bool block); diff --git a/src/x11window.cpp b/src/x11window.cpp index 69e0bdcfa1..4888794314 100644 --- a/src/x11window.cpp +++ b/src/x11window.cpp @@ -4265,7 +4265,7 @@ void X11Window::updateServerGeometry() } static bool changeMaximizeRecursion = false; -void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust) +void X11Window::changeMaximize(bool horizontal, bool vertical) { if (changeMaximizeRecursion) { return; @@ -4286,15 +4286,12 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust) } MaximizeMode old_mode = max_mode; - // 'adjust == true' means to update the size only, e.g. after changing workspace size MaximizeMode mode = max_mode; - if (!adjust) { - if (vertical) { - mode = MaximizeMode(mode ^ MaximizeVertical); - } - if (horizontal) { - mode = MaximizeMode(mode ^ MaximizeHorizontal); - } + if (vertical) { + mode = MaximizeMode(mode ^ MaximizeVertical); + } + if (horizontal) { + mode = MaximizeMode(mode ^ MaximizeHorizontal); } // if the client insist on a fix aspect ratio, we check whether the maximizing will get us @@ -4320,20 +4317,20 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust) } mode = rules()->checkMaximize(mode); - if (max_mode != mode) { - Q_EMIT clientMaximizedStateAboutToChange(this, mode); - max_mode = mode; - } else if (!adjust) { + if (max_mode == mode) { return; } GeometryUpdatesBlocker blocker(this); + Q_EMIT clientMaximizedStateAboutToChange(this, mode); + max_mode = mode; + // maximing one way and unmaximizing the other way shouldn't happen, // so restore first and then maximize the other way if ((old_mode == MaximizeVertical && max_mode == MaximizeHorizontal) || (old_mode == MaximizeHorizontal && max_mode == MaximizeVertical)) { - changeMaximize(false, false, false); // restore + changeMaximize(false, false); // restore } // save sizes for restoring, if maximalizing @@ -4346,11 +4343,11 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust) if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) { QRectF savedGeometry = geometryRestore(); - if (!adjust && !(old_mode & MaximizeVertical)) { + if (!(old_mode & MaximizeVertical)) { savedGeometry.setTop(y()); savedGeometry.setHeight(sz.height()); } - if (!adjust && !(old_mode & MaximizeHorizontal)) { + if (!(old_mode & MaximizeHorizontal)) { savedGeometry.setLeft(x()); savedGeometry.setWidth(sz.width()); } diff --git a/src/x11window.h b/src/x11window.h index 07e35a0fc8..00889c9ff1 100644 --- a/src/x11window.h +++ b/src/x11window.h @@ -392,7 +392,7 @@ private: bool isManaged() const; ///< Returns false if this client is not yet managed void updateAllowedActions(bool force = false); QRect fullscreenMonitorsArea(NETFullscreenMonitors topology) const; - void changeMaximize(bool horizontal, bool vertical, bool adjust) override; + void changeMaximize(bool horizontal, bool vertical) override; void getWmNormalHints(); void getMotifHints(); void getIcons(); diff --git a/src/xdgshellwindow.cpp b/src/xdgshellwindow.cpp index 899c8ee3cb..0939ed1636 100644 --- a/src/xdgshellwindow.cpp +++ b/src/xdgshellwindow.cpp @@ -1642,7 +1642,7 @@ void XdgToplevelWindow::setFullScreen(bool set, bool user) * \todo Move to Window. */ static bool changeMaximizeRecursion = false; -void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adjust) +void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical) { if (changeMaximizeRecursion) { return; @@ -1657,25 +1657,22 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju const MaximizeMode oldMode = m_requestedMaximizeMode; const QRectF oldGeometry = moveResizeGeometry(); - // 'adjust == true' means to update the size only, e.g. after changing workspace size MaximizeMode mode = m_requestedMaximizeMode; - if (!adjust) { - if (vertical) { - mode = MaximizeMode(mode ^ MaximizeVertical); - } - if (horizontal) { - mode = MaximizeMode(mode ^ MaximizeHorizontal); - } + if (vertical) { + mode = MaximizeMode(mode ^ MaximizeVertical); + } + if (horizontal) { + mode = MaximizeMode(mode ^ MaximizeHorizontal); } mode = rules()->checkMaximize(mode); - if (m_requestedMaximizeMode != mode) { - Q_EMIT clientMaximizedStateAboutToChange(this, mode); - m_requestedMaximizeMode = mode; - } else if (!adjust) { + if (m_requestedMaximizeMode == mode) { return; } + Q_EMIT clientMaximizedStateAboutToChange(this, mode); + m_requestedMaximizeMode = mode; + // call into decoration update borders if (m_nextDecoration && !(options->borderlessMaximizedWindows() && m_requestedMaximizeMode == KWin::MaximizeFull)) { changeMaximizeRecursion = true; @@ -1698,11 +1695,11 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) { QRectF savedGeometry = geometryRestore(); - if (!adjust && !(oldMode & MaximizeVertical)) { + if (!(oldMode & MaximizeVertical)) { savedGeometry.setTop(oldGeometry.top()); savedGeometry.setBottom(oldGeometry.bottom()); } - if (!adjust && !(oldMode & MaximizeHorizontal)) { + if (!(oldMode & MaximizeHorizontal)) { savedGeometry.setLeft(oldGeometry.left()); savedGeometry.setRight(oldGeometry.right()); } @@ -1712,7 +1709,7 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju const MaximizeMode delta = m_requestedMaximizeMode ^ oldMode; QRectF geometry = oldGeometry; - if (adjust || (delta & MaximizeHorizontal)) { + if (delta & MaximizeHorizontal) { if (m_requestedMaximizeMode & MaximizeHorizontal) { // Stretch the window vertically to fit the size of the maximize area. geometry.setX(clientArea.x()); @@ -1730,7 +1727,7 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju } } - if (adjust || (delta & MaximizeVertical)) { + if (delta & MaximizeVertical) { if (m_requestedMaximizeMode & MaximizeVertical) { // Stretch the window horizontally to fit the size of the maximize area. geometry.setY(clientArea.y()); diff --git a/src/xdgshellwindow.h b/src/xdgshellwindow.h index 1e9a482bf3..ecb8ba8148 100644 --- a/src/xdgshellwindow.h +++ b/src/xdgshellwindow.h @@ -180,7 +180,7 @@ protected: bool doStartInteractiveMoveResize() override; void doFinishInteractiveMoveResize() override; bool acceptsFocus() const override; - void changeMaximize(bool horizontal, bool vertical, bool adjust) override; + void changeMaximize(bool horizontal, bool vertical) override; Layer layerForDock() const override; void doSetQuickTileMode() override;