From 41fbbfe2da8073e2ed7fa10761d6b23e9d7d1613 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 7 Dec 2012 08:05:17 +0000 Subject: [PATCH] when fullscreening a window from a maximized state, prevent overwriting of previously saved window geometry ticket #1940 SVN revision: 80416 --- src/bin/e_border.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 79a009e1b..cd05544ee 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -3007,6 +3007,7 @@ e_border_fullscreen(E_Border *bd, E_Fullscreen policy) { E_Event_Border_Fullscreen *ev; + int x, y, w, h; E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); @@ -3022,15 +3023,31 @@ e_border_fullscreen(E_Border *bd, { bd->pre_res_change.valid = 0; - bd->saved.x = bd->x - bd->zone->x; - bd->saved.y = bd->y - bd->zone->y; - bd->saved.w = bd->client.w; - bd->saved.h = bd->client.h; + if (bd->maximized) + { + x = bd->saved.x; + y = bd->saved.y; + w = bd->saved.w; + h = bd->saved.h; + } + else + { + bd->saved.x = bd->x - bd->zone->x; + bd->saved.y = bd->y - bd->zone->y; + bd->saved.w = bd->client.w; + bd->saved.h = bd->client.h; + } bd->saved.maximized = bd->maximized; bd->saved.zone = bd->zone->num; if (bd->maximized) - e_border_unmaximize(bd, E_MAXIMIZE_BOTH); + { + e_border_unmaximize(bd, E_MAXIMIZE_BOTH); + bd->saved.x = x; + bd->saved.y = y; + bd->saved.w = w; + bd->saved.h = h; + } e_hints_window_size_set(bd); bd->client_inset.l = 0;