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

Reply via email to