Fix unmaximize left/right
authorEduardo de Barros Lima <eblima@gmail.com>
Wed, 5 Sep 2012 14:59:43 +0000 (14:59 +0000)
committerEduardo de Barros Lima <eblima@gmail.com>
Wed, 5 Sep 2012 14:59:43 +0000 (14:59 +0000)
We need to save original x and width values in both cases.

SVN revision: 76200

src/bin/e_border.c
src/bin/e_border.h

index 7ddc37f..5ed743e 100644 (file)
@@ -2783,7 +2783,10 @@ e_border_maximize(E_Border  *bd,
      }
 
    bd->pre_res_change.valid = 0;
-   if (!(bd->maximized & E_MAXIMIZE_HORIZONTAL))
+   if (!(bd->maximized & E_MAXIMIZE_HORIZONTAL) ||
+        (bd->maximized & E_MAXIMIZE_LEFT) ||
+        (bd->maximized & E_MAXIMIZE_RIGHT))
+
      {
         /* Horizontal hasn't been set */
         bd->saved.x = bd->x - bd->zone->x;
@@ -2795,6 +2798,7 @@ e_border_maximize(E_Border  *bd,
         bd->saved.y = bd->y - bd->zone->y;
         bd->saved.h = bd->h;
      }
+
    bd->saved.zone = bd->zone->num;
    e_hints_window_size_set(bd);
 
@@ -2868,8 +2872,16 @@ e_border_unmaximize(E_Border  *bd,
                   y = bd->saved.y + bd->zone->y;
                   bd->saved.h = bd->saved.y = 0;
                   bd->maximized &= ~E_MAXIMIZE_VERTICAL;
-                  bd->maximized &= ~E_MAXIMIZE_LEFT;
-                  bd->maximized &= ~E_MAXIMIZE_RIGHT;
+
+                  if (max & E_MAXIMIZE_LEFT ||
+                      max & E_MAXIMIZE_RIGHT)
+                    {
+                       w = bd->saved.w;
+                       x = bd->saved.x + bd->zone->x;
+                       bd->saved.w = bd->saved.x = 0;
+                       bd->maximized &= ~E_MAXIMIZE_LEFT;
+                       bd->maximized &= ~E_MAXIMIZE_RIGHT;
+                    }
                }
              if (max & E_MAXIMIZE_HORIZONTAL)
                {
index e64324b..68ab579 100644 (file)
@@ -61,7 +61,7 @@ typedef enum _E_Maximize
    E_MAXIMIZE_VERTICAL = 0x00000010,
    E_MAXIMIZE_HORIZONTAL = 0x00000020,
    E_MAXIMIZE_BOTH = 0x00000030,
-   E_MAXIMIZE_LEFT = 0x00000060,
+   E_MAXIMIZE_LEFT = 0x00000050,
    E_MAXIMIZE_RIGHT = 0x00000090,
    E_MAXIMIZE_DIRECTION = 0x000000f0
 } E_Maximize;