when fullscreening a window from a maximized state, prevent overwriting of previously...
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 7 Dec 2012 08:05:17 +0000 (08:05 +0000)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Fri, 7 Dec 2012 08:05:17 +0000 (08:05 +0000)
ticket #1940

SVN revision: 80416

src/bin/e_border.c

index 79a009e1b71bbd4882b9c3b14f95be26ae99aded..cd05544ee3af9c9ef3376b9fd34d0b7a6e5c14d1 100644 (file)
@@ -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;