diff --git a/twin/geometry.cpp b/twin/geometry.cpp index 6c7f240af..1678cb80d 100644 --- a/twin/geometry.cpp +++ b/twin/geometry.cpp @@ -1915,12 +1915,12 @@ void Client::changeMaximize( bool vertical, bool horizontal, bool adjust ) TQRect clientArea = workspace()->clientArea( MaximizeArea, this ); // save sizes for restoring, if maximalizing - if( !adjust && !( y() == clientArea.top() && height() == clientArea.height())) + if( !activeTiled && !adjust && !( y() == clientArea.top() && height() == clientArea.height())) { geom_restore.setTop( y()); geom_restore.setHeight( height()); } - if( !adjust && !( x() == clientArea.left() && width() == clientArea.width())) + if( !activeTiled && !adjust && !( x() == clientArea.left() && width() == clientArea.width())) { geom_restore.setLeft( x()); geom_restore.setWidth( width()); @@ -2833,7 +2833,10 @@ TQRect Client::activeBorderMaximizeGeometry() void Client::tileToBorder(ActiveBorder border) { if (!isResizable()) return; activeTiled = true; + if (maximizeMode() == MaximizeRestore) + geom_restore = geometry(); setActiveBorderMode(ActiveTilingMode); + setActiveBorderPos(TQCursor().pos()); setActiveBorder(border); TQRect geo = activeBorderMaximizeGeometry(); if (geo.isValid() && !geo.isEmpty()) {