Drop adjust argument in Window::changeMaximize()
This commit is contained in:
parent
0e2d5bd232
commit
b044a7d5ff
6 changed files with 32 additions and 42 deletions
|
@ -1590,8 +1590,7 @@ void Window::setMaximize(bool vertically, bool horizontally)
|
||||||
const MaximizeMode oldMode = requestedMaximizeMode();
|
const MaximizeMode oldMode = requestedMaximizeMode();
|
||||||
changeMaximize(
|
changeMaximize(
|
||||||
oldMode & MaximizeHorizontal ? !horizontally : horizontally,
|
oldMode & MaximizeHorizontal ? !horizontally : horizontally,
|
||||||
oldMode & MaximizeVertical ? !vertically : vertically,
|
oldMode & MaximizeVertical ? !vertically : vertically);
|
||||||
false);
|
|
||||||
const MaximizeMode newMode = maximizeMode();
|
const MaximizeMode newMode = maximizeMode();
|
||||||
if (oldMode != newMode) {
|
if (oldMode != newMode) {
|
||||||
Q_EMIT clientMaximizedStateChanged(this, 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.
|
* 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.
|
* 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(horizontal)
|
||||||
Q_UNUSED(vertical)
|
Q_UNUSED(vertical)
|
||||||
Q_UNUSED(adjust)
|
|
||||||
qCWarning(KWIN_CORE, "%s doesn't support setting maximized state", metaObject()->className());
|
qCWarning(KWIN_CORE, "%s doesn't support setting maximized state", metaObject()->className());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1721,7 +1721,7 @@ protected:
|
||||||
int borderRight() const;
|
int borderRight() const;
|
||||||
int borderTop() const;
|
int borderTop() const;
|
||||||
int borderBottom() 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 setGeometryRestore(const QRectF &rect);
|
||||||
|
|
||||||
void blockGeometryUpdates(bool block);
|
void blockGeometryUpdates(bool block);
|
||||||
|
|
|
@ -4265,7 +4265,7 @@ void X11Window::updateServerGeometry()
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool changeMaximizeRecursion = false;
|
static bool changeMaximizeRecursion = false;
|
||||||
void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust)
|
void X11Window::changeMaximize(bool horizontal, bool vertical)
|
||||||
{
|
{
|
||||||
if (changeMaximizeRecursion) {
|
if (changeMaximizeRecursion) {
|
||||||
return;
|
return;
|
||||||
|
@ -4286,16 +4286,13 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust)
|
||||||
}
|
}
|
||||||
|
|
||||||
MaximizeMode old_mode = max_mode;
|
MaximizeMode old_mode = max_mode;
|
||||||
// 'adjust == true' means to update the size only, e.g. after changing workspace size
|
|
||||||
MaximizeMode mode = max_mode;
|
MaximizeMode mode = max_mode;
|
||||||
if (!adjust) {
|
|
||||||
if (vertical) {
|
if (vertical) {
|
||||||
mode = MaximizeMode(mode ^ MaximizeVertical);
|
mode = MaximizeMode(mode ^ MaximizeVertical);
|
||||||
}
|
}
|
||||||
if (horizontal) {
|
if (horizontal) {
|
||||||
mode = MaximizeMode(mode ^ MaximizeHorizontal);
|
mode = MaximizeMode(mode ^ MaximizeHorizontal);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// if the client insist on a fix aspect ratio, we check whether the maximizing will get us
|
// if the client insist on a fix aspect ratio, we check whether the maximizing will get us
|
||||||
// out of screen bounds and take that as a "full maximization with aspect check" then
|
// out of screen bounds and take that as a "full maximization with aspect check" then
|
||||||
|
@ -4320,20 +4317,20 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust)
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = rules()->checkMaximize(mode);
|
mode = rules()->checkMaximize(mode);
|
||||||
if (max_mode != mode) {
|
if (max_mode == mode) {
|
||||||
Q_EMIT clientMaximizedStateAboutToChange(this, mode);
|
|
||||||
max_mode = mode;
|
|
||||||
} else if (!adjust) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GeometryUpdatesBlocker blocker(this);
|
GeometryUpdatesBlocker blocker(this);
|
||||||
|
|
||||||
|
Q_EMIT clientMaximizedStateAboutToChange(this, mode);
|
||||||
|
max_mode = mode;
|
||||||
|
|
||||||
// maximing one way and unmaximizing the other way shouldn't happen,
|
// maximing one way and unmaximizing the other way shouldn't happen,
|
||||||
// so restore first and then maximize the other way
|
// so restore first and then maximize the other way
|
||||||
if ((old_mode == MaximizeVertical && max_mode == MaximizeHorizontal)
|
if ((old_mode == MaximizeVertical && max_mode == MaximizeHorizontal)
|
||||||
|| (old_mode == MaximizeHorizontal && max_mode == MaximizeVertical)) {
|
|| (old_mode == MaximizeHorizontal && max_mode == MaximizeVertical)) {
|
||||||
changeMaximize(false, false, false); // restore
|
changeMaximize(false, false); // restore
|
||||||
}
|
}
|
||||||
|
|
||||||
// save sizes for restoring, if maximalizing
|
// save sizes for restoring, if maximalizing
|
||||||
|
@ -4346,11 +4343,11 @@ void X11Window::changeMaximize(bool horizontal, bool vertical, bool adjust)
|
||||||
|
|
||||||
if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) {
|
if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) {
|
||||||
QRectF savedGeometry = geometryRestore();
|
QRectF savedGeometry = geometryRestore();
|
||||||
if (!adjust && !(old_mode & MaximizeVertical)) {
|
if (!(old_mode & MaximizeVertical)) {
|
||||||
savedGeometry.setTop(y());
|
savedGeometry.setTop(y());
|
||||||
savedGeometry.setHeight(sz.height());
|
savedGeometry.setHeight(sz.height());
|
||||||
}
|
}
|
||||||
if (!adjust && !(old_mode & MaximizeHorizontal)) {
|
if (!(old_mode & MaximizeHorizontal)) {
|
||||||
savedGeometry.setLeft(x());
|
savedGeometry.setLeft(x());
|
||||||
savedGeometry.setWidth(sz.width());
|
savedGeometry.setWidth(sz.width());
|
||||||
}
|
}
|
||||||
|
|
|
@ -392,7 +392,7 @@ private:
|
||||||
bool isManaged() const; ///< Returns false if this client is not yet managed
|
bool isManaged() const; ///< Returns false if this client is not yet managed
|
||||||
void updateAllowedActions(bool force = false);
|
void updateAllowedActions(bool force = false);
|
||||||
QRect fullscreenMonitorsArea(NETFullscreenMonitors topology) const;
|
QRect fullscreenMonitorsArea(NETFullscreenMonitors topology) const;
|
||||||
void changeMaximize(bool horizontal, bool vertical, bool adjust) override;
|
void changeMaximize(bool horizontal, bool vertical) override;
|
||||||
void getWmNormalHints();
|
void getWmNormalHints();
|
||||||
void getMotifHints();
|
void getMotifHints();
|
||||||
void getIcons();
|
void getIcons();
|
||||||
|
|
|
@ -1642,7 +1642,7 @@ void XdgToplevelWindow::setFullScreen(bool set, bool user)
|
||||||
* \todo Move to Window.
|
* \todo Move to Window.
|
||||||
*/
|
*/
|
||||||
static bool changeMaximizeRecursion = false;
|
static bool changeMaximizeRecursion = false;
|
||||||
void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adjust)
|
void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical)
|
||||||
{
|
{
|
||||||
if (changeMaximizeRecursion) {
|
if (changeMaximizeRecursion) {
|
||||||
return;
|
return;
|
||||||
|
@ -1657,25 +1657,22 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju
|
||||||
const MaximizeMode oldMode = m_requestedMaximizeMode;
|
const MaximizeMode oldMode = m_requestedMaximizeMode;
|
||||||
const QRectF oldGeometry = moveResizeGeometry();
|
const QRectF oldGeometry = moveResizeGeometry();
|
||||||
|
|
||||||
// 'adjust == true' means to update the size only, e.g. after changing workspace size
|
|
||||||
MaximizeMode mode = m_requestedMaximizeMode;
|
MaximizeMode mode = m_requestedMaximizeMode;
|
||||||
if (!adjust) {
|
|
||||||
if (vertical) {
|
if (vertical) {
|
||||||
mode = MaximizeMode(mode ^ MaximizeVertical);
|
mode = MaximizeMode(mode ^ MaximizeVertical);
|
||||||
}
|
}
|
||||||
if (horizontal) {
|
if (horizontal) {
|
||||||
mode = MaximizeMode(mode ^ MaximizeHorizontal);
|
mode = MaximizeMode(mode ^ MaximizeHorizontal);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
mode = rules()->checkMaximize(mode);
|
mode = rules()->checkMaximize(mode);
|
||||||
if (m_requestedMaximizeMode != mode) {
|
if (m_requestedMaximizeMode == mode) {
|
||||||
Q_EMIT clientMaximizedStateAboutToChange(this, mode);
|
|
||||||
m_requestedMaximizeMode = mode;
|
|
||||||
} else if (!adjust) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Q_EMIT clientMaximizedStateAboutToChange(this, mode);
|
||||||
|
m_requestedMaximizeMode = mode;
|
||||||
|
|
||||||
// call into decoration update borders
|
// call into decoration update borders
|
||||||
if (m_nextDecoration && !(options->borderlessMaximizedWindows() && m_requestedMaximizeMode == KWin::MaximizeFull)) {
|
if (m_nextDecoration && !(options->borderlessMaximizedWindows() && m_requestedMaximizeMode == KWin::MaximizeFull)) {
|
||||||
changeMaximizeRecursion = true;
|
changeMaximizeRecursion = true;
|
||||||
|
@ -1698,11 +1695,11 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju
|
||||||
|
|
||||||
if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) {
|
if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) {
|
||||||
QRectF savedGeometry = geometryRestore();
|
QRectF savedGeometry = geometryRestore();
|
||||||
if (!adjust && !(oldMode & MaximizeVertical)) {
|
if (!(oldMode & MaximizeVertical)) {
|
||||||
savedGeometry.setTop(oldGeometry.top());
|
savedGeometry.setTop(oldGeometry.top());
|
||||||
savedGeometry.setBottom(oldGeometry.bottom());
|
savedGeometry.setBottom(oldGeometry.bottom());
|
||||||
}
|
}
|
||||||
if (!adjust && !(oldMode & MaximizeHorizontal)) {
|
if (!(oldMode & MaximizeHorizontal)) {
|
||||||
savedGeometry.setLeft(oldGeometry.left());
|
savedGeometry.setLeft(oldGeometry.left());
|
||||||
savedGeometry.setRight(oldGeometry.right());
|
savedGeometry.setRight(oldGeometry.right());
|
||||||
}
|
}
|
||||||
|
@ -1712,7 +1709,7 @@ void XdgToplevelWindow::changeMaximize(bool horizontal, bool vertical, bool adju
|
||||||
const MaximizeMode delta = m_requestedMaximizeMode ^ oldMode;
|
const MaximizeMode delta = m_requestedMaximizeMode ^ oldMode;
|
||||||
QRectF geometry = oldGeometry;
|
QRectF geometry = oldGeometry;
|
||||||
|
|
||||||
if (adjust || (delta & MaximizeHorizontal)) {
|
if (delta & MaximizeHorizontal) {
|
||||||
if (m_requestedMaximizeMode & MaximizeHorizontal) {
|
if (m_requestedMaximizeMode & MaximizeHorizontal) {
|
||||||
// Stretch the window vertically to fit the size of the maximize area.
|
// Stretch the window vertically to fit the size of the maximize area.
|
||||||
geometry.setX(clientArea.x());
|
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) {
|
if (m_requestedMaximizeMode & MaximizeVertical) {
|
||||||
// Stretch the window horizontally to fit the size of the maximize area.
|
// Stretch the window horizontally to fit the size of the maximize area.
|
||||||
geometry.setY(clientArea.y());
|
geometry.setY(clientArea.y());
|
||||||
|
|
|
@ -180,7 +180,7 @@ protected:
|
||||||
bool doStartInteractiveMoveResize() override;
|
bool doStartInteractiveMoveResize() override;
|
||||||
void doFinishInteractiveMoveResize() override;
|
void doFinishInteractiveMoveResize() override;
|
||||||
bool acceptsFocus() const 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;
|
Layer layerForDock() const override;
|
||||||
void doSetQuickTileMode() override;
|
void doSetQuickTileMode() override;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue