Drop adjust argument in Window::changeMaximize()

This commit is contained in:
Vlad Zahorodnii 2022-09-22 17:07:06 +03:00
parent 0e2d5bd232
commit b044a7d5ff
6 changed files with 32 additions and 42 deletions

View file

@ -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());
}

View file

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

View file

@ -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());
}

View file

@ -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();

View file

@ -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());

View file

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