Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_zone.c 


Log Message:


fix flip for xinerama

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -3 -r1.97 -r1.98
--- e_zone.c    7 Jun 2006 23:30:13 -0000       1.97
+++ e_zone.c    9 Aug 2006 04:38:32 -0000       1.98
@@ -269,30 +269,56 @@
 {
    E_OBJECT_CHECK(zone);
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
+   int one_row = 1;
+   int one_col = 1;
    
    if (!e_config->use_edge_flip) return;
-   if ((y == 0) && E_ZONE_FLIP_UP(zone))
+   /* if we have only 1 row we can flip up/down even if we have xinerama */
+   if (evas_list_count(zone->container->zones) > 1)
+     {
+       Evas_List *zones;
+       E_Zone *next_zone;
+       int cx, cy;
+       
+       zones = zone->container->zones;
+       next_zone = (E_Zone *) evas_list_data(zones);
+       cx = next_zone->x;
+       cy = next_zone->y;
+       zones = evas_list_next(zones);
+       while (zones)
+         {
+            next_zone = (E_Zone *)zones->data;
+            if (next_zone->x != cx) one_col = 0;
+            if (next_zone->y != cy) one_row = 0;
+            zones = zones->next;
+         }
+     }
+   if (evas_list_count(zone->container->manager->containers) > 1)
+     goto noflip;
+   if (!E_INSIDE(x, y, zone->x, zone->y, zone->w, zone->h))
+     goto noflip;
+   if ((one_row) && (y == 0) && E_ZONE_FLIP_UP(zone))
      {
        /* top */
        if (!zone->flip.timer)
          zone->flip.timer = ecore_timer_add(e_config->edge_flip_timeout, 
_e_zone_cb_timer, zone);
        zone->flip.direction = E_DIRECTION_UP;
      }
-   else if ((x == (zone->w - 1)) && E_ZONE_FLIP_RIGHT(zone))
+   else if ((one_col) && (x == (zone->w - 1)) && E_ZONE_FLIP_RIGHT(zone))
      {
        /* right */
        if (!zone->flip.timer)
          zone->flip.timer = ecore_timer_add(e_config->edge_flip_timeout, 
_e_zone_cb_timer, zone);
        zone->flip.direction = E_DIRECTION_RIGHT;
      }
-   else if ((y == (zone->h - 1)) && E_ZONE_FLIP_DOWN(zone))
+   else if ((one_row) && (y == (zone->h - 1)) && E_ZONE_FLIP_DOWN(zone))
      {
        /* bottom */
        if (!zone->flip.timer)
          zone->flip.timer = ecore_timer_add(e_config->edge_flip_timeout, 
_e_zone_cb_timer, zone);
        zone->flip.direction = E_DIRECTION_DOWN;
      }
-   else if ((x == 0) && E_ZONE_FLIP_LEFT(zone))
+   else if ((one_col) && (x == 0) && E_ZONE_FLIP_LEFT(zone))
      {
        /* left */
        if (!zone->flip.timer)
@@ -301,6 +327,7 @@
      }
    else
      {
+       noflip:
        /* in zone */
        if (zone->flip.timer)
          ecore_timer_del(zone->flip.timer);
@@ -935,7 +962,7 @@
       case E_DIRECTION_UP:
        if (E_ZONE_FLIP_UP(zone))
           {
-            e_zone_desk_flip_by(zone, 0, -1);
+             e_zone_desk_flip_by(zone, 0, -1);
              ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
              ev->curr.x = x;
              ev->curr.y = zone->h - 2;
@@ -1014,18 +1041,18 @@
             x = next_zone->x;
             y = next_zone->y;
             zones = evas_list_next(zones);
-            
             while (zones)
               {
-                 next_zone = (E_Zone *) evas_list_data(zones);
-
-                 if (next_zone->x != x)
-                   one_col = 0;
-                 if (next_zone->y != y)
-                   one_row = 0;
-
-                 zones = evas_list_next(zones);
+                 next_zone = (E_Zone *)zones->data;
+                 if (next_zone->x != x) one_col = 0;
+                 if (next_zone->y != y) one_row = 0;
+                 zones = zones->next;
               }
+         }
+       if (evas_list_count(zone->container->manager->containers) > 1)
+         {
+            one_col = 0;
+            one_row = 0;
          }
 
        if (one_col && E_ZONE_FLIP_LEFT(zone))



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to