Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c Log Message: Fix unmaximize (bug #176) =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.621 retrieving revision 1.622 diff -u -3 -r1.621 -r1.622 --- e_border.c 11 Jan 2008 07:33:54 -0000 1.621 +++ e_border.c 13 Jan 2008 18:27:33 -0000 1.622 @@ -1947,17 +1947,13 @@ bd->pre_res_change.valid = 0; /* Get the resulting directions */ - dir = (bd->maximized & E_MAXIMIZE_DIRECTION); - dir &= ~max; + dir = (max & bd->maximized & E_MAXIMIZE_DIRECTION); bd->need_maximize = 0; signal = 1; switch (bd->maximized & E_MAXIMIZE_TYPE) { - case E_MAXIMIZE_NONE: - /* Ignore */ - break; case E_MAXIMIZE_FULLSCREEN: if (bd->bg_object) { @@ -1986,66 +1982,52 @@ case E_MAXIMIZE_SMART: /* Don't have to do anything special */ break; + case E_MAXIMIZE_NONE: case E_MAXIMIZE_EXPAND: - /* Ignore */ - break; case E_MAXIMIZE_FILL: - /* Ignore */ - break; case E_MAXIMIZE_VERTICAL: - /*Ignore*/ - break; case E_MAXIMIZE_HORIZONTAL: /*Ignore*/ break; } - if (dir & E_MAXIMIZE_HORIZONTAL) + if (dir) { - /* Remove vertical */ - int w,h; + int w, h, x, y; - signal = 0; - bd->maximized &= ~E_MAXIMIZE_VERTICAL; w = bd->w; - h = bd->saved.h; - e_border_resize_limit(bd, &w, &h); - e_border_resize_limit(bd, &w, &h); - e_border_move_resize(bd, bd->x, bd->saved.y + bd->zone->y, w, h); - bd->saved.y = bd->saved.h = 0; - e_hints_window_size_set(bd); - } - else if (dir & E_MAXIMIZE_VERTICAL) - { - /* Remove horizontal */ - int w, h; - - signal = 0; - bd->maximized &= ~E_MAXIMIZE_HORIZONTAL; - w = bd->saved.w; h = bd->h; + x = bd->x; + y = bd->y; + + if (dir & E_MAXIMIZE_VERTICAL) + { + /* Remove vertical */ + h = bd->saved.h; + y = bd->saved.y; + bd->saved.h = bd->saved.y = 0; + bd->maximized &= ~E_MAXIMIZE_VERTICAL; + } + if (dir & E_MAXIMIZE_HORIZONTAL) + { + /* Remove horizontal */ + w = bd->saved.w; + x = bd->saved.x; + bd->saved.w = bd->saved.x = 0; + bd->maximized &= ~E_MAXIMIZE_HORIZONTAL; + } + e_border_resize_limit(bd, &w, &h); - e_border_move_resize(bd, bd->saved.x + bd->zone->x, bd->y, w, h); - bd->saved.x = bd->saved.w = 0; - e_hints_window_size_set(bd); - } - else - { - int x, y, w, h; - /* Maybe some of the sizes has already been set to 0 */ - if (bd->saved.x) x = bd->saved.x + bd->zone->x; - else x = bd->x; - if (bd->saved.y) y = bd->saved.y + bd->zone->y; - else y = bd->y; - if (bd->saved.w) w = bd->saved.w; - else w = bd->w; - if (bd->saved.h) h = bd->saved.h; - else h = bd->h; - - bd->maximized = E_MAXIMIZE_NONE; - e_border_resize_limit(bd, &w, &h); - e_border_move_resize(bd, x, y, w, h); - bd->saved.x = bd->saved.y = bd->saved.w = bd->saved.h = 0; - e_hints_window_size_unset(bd); + e_border_move_resize(bd, bd->zone->x + x, bd->zone->y + y, w, h); + if (!(bd->maximized & E_MAXIMIZE_DIRECTION)) + { + bd->maximized = E_MAXIMIZE_NONE; + e_hints_window_size_unset(bd); + } + else + { + signal = 0; + e_hints_window_size_set(bd); + } } e_hints_window_maximized_set(bd, bd->maximized & E_MAXIMIZE_HORIZONTAL, bd->maximized & E_MAXIMIZE_VERTICAL); ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs