From c112a3676011412c6ed5d94aa1b69fe7cbd4ac6b Mon Sep 17 00:00:00 2001 From: Eduardo de Barros Lima Date: Wed, 5 Sep 2012 14:59:43 +0000 Subject: [PATCH] Fix unmaximize left/right We need to save original x and width values in both cases. SVN revision: 76200 --- src/bin/e_border.c | 18 +++++++++++++++--- src/bin/e_border.h | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 7ddc37f5d..5ed743e1b 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -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) { diff --git a/src/bin/e_border.h b/src/bin/e_border.h index e64324ba6..68ab5796c 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -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;