diff --git a/src/actions.c b/src/actions.c index 91686935..85412e87 100644 --- a/src/actions.c +++ b/src/actions.c @@ -499,6 +499,9 @@ static void find_Maximus_geometry(WWindow *wwin, WArea usableArea, int *new_x, i void wUnmaximizeWindow(WWindow * wwin) { int x, y, w, h; + WMRect old_geom_rect; + int old_head; + Bool same_head; if (!wwin->flags.maximized) return; @@ -508,8 +511,11 @@ void wUnmaximizeWindow(WWindow * wwin) wUnshadeWindow(wwin); } /* Use old coordinates if they are set, current values otherwise */ - x = wwin->old_geometry.x ? wwin->old_geometry.x : wwin->frame_x; - y = wwin->old_geometry.y ? wwin->old_geometry.y : wwin->frame_y; + old_geom_rect = wmkrect(wwin->old_geometry.x, wwin->old_geometry.y, wwin->old_geometry.width, wwin->old_geometry.height); + old_head = wGetHeadForRect(wwin->screen_ptr, old_geom_rect); + same_head = (wGetHeadForWindow(wwin) == old_head); + x = (wwin->old_geometry.x && same_head) ? wwin->old_geometry.x : wwin->frame_x; + y = (wwin->old_geometry.y && same_head) ? wwin->old_geometry.y : wwin->frame_y; w = wwin->old_geometry.width ? wwin->old_geometry.width : wwin->client.width; h = wwin->old_geometry.height ? wwin->old_geometry.height : wwin->client.height;