diff --git a/xdgshellclient.cpp b/xdgshellclient.cpp --- a/xdgshellclient.cpp +++ b/xdgshellclient.cpp @@ -223,8 +223,12 @@ } if (needsPlacement) { - const QRect area = workspace()->clientArea(PlacementArea, Screens::self()->current(), desktop()); - placeIn(area); + if (isFullScreen()) { + setFrameGeometry(workspace()->clientArea(FullScreenArea, this)); + } else { + const QRect area = workspace()->clientArea(PlacementArea, Screens::self()->current(), desktop()); + placeIn(area); + } } m_requestGeometryBlockCounter--; @@ -1501,6 +1505,9 @@ return; } + if (!isMaximizable()) { + return; + } m_maximizeMode = maximizeMode; updateWindowRules(Rules::MaximizeHoriz | Rules::MaximizeVert | Rules::Position | Rules::Size);