diff --git a/abstract_client.h b/abstract_client.h --- a/abstract_client.h +++ b/abstract_client.h @@ -456,7 +456,16 @@ */ bool isCurrentTab() const; virtual QRect geometryRestore() const = 0; + /** + * The currently applied maximize mode + */ virtual MaximizeMode maximizeMode() const = 0; + /** + * The maximise mode requested by the server. + * For X this always matches maximizeMode, for wayland clients it + * is asyncronous + */ + virtual MaximizeMode requestedMaximizeMode() const; void maximize(MaximizeMode); void setMaximize(bool vertically, bool horizontally); virtual bool noBorder() const = 0; diff --git a/abstract_client.cpp b/abstract_client.cpp --- a/abstract_client.cpp +++ b/abstract_client.cpp @@ -204,6 +204,11 @@ return !tab_group || tab_group->current() == this; } +MaximizeMode AbstractClient::requestedMaximizeMode() const +{ + return maximizeMode(); +} + xcb_timestamp_t AbstractClient::userTime() const { return XCB_TIME_CURRENT_TIME; diff --git a/decorations/decoratedclient.cpp b/decorations/decoratedclient.cpp --- a/decorations/decoratedclient.cpp +++ b/decorations/decoratedclient.cpp @@ -271,7 +271,7 @@ bool DecoratedClientImpl::isMaximizedVertically() const { - return m_client->maximizeMode() & MaximizeVertical; + return m_client->requestedMaximizeMode() & MaximizeVertical; } bool DecoratedClientImpl::isMaximized() const @@ -281,7 +281,7 @@ bool DecoratedClientImpl::isMaximizedHorizontally() const { - return m_client->maximizeMode() & MaximizeHorizontal; + return m_client->requestedMaximizeMode() & MaximizeHorizontal; } Qt::Edges DecoratedClientImpl::adjacentScreenEdges() const diff --git a/shell_client.h b/shell_client.h --- a/shell_client.h +++ b/shell_client.h @@ -95,6 +95,8 @@ } void hideClient(bool hide) override; MaximizeMode maximizeMode() const override; + MaximizeMode requestedMaximizeMode() const override; + QRect geometryRestore() const override { return m_geomMaximizeRestore; } diff --git a/shell_client.cpp b/shell_client.cpp --- a/shell_client.cpp +++ b/shell_client.cpp @@ -914,6 +914,11 @@ return m_maximizeMode; } +MaximizeMode ShellClient::requestedMaximizeMode() const +{ + return m_requestedMaximizeMode; +} + bool ShellClient::noBorder() const { if (isInternal()) {