Enlightenment CVS committal

Author  : sebastid
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/pager


Modified Files:
        e_mod_main.c e_mod_main.h 


Log Message:
Make the pager handle events. Less event handlers and easier to handle
more faces pr. zone.

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -3 -r1.115 -r1.116
--- e_mod_main.c        6 Sep 2005 08:04:19 -0000       1.115
+++ e_mod_main.c        7 Sep 2005 04:47:14 -0000       1.116
@@ -15,7 +15,6 @@
 static void        _pager_config_menu_new(Pager *pager);
 
 static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone, Evas *evas);
-static void        _pager_face_events_init(Pager_Face *face);
 static void        _pager_face_free(Pager_Face *face);
 static void        _pager_face_menu_new(Pager_Face *face);
 static void        _pager_face_enable(Pager_Face *face);
@@ -36,23 +35,24 @@
 static void        _pager_face_desk_select(Pager_Desk *pd);
 static void        _pager_popup_free(Pager_Popup *pp);
 
+static int         _pager_cb_event_border_resize(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_move(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_add(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_remove(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_iconify(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_uniconify(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_stick(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_unstick(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_desk_set(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_raise(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_lower(void *data, int type, void 
*event);
+static int         _pager_cb_event_border_icon_change(void *data, int type, 
void *event);
+static int         _pager_cb_event_zone_desk_count_set(void *data, int type, 
void *event);
+static int         _pager_cb_event_desk_show(void *data, int type, void 
*event);
+static int         _pager_cb_event_desk_name_change(void *data, int type, void 
*event);
+static int         _pager_cb_event_container_resize(void *data, int type, void 
*event);
+
 static void        _pager_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, 
E_Gadman_Change change);
-static int         _pager_face_cb_event_border_resize(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_move(void *data, int type, void 
*event);
-static int         _pager_face_cb_event_border_add(void *data, int type, void 
*event);
-static int         _pager_face_cb_event_border_remove(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_iconify(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_uniconify(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_stick(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_unstick(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_desk_set(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_raise(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_lower(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_border_icon_change(void *data, int 
type, void *event);
-static int         _pager_face_cb_event_zone_desk_count_set(void *data, int 
type, void *event);
-static int         _pager_face_cb_event_desk_show(void *data, int type, void 
*event);
-static int         _pager_face_cb_event_desk_name_change(void *data, int type, 
void *event);
-static int         _pager_face_cb_event_container_resize(void *data, int type, 
void *event);
 static void        _pager_face_cb_menu_enabled(void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void        _pager_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item 
*mi);
 
@@ -239,7 +239,6 @@
                  if (face)
                    {
                       pager->faces = evas_list_append(pager->faces, face);
-                      _pager_face_events_init(face);
 
                       /* Config */
                       if (!cl)
@@ -271,6 +270,56 @@
               }
          }
      }
+
+   /* set up event handles for when windows change and desktops */
+   pager->ev_handler_border_resize =
+      ecore_event_handler_add(E_EVENT_BORDER_RESIZE,
+                             _pager_cb_event_border_resize, pager);
+   pager->ev_handler_border_move =
+      ecore_event_handler_add(E_EVENT_BORDER_MOVE,
+                             _pager_cb_event_border_move, pager);
+   pager->ev_handler_border_add =
+      ecore_event_handler_add(E_EVENT_BORDER_ADD,
+                             _pager_cb_event_border_add, pager);
+   pager->ev_handler_border_remove =
+      ecore_event_handler_add(E_EVENT_BORDER_REMOVE,
+                             _pager_cb_event_border_remove, pager);
+   pager->ev_handler_border_iconify =
+      ecore_event_handler_add(E_EVENT_BORDER_ICONIFY,
+                             _pager_cb_event_border_iconify, pager);
+   pager->ev_handler_border_uniconify =
+      ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY,
+                             _pager_cb_event_border_uniconify, pager);
+   pager->ev_handler_border_stick =
+      ecore_event_handler_add(E_EVENT_BORDER_STICK,
+                             _pager_cb_event_border_stick, pager);
+   pager->ev_handler_border_unstick =
+      ecore_event_handler_add(E_EVENT_BORDER_UNSTICK,
+                             _pager_cb_event_border_unstick, pager);
+   pager->ev_handler_border_desk_set =
+      ecore_event_handler_add(E_EVENT_BORDER_DESK_SET,
+                             _pager_cb_event_border_desk_set, pager);
+   pager->ev_handler_border_raise =
+      ecore_event_handler_add(E_EVENT_BORDER_RAISE,
+                             _pager_cb_event_border_raise, pager);
+   pager->ev_handler_border_lower =
+      ecore_event_handler_add(E_EVENT_BORDER_LOWER,
+                             _pager_cb_event_border_lower, pager);
+   pager->ev_handler_border_icon_change =
+      ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE,
+                             _pager_cb_event_border_icon_change, pager);
+   pager->ev_handler_zone_desk_count_set =
+      ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
+                             _pager_cb_event_zone_desk_count_set, pager);
+   pager->ev_handler_desk_show =
+      ecore_event_handler_add(E_EVENT_DESK_SHOW,
+                             _pager_cb_event_desk_show, pager);
+   pager->ev_handler_desk_name_change =
+      ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE,
+                             _pager_cb_event_desk_name_change, pager);
+   pager->ev_handler_container_resize =
+      ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE,
+                             _pager_cb_event_container_resize, pager);
    return pager;
 }
 
@@ -293,6 +342,39 @@
    e_object_del(E_OBJECT(pager->config_menu_deskname));
    e_object_del(E_OBJECT(pager->config_menu_speed));
 
+   if (pager->ev_handler_border_resize)
+     ecore_event_handler_del(pager->ev_handler_border_resize);
+   if (pager->ev_handler_border_move)
+     ecore_event_handler_del(pager->ev_handler_border_move);
+   if (pager->ev_handler_border_add)
+     ecore_event_handler_del(pager->ev_handler_border_add);
+   if (pager->ev_handler_border_remove)
+     ecore_event_handler_del(pager->ev_handler_border_remove);
+   if (pager->ev_handler_border_iconify)
+     ecore_event_handler_del(pager->ev_handler_border_iconify);
+   if (pager->ev_handler_border_uniconify)
+     ecore_event_handler_del(pager->ev_handler_border_uniconify);
+   if (pager->ev_handler_border_stick)
+     ecore_event_handler_del(pager->ev_handler_border_stick);
+   if (pager->ev_handler_border_unstick)
+     ecore_event_handler_del(pager->ev_handler_border_unstick);
+   if (pager->ev_handler_border_desk_set)
+     ecore_event_handler_del(pager->ev_handler_border_desk_set);
+   if (pager->ev_handler_border_raise)
+     ecore_event_handler_del(pager->ev_handler_border_raise);
+   if (pager->ev_handler_border_lower)
+     ecore_event_handler_del(pager->ev_handler_border_lower);
+   if (pager->ev_handler_border_icon_change)
+     ecore_event_handler_del(pager->ev_handler_border_icon_change);
+   if (pager->ev_handler_zone_desk_count_set)
+     ecore_event_handler_del(pager->ev_handler_zone_desk_count_set);
+   if (pager->ev_handler_desk_show)
+     ecore_event_handler_del(pager->ev_handler_desk_show);
+   if (pager->ev_handler_desk_name_change)
+     ecore_event_handler_del(pager->ev_handler_desk_name_change);
+   if (pager->ev_handler_container_resize)
+     ecore_event_handler_del(pager->ev_handler_container_resize);
+
    evas_list_free(pager->conf->faces);
    free(pager->conf);
    free(pager);
@@ -475,60 +557,6 @@
    return face;
 }
 
-static void
-_pager_face_events_init(Pager_Face *face)
-{
-   /* set up event handles for when windows change and desktops */
-   face->ev_handler_border_resize =
-      ecore_event_handler_add(E_EVENT_BORDER_RESIZE,
-                             _pager_face_cb_event_border_resize, face);
-   face->ev_handler_border_move =
-      ecore_event_handler_add(E_EVENT_BORDER_MOVE,
-                             _pager_face_cb_event_border_move, face);
-   face->ev_handler_border_add =
-      ecore_event_handler_add(E_EVENT_BORDER_ADD,
-                             _pager_face_cb_event_border_add, face);
-   face->ev_handler_border_remove =
-      ecore_event_handler_add(E_EVENT_BORDER_REMOVE,
-                             _pager_face_cb_event_border_remove, face);
-   face->ev_handler_border_iconify =
-      ecore_event_handler_add(E_EVENT_BORDER_ICONIFY,
-                             _pager_face_cb_event_border_iconify, face);
-   face->ev_handler_border_uniconify =
-      ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY,
-                             _pager_face_cb_event_border_uniconify, face);
-   face->ev_handler_border_stick =
-      ecore_event_handler_add(E_EVENT_BORDER_STICK,
-                             _pager_face_cb_event_border_stick, face);
-   face->ev_handler_border_unstick =
-      ecore_event_handler_add(E_EVENT_BORDER_UNSTICK,
-                             _pager_face_cb_event_border_unstick, face);
-   face->ev_handler_border_desk_set =
-      ecore_event_handler_add(E_EVENT_BORDER_DESK_SET,
-                             _pager_face_cb_event_border_desk_set, face);
-   face->ev_handler_border_raise =
-      ecore_event_handler_add(E_EVENT_BORDER_RAISE,
-                             _pager_face_cb_event_border_raise, face);
-   face->ev_handler_border_lower =
-      ecore_event_handler_add(E_EVENT_BORDER_LOWER,
-                             _pager_face_cb_event_border_lower, face);
-   face->ev_handler_border_icon_change =
-      ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE,
-                             _pager_face_cb_event_border_icon_change, face);
-   face->ev_handler_zone_desk_count_set =
-      ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
-                             _pager_face_cb_event_zone_desk_count_set, face);
-   face->ev_handler_desk_show =
-      ecore_event_handler_add(E_EVENT_DESK_SHOW,
-                             _pager_face_cb_event_desk_show, face);
-   face->ev_handler_desk_name_change =
-      ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE,
-                             _pager_face_cb_event_desk_name_change, face);
-   face->ev_handler_container_resize =
-      ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE,
-                             _pager_face_cb_event_container_resize, face);
-}
-
 void
 _pager_face_free(Pager_Face *face)
 {
@@ -540,38 +568,6 @@
    e_drop_handler_del(face->drop_handler);
 
    _pager_face_zone_unset(face);
-   if (face->ev_handler_border_resize)
-     ecore_event_handler_del(face->ev_handler_border_resize);
-   if (face->ev_handler_border_move)
-     ecore_event_handler_del(face->ev_handler_border_move);
-   if (face->ev_handler_border_add)
-     ecore_event_handler_del(face->ev_handler_border_add);
-   if (face->ev_handler_border_remove)
-     ecore_event_handler_del(face->ev_handler_border_remove);
-   if (face->ev_handler_border_iconify)
-     ecore_event_handler_del(face->ev_handler_border_iconify);
-   if (face->ev_handler_border_uniconify)
-     ecore_event_handler_del(face->ev_handler_border_uniconify);
-   if (face->ev_handler_border_stick)
-     ecore_event_handler_del(face->ev_handler_border_stick);
-   if (face->ev_handler_border_unstick)
-     ecore_event_handler_del(face->ev_handler_border_unstick);
-   if (face->ev_handler_border_desk_set)
-     ecore_event_handler_del(face->ev_handler_border_desk_set);
-   if (face->ev_handler_border_raise)
-     ecore_event_handler_del(face->ev_handler_border_raise);
-   if (face->ev_handler_border_lower)
-     ecore_event_handler_del(face->ev_handler_border_lower);
-   if (face->ev_handler_border_icon_change)
-     ecore_event_handler_del(face->ev_handler_border_icon_change);
-   if (face->ev_handler_zone_desk_count_set)
-     ecore_event_handler_del(face->ev_handler_zone_desk_count_set);
-   if (face->ev_handler_desk_show)
-     ecore_event_handler_del(face->ev_handler_desk_show);
-   if (face->ev_handler_desk_name_change)
-     ecore_event_handler_del(face->ev_handler_desk_name_change);
-   if (face->ev_handler_container_resize)
-     ecore_event_handler_del(face->ev_handler_container_resize);
 
    if (face->current_popup)
      _pager_popup_free(face->current_popup);
@@ -682,9 +678,6 @@
               }
          }
      }
-//   e_gadman_client_aspect_set(face->gmc, 
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h),
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h));
 }
 
 static void
@@ -750,7 +743,7 @@
      {
        Pager_Win   *pw;
        
-       if ((bd->new_client) || (bd->desk != desk)) continue;
+       if ((bd->new_client) || (bd->desk != desk) || (!bd->sticky)) continue;
        pw = _pager_window_new(pd, bd);
        if (pw)
          pd->wins = evas_list_append(pd->wins, pw);
@@ -789,7 +782,6 @@
 
    pw->border = border;
    e_object_ref(E_OBJECT(border));
-//   e_object_breadcrumb_add(E_OBJECT(border), "pager_module");
    
    visible = !border->iconic;
    pw->desk = pd;
@@ -818,7 +810,6 @@
 {
    if (pw->window_object) evas_object_del(pw->window_object);
    if (pw->icon_object) evas_object_del(pw->icon_object);
-//   e_object_breadcrumb_del(E_OBJECT(pw->border), "pager_module");
    e_object_unref(E_OBJECT(pw->border));
    free(pw);
 }
@@ -952,202 +943,249 @@
 }
 
 static int
-_pager_face_cb_event_border_resize(void *data, int type, void *event)
+_pager_cb_event_border_resize(void *data, int type, void *event)
 {
    E_Event_Border_Resize *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
-         _pager_window_move(face, pw);
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
+         {
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              _pager_window_move(face, pw);
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_move(void *data, int type, void *event)
+_pager_cb_event_border_move(void *data, int type, void *event)
 {
    E_Event_Border_Move   *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
-         _pager_window_move(face, pw);
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
+         {
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              _pager_window_move(face, pw);
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_add(void *data, int type, void *event)
+_pager_cb_event_border_add(void *data, int type, void *event)
 {
-   Pager_Face         *face;
-   Pager_Desk         *pd;
    E_Event_Border_Add *ev;
+   Pager              *pager;
+   Evas_List          *l;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   if (_pager_face_border_find(face, ev->border))
+   for (l = pager->faces; l; l = l->next)
      {
-       return 1;
-     }
+       Pager_Face *face;
+       Pager_Desk *pd;
 
-   pd = _pager_face_desk_find(face, ev->border->desk);
-   if (pd)
-     {
-       Pager_Win          *pw;
+       face = l->data;
+       if ((face->zone != ev->border->zone) ||
+           (_pager_face_border_find(face, ev->border)))
+         continue;
 
-       pw = _pager_window_new(pd, ev->border);
-       if (pw)
-         pd->wins = evas_list_append(pd->wins, pw);
+       pd = _pager_face_desk_find(face, ev->border->desk);
+       if (pd)
+         {
+            Pager_Win *pw;
+
+            pw = _pager_window_new(pd, ev->border);
+            if (pw)
+              pd->wins = evas_list_append(pd->wins, pw);
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_remove(void *data, int type, void *event)
+_pager_cb_event_border_remove(void *data, int type, void *event)
 {
    E_Event_Border_Remove *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            pd->wins = evas_list_remove(pd->wins, pw);
-            _pager_window_free(pw);
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              {
+                 pd->wins = evas_list_remove(pd->wins, pw);
+                 _pager_window_free(pw);
+              }
          }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_iconify(void *data, int type, void *event)
+_pager_cb_event_border_iconify(void *data, int type, void *event)
 {
    E_Event_Border_Hide   *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
-         evas_object_hide(pw->window_object);
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
+         {
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              evas_object_hide(pw->window_object);
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_uniconify(void *data, int type, void *event)
+_pager_cb_event_border_uniconify(void *data, int type, void *event)
 {
    E_Event_Border_Show   *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
-         evas_object_show(pw->window_object);
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
+         {
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              evas_object_show(pw->window_object);
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_stick(void *data, int type, void *event)
+_pager_cb_event_border_stick(void *data, int type, void *event)
 {
    E_Event_Border_Stick  *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
-   Pager_Win             *pw;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   pw = _pager_face_border_find(face, ev->border);
-   if (!pw) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       
-       pd = l->data;
-       if (ev->border->desk != pd->desk)
+       Pager_Face *face;
+       Pager_Win  *pw;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       pw = _pager_face_border_find(face, ev->border);
+       if (!pw) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            pw = _pager_window_new(pd, ev->border);
-            if (pw)
-              pd->wins = evas_list_append(pd->wins, pw);
+            Pager_Desk *pd;
+
+            pd = l2->data;
+            if (ev->border->desk != pd->desk)
+              {
+                 pw = _pager_window_new(pd, ev->border);
+                 if (pw)
+                   pd->wins = evas_list_append(pd->wins, pw);
+              }
          }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_unstick(void *data, int type, void *event)
+_pager_cb_event_border_unstick(void *data, int type, void *event)
 {
    E_Event_Border_Unstick *ev;
-   Pager_Face             *face;
-   Evas_List              *l;
+   Pager                   *pager;
+   Evas_List               *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       
-       pd = l->data;
-        if (ev->border->desk != pd->desk)
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            Pager_Win *pw;
-            
-            pw = _pager_desk_border_find(pd, ev->border);
-            if (pw)
+            Pager_Desk *pd;
+
+            pd = l2->data;
+            if (ev->border->desk != pd->desk)
               {
-                 pd->wins = evas_list_remove(pd->wins, pw);
-                 _pager_window_free(pw);
+                 Pager_Win *pw;
+
+                 pw = _pager_desk_border_find(pd, ev->border);
+                 if (pw)
+                   {
+                      pd->wins = evas_list_remove(pd->wins, pw);
+                      _pager_window_free(pw);
+                   }
               }
          }
      }
@@ -1155,89 +1193,96 @@
 }
 
 static int
-_pager_face_cb_event_border_desk_set(void *data, int type, void *event)
+_pager_cb_event_border_desk_set(void *data, int type, void *event)
 {
    E_Event_Border_Desk_Set *ev;
-   Pager_Face              *face;
-   Pager_Win               *pw;
-   Pager_Desk              *pd;
-   Evas_List               *l;
+   Pager                   *pager;
+   Evas_List               *l, *l2;
    
-   face = data;
+   pager = data;
    ev = event;
-   /* if this pager is not for the zone of the border */
-   if (face->zone != ev->border->zone)
+   for (l = pager->faces; l; l = l->next)
      {
-       /* look at all desks in the pager */
-       for (l = face->desks; l; l = l->next)
+       Pager_Face              *face;
+       Pager_Win               *pw;
+       Pager_Desk              *pd;
+
+       face = l->data;
+
+       /* if this pager is not for the zone of the border */
+       if (face->zone != ev->border->zone)
          {
-            pd = l->data;
-            /* find this border in this desk */
-            pw = _pager_desk_border_find(pd, ev->border);
-            if (pw)
+            /* look at all desks in the pager */
+            for (l2 = face->desks; l2; l2 = l2->next)
               {
-                 /* if it is found - remove it. it does not belong in this
-                  * pager as it probably moves zones */
-                 pd->wins = evas_list_remove(pd->wins, pw);
-                 _pager_window_free(pw);
+                 pd = l2->data;
+                 /* find this border in this desk */
+                 pw = _pager_desk_border_find(pd, ev->border);
+                 if (pw)
+                   {
+                      /* if it is found - remove it. it does not belong in this
+                       * pager as it probably moves zones */
+                      pd->wins = evas_list_remove(pd->wins, pw);
+                      _pager_window_free(pw);
+                   }
               }
+            continue;
          }
-       return 1;
-     }
-   /* and this pager zone is for this border */
-   /* see if the window is in this pager at all */
-   pw = _pager_face_border_find(face, ev->border);
-   if (pw)
-     {
-       /* is it sticky */
-       if (ev->border->sticky)
-         {
-            /* if its sticky and in this pager - its already everywhere, so 
abort
-             * doing anything else */
-            return 1;
-         }
-       /* move it to the right desk */
-       /* find the pager desk of the target desk */
-       pd = _pager_face_desk_find(face, ev->border->desk);
-       if (pd)
-         {
-            /* remove it from whatever desk it was on */
-            pw->desk->wins = evas_list_remove(pw->desk->wins, pw);
-            e_layout_unpack(pw->window_object);
-
-            /* add it to the one its MEANT to be on */
-            pw->desk = pd;
-            pd->wins = evas_list_append(pd->wins, pw);
-            e_layout_pack(pd->layout_object, pw->window_object);
-            e_layout_child_raise(pw->window_object);
-            _pager_window_move(face, pw);
-         }
-     }
-   /* the border isnt in this pager at all - it must have moved zones */
-   else
-     {
-       if (!ev->border->sticky)
+       /* and this pager zone is for this border */
+       /* see if the window is in this pager at all */
+       pw = _pager_face_border_find(face, ev->border);
+       if (pw)
          {
-            /* find the pager desk it needs to go to */
+            /* is it sticky */
+            if (ev->border->sticky)
+              {
+                 /* if its sticky and in this pager - its already everywhere, 
so abort
+                  * doing anything else */
+                 continue;
+              }
+            /* move it to the right desk */
+            /* find the pager desk of the target desk */
             pd = _pager_face_desk_find(face, ev->border->desk);
             if (pd)
               {
-                 /* create it and add it */
-                 pw = _pager_window_new(pd, ev->border);
-                 if (pw)
-                   pd->wins = evas_list_append(pd->wins, pw);
+                 /* remove it from whatever desk it was on */
+                 pw->desk->wins = evas_list_remove(pw->desk->wins, pw);
+                 e_layout_unpack(pw->window_object);
+
+                 /* add it to the one its MEANT to be on */
+                 pw->desk = pd;
+                 pd->wins = evas_list_append(pd->wins, pw);
+                 e_layout_pack(pd->layout_object, pw->window_object);
+                 e_layout_child_raise(pw->window_object);
+                 _pager_window_move(face, pw);
               }
          }
+       /* the border isnt in this pager at all - it must have moved zones */
        else
          {
-            /* go through all desks */
-            for (l = face->desks; l; l = l->next)
+            if (!ev->border->sticky)
               {
-                 pd = l->data;
-                 /* create it and add it */
-                 pw = _pager_window_new(pd, ev->border);
-                 if (pw)
-                   pd->wins = evas_list_append(pd->wins, pw);
+                 /* find the pager desk it needs to go to */
+                 pd = _pager_face_desk_find(face, ev->border->desk);
+                 if (pd)
+                   {
+                      /* create it and add it */
+                      pw = _pager_window_new(pd, ev->border);
+                      if (pw)
+                        pd->wins = evas_list_append(pd->wins, pw);
+                   }
+              }
+            else
+              {
+                 /* go through all desks */
+                 for (l2 = face->desks; l2; l2 = l2->next)
+                   {
+                      pd = l2->data;
+                      /* create it and add it */
+                      pw = _pager_window_new(pd, ev->border);
+                      if (pw)
+                        pd->wins = evas_list_append(pd->wins, pw);
+                   }
               }
          }
      }
@@ -1245,97 +1290,115 @@
 }
 
 static int
-_pager_face_cb_event_border_raise(void *data, int type, void *event)
+_pager_cb_event_border_raise(void *data, int type, void *event)
 {
    E_Event_Border_Raise  *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw, *pw2 = NULL;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);   
-       if (pw)
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            if (ev->above)
-              pw2 = _pager_desk_border_find(pd, ev->above);
-            if (pw2)
-              e_layout_child_raise_above(pw->window_object, 
pw2->window_object);
-            else
-              e_layout_child_raise(pw->window_object);
+            Pager_Desk *pd;
+            Pager_Win *pw, *pw2 = NULL;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);      
+            if (pw)
+              {
+                 if (ev->above)
+                   pw2 = _pager_desk_border_find(pd, ev->above);
+                 if (pw2)
+                   e_layout_child_raise_above(pw->window_object, 
pw2->window_object);
+                 else
+                   e_layout_child_raise(pw->window_object);
+              }
          }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_lower(void *data, int type, void *event)
+_pager_cb_event_border_lower(void *data, int type, void *event)
 {
    E_Event_Border_Lower  *ev;
-   Pager_Face            *face;
-   Evas_List             *l;
+   Pager                 *pager;
+   Evas_List             *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw, *pw2 = NULL;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            if (ev->below)
-              pw2 = _pager_desk_border_find(pd, ev->below);
-            if (pw2)
-              e_layout_child_lower_below(pw->window_object, 
pw2->window_object);
-            else
-              e_layout_child_lower(pw->window_object);
+            Pager_Desk *pd;
+            Pager_Win *pw, *pw2 = NULL;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
+              {
+                 if (ev->below)
+                   pw2 = _pager_desk_border_find(pd, ev->below);
+                 if (pw2)
+                   e_layout_child_lower_below(pw->window_object, 
pw2->window_object);
+                 else
+                   e_layout_child_lower(pw->window_object);
+              }
          }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_border_icon_change(void *data, int type, void *event)
+_pager_cb_event_border_icon_change(void *data, int type, void *event)
 {
    E_Event_Border_Icon_Change  *ev;
-   Pager_Face                  *face;
-   Evas_List                   *l;
+   Pager                       *pager;
+   Evas_List                   *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->border->zone) return 1;
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       Pager_Win *pw;
-       
-       pd = l->data;
-       pw = _pager_desk_border_find(pd, ev->border);
-       if (pw)
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone != ev->border->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            Evas_Object *o;
-            
-            if (pw->icon_object)
-              {
-                 evas_object_del(pw->icon_object);
-                 pw->icon_object = NULL;
-              }
-            o = e_border_icon_add(ev->border, pd->face->evas);
-            if (o)
+            Pager_Desk *pd;
+            Pager_Win *pw;
+
+            pd = l2->data;
+            pw = _pager_desk_border_find(pd, ev->border);
+            if (pw)
               {
-                 pw->icon_object = o;
-                 evas_object_show(o);
-                 edje_object_part_swallow(pw->window_object, "icon", o);
+                 Evas_Object *o;
+
+                 if (pw->icon_object)
+                   {
+                      evas_object_del(pw->icon_object);
+                      pw->icon_object = NULL;
+                   }
+                 o = e_border_icon_add(ev->border, pd->face->evas);
+                 if (o)
+                   {
+                      pw->icon_object = o;
+                      evas_object_show(o);
+                      edje_object_part_swallow(pw->window_object, "icon", o);
+                   }
               }
          }
      }
@@ -1343,144 +1406,154 @@
 }
 
 static int
-_pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
+_pager_cb_event_zone_desk_count_set(void *data, int type, void *event)
 {
    E_Event_Zone_Desk_Count_Set *ev;
-   Pager_Face                  *face;
-   Pager_Desk                  *pd, *pd2;
-   E_Desk                      *desk;
-   Evas_List                   *l;
-   int                          desks_x, desks_y;
-   int                          x, y;
-   Evas_Coord                   lw, lh, dw, dh;
+   Pager                       *pager;
+   Evas_List                   *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->zone) return 1;
-   e_zone_desk_count_get(ev->zone, &desks_x, &desks_y);
-   if ((face->xnum == desks_x) && (face->ynum == desks_y)) return 1;
-   
-   evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
-   if (face->xnum > 0) dw = lw / face->xnum;
-   else dw = 0;
-   dw *= (desks_x - face->xnum);
-   if (face->ynum > 0) dh = lh / face->ynum;
-   else dh = 0;
-   dh *= (desks_y - face->ynum);
-   
-   /* Loop to remove extra desks */
-   for (l = face->desks; l;)
+
+   for (l = pager->faces; l; l = l->next)
      {
-       pd = l->data;
-       l = l->next;
-       if ((pd->xpos >= desks_x) || (pd->ypos >= desks_y))
+       Pager_Face                  *face;
+       Pager_Desk                  *pd, *pd2;
+       E_Desk                      *desk;
+       int                          desks_x, desks_y;
+       int                          x, y;
+       Evas_Coord                   lw, lh, dw, dh;
+
+       face = l->data;
+
+       if (face->zone != ev->zone) continue;
+       e_zone_desk_count_get(ev->zone, &desks_x, &desks_y);
+       if ((face->xnum == desks_x) && (face->ynum == desks_y)) continue;
+
+       evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
+       if (face->xnum > 0) dw = lw / face->xnum;
+       else dw = 0;
+       dw *= (desks_x - face->xnum);
+       if (face->ynum > 0) dh = lh / face->ynum;
+       else dh = 0;
+       dh *= (desks_y - face->ynum);
+
+       /* Loop to remove extra desks */
+       for (l2 = face->desks; l2;)
          {
-            /* remove desk */
-            if (pd->current)
+            pd = l2->data;
+            l2 = l2->next;
+            if ((pd->xpos >= desks_x) || (pd->ypos >= desks_y))
               {
-                 desk = e_desk_current_get(ev->zone);
-                 pd2 = _pager_face_desk_find(face, desk);
-                 _pager_face_desk_select(pd2);
+                 /* remove desk */
+                 if (pd->current)
+                   {
+                      desk = e_desk_current_get(ev->zone);
+                      pd2 = _pager_face_desk_find(face, desk);
+                      _pager_face_desk_select(pd2);
+                   }
+                 face->desks = evas_list_remove(face->desks, pd);
+                 _pager_desk_free(pd);
               }
-            face->desks = evas_list_remove(face->desks, pd);
-            _pager_desk_free(pd);
          }
-     }
-   /* Loop to add new desks */
-   for (x = 0; x < desks_x; x++)
-     {
-       for (y = 0; y < desks_y; y++)
+       /* Loop to add new desks */
+       for (x = 0; x < desks_x; x++)
          {
-            if ((x >= face->xnum) || (y >= face->ynum))
+            for (y = 0; y < desks_y; y++)
               {
-                 /* add desk */
-                 desk = e_desk_at_xy_get(ev->zone, x, y);
-                 pd = _pager_desk_new(face, desk, x, y);
-                 if (pd)
-                   face->desks = evas_list_append(face->desks, pd);
+                 if ((x >= face->xnum) || (y >= face->ynum))
+                   {
+                      /* add desk */
+                      desk = e_desk_at_xy_get(ev->zone, x, y);
+                      pd = _pager_desk_new(face, desk, x, y);
+                      if (pd)
+                        face->desks = evas_list_append(face->desks, pd);
+                   }
               }
          }
+
+       face->xnum = desks_x;
+       face->ynum = desks_y;
+       e_gadman_client_resize(face->gmc, face->fw + dw, face->fh + dh);
      }
-   
-   face->xnum = desks_x;
-   face->ynum = desks_y;
-//   e_gadman_client_aspect_set(face->gmc, 
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h),
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h));
-   e_gadman_client_resize(face->gmc, face->fw + dw, face->fh + dh);
    return 1;
 }
 
 static int
-_pager_face_cb_event_desk_show(void *data, int type, void *event)
+_pager_cb_event_desk_show(void *data, int type, void *event)
 {
-   Pager_Face        *face;
-   Pager_Desk        *desk;
    E_Event_Desk_Show *ev;
+   Pager             *pager;
+   Pager_Popup       *pp = NULL;
+   Evas_List         *l;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->desk->zone) return 1;
-
-   desk = _pager_face_desk_find(face, ev->desk);
-   if (desk)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Popup *pp;
-       Evas_Coord   w, h;
+       Pager_Face *face;
+       Pager_Desk *pd;
 
-       _pager_face_desk_select(desk);
+       face = l->data;
+       if (face->zone != ev->desk->zone) continue;
 
-       if (!face->pager->conf->popup) return 1;
+       pd = _pager_face_desk_find(face, ev->desk);
+       if (pd)
+         {
+            Evas_Coord   w, h;
 
-       pp = face->current_popup;
-       face->current_popup = NULL;
-       if (pp) _pager_popup_free(pp);
-       
-       pp = E_NEW(Pager_Popup, 1);
-       if (!pp) return 1;
+            _pager_face_desk_select(pd);
 
-       /* Show popup */
-       pp->popup = e_popup_new(face->zone, 0, 0, 1, 1);
-       if (!pp->popup)
-         {
-            free(pp);
-            return 1;
-         }
-       e_popup_layer_set(pp->popup, 999);
-       pp->src_face = face;
-       
-       face->current_popup = pp;
-       
-       evas_object_geometry_get(face->pager_object, NULL, NULL, &w, &h);
+            /* If the popup is defined, we don't want another */
+            if ((!face->pager->conf->popup) || (pp)) continue;
+
+            pp = face->current_popup;
+            face->current_popup = NULL;
+            if (pp) _pager_popup_free(pp);
+
+            pp = E_NEW(Pager_Popup, 1);
+            if (!pp) continue;
 
-       pp->face = _pager_face_new(face->pager, face->zone, pp->popup->evas);
-       evas_object_move(pp->face->pager_object, 0, 0);
-       evas_object_resize(pp->face->pager_object, w, h);
-
-//     edje_object_signal_emit(pp->face->pager_object, "desktop_name,top", "");
-
-       pp->bg_object = edje_object_add(pp->face->evas);
-       e_theme_edje_object_set(pp->bg_object, "base/theme/modules/pager",
-                               "widgets/pager/popup");   
-       edje_object_part_text_set(pp->bg_object, "text", desk->desk->name);
-       evas_object_show(pp->bg_object);
-       edje_extern_object_min_size_set(pp->face->pager_object, w, h);
-       edje_object_part_swallow(pp->bg_object, "pager", 
pp->face->pager_object);
-       edje_object_calc_force(pp->face->pager_object);
-       edje_object_size_min_calc(pp->bg_object, &w, &h);
-
-       evas_object_move(pp->bg_object, 0, 0);
-       evas_object_resize(pp->bg_object, w, h);
-       e_popup_edje_bg_object_set(pp->popup, pp->bg_object);
-//     e_popup_edje_bg_object_set(pp->popup, pp->face->pager_object);
-       e_popup_move_resize(pp->popup,
-                           pp->popup->zone->x + ((pp->popup->zone->w - w) / 2),
-                           pp->popup->zone->y + ((pp->popup->zone->h - h) / 2),
-                           w, h);
-       e_popup_show(pp->popup);
+            /* Show popup */
+            pp->popup = e_popup_new(face->zone, 0, 0, 1, 1);
+            if (!pp->popup)
+              {
+                 free(pp);
+                 continue;
+              }
+            e_popup_layer_set(pp->popup, 999);
+            pp->src_face = face;
+
+            face->current_popup = pp;
 
-       pp->timer = ecore_timer_add(face->pager->conf->popup_speed,
-                                   _pager_popup_cb_timeout, pp);
+            evas_object_geometry_get(face->pager_object, NULL, NULL, &w, &h);
+
+            pp->face = _pager_face_new(face->pager, face->zone, 
pp->popup->evas);
+            evas_object_move(pp->face->pager_object, 0, 0);
+            evas_object_resize(pp->face->pager_object, w, h);
+
+            pp->bg_object = edje_object_add(pp->face->evas);
+            e_theme_edje_object_set(pp->bg_object, "base/theme/modules/pager",
+                                    "widgets/pager/popup");   
+            edje_object_part_text_set(pp->bg_object, "text", pd->desk->name);
+            evas_object_show(pp->bg_object);
+            edje_extern_object_min_size_set(pp->face->pager_object, w, h);
+            edje_object_part_swallow(pp->bg_object, "pager", 
pp->face->pager_object);
+            edje_object_calc_force(pp->face->pager_object);
+            edje_object_size_min_calc(pp->bg_object, &w, &h);
+
+            evas_object_move(pp->bg_object, 0, 0);
+            evas_object_resize(pp->bg_object, w, h);
+            e_popup_edje_bg_object_set(pp->popup, pp->bg_object);
+            e_popup_move_resize(pp->popup,
+                                pp->popup->zone->x + ((pp->popup->zone->w - w) 
/ 2),
+                                pp->popup->zone->y + ((pp->popup->zone->h - h) 
/ 2),
+                                w, h);
+            e_popup_show(pp->popup);
+
+            pp->timer = ecore_timer_add(face->pager->conf->popup_speed,
+                                        _pager_popup_cb_timeout, pp);
+         }
      }
 
    return 1;
@@ -1495,77 +1568,86 @@
    _pager_popup_free(pp);
    return 0;
 } 
+
 static int
-_pager_face_cb_event_desk_name_change(void *data, int type, void *event)
+_pager_cb_event_desk_name_change(void *data, int type, void *event)
 {
-   Pager_Face        *face;
    E_Event_Desk_Show *ev;
-   Evas_List *l;
+   Pager             *pager;
+   Evas_List         *l, *l2;
 
-   face = data;
+   pager = data;
    ev = event;
-   if (face->zone != ev->desk->zone) return 1;
-
-   for (l = face->desks; l; l = l->next)
+   for (l = pager->faces; l; l = l->next)
      {
-       Pager_Desk *pd;
-       pd = l->data;
+       Pager_Face *face;
 
-       if ((pd->desk == ev->desk) && (pd->current))
+       face = l->data;
+       if (face->zone != ev->desk->zone) continue;
+       for (l2 = face->desks; l2; l2 = l2->next)
          {
-            edje_object_part_text_set(pd->face->pager_object, "desktop_name", 
ev->desk->name);
-            break;
-         }
+            Pager_Desk *pd;
+            pd = l2->data;
+
+            if ((pd->desk == ev->desk) && (pd->current))
+              {
+                 edje_object_part_text_set(pd->face->pager_object, 
"desktop_name", ev->desk->name);
+                 break;
+              }
 
+         }
      }
    return 1;
 }
 
 static int
-_pager_face_cb_event_container_resize(void *data, int type, void *event)
+_pager_cb_event_container_resize(void *data, int type, void *event)
 {
-   Pager_Face               *face;
    E_Event_Container_Resize *ev;
-   Evas_List                *l;
+   Pager             *pager;
+   Evas_List         *l, *l2;
    Evas_Coord                w, h, lw, lh, dw, dh, padw, padh;
-   
-   face = data;
+
+   pager = data;
    ev = event;
-   if (face->zone->container != ev->container) return 1;
-   
-   evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
-   if (face->xnum > 0) dw = lw / face->xnum;
-   else dw = 0;
-   if (face->ynum > 0) dh = lh / face->ynum;
-   else dh = 0;
-   
-   for (l = face->desks; l; l = l->next)
-     {
-       Pager_Desk *pd;
-       
-       pd = l->data;
-       e_layout_virtual_size_set(pd->layout_object, 
-                                 face->zone->w,
-                                 face->zone->h);
-     }
-//   e_gadman_client_aspect_set(face->gmc, 
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h),
-//                           (double)(face->xnum * face->zone->w) / 
(double)(face->ynum * face->zone->h));
-   w = face->fw;
-   h = face->fh;
-   evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
-   padw = w - lw;
-   padh = h - lh;
-   
-   if ((face->xnum * face->zone->w) > (face->ynum * face->zone->h))
-     {
-       w = (face->xnum * ((face->zone->w * dh) / face->zone->h)) + padw;
-     }
-   else
+   for (l = pager->faces; l; l = l->next)
      {
-       h = (face->ynum * ((face->zone->h * dw) / face->zone->w)) + padh;
+       Pager_Face *face;
+
+       face = l->data;
+       if (face->zone->container != ev->container) continue;
+
+       evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
+       if (face->xnum > 0) dw = lw / face->xnum;
+       else dw = 0;
+       if (face->ynum > 0) dh = lh / face->ynum;
+       else dh = 0;
+
+       for (l2 = face->desks; l2; l2 = l2->next)
+         {
+            Pager_Desk *pd;
+
+            pd = l2->data;
+            e_layout_virtual_size_set(pd->layout_object, 
+                                      face->zone->w,
+                                      face->zone->h);
+         }
+       w = face->fw;
+       h = face->fh;
+       evas_object_geometry_get(face->table_object, NULL, NULL, &lw, &lh);
+       padw = w - lw;
+       padh = h - lh;
+
+       if ((face->xnum * face->zone->w) > (face->ynum * face->zone->h))
+         {
+            w = (face->xnum * ((face->zone->w * dh) / face->zone->h)) + padw;
+         }
+       else
+         {
+            h = (face->ynum * ((face->zone->h * dw) / face->zone->w)) + padh;
+         }
+       e_gadman_client_resize(face->gmc, w, h);
      }
-   e_gadman_client_resize(face->gmc, w, h);
    return 1;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- e_mod_main.h        6 Sep 2005 07:29:47 -0000       1.28
+++ e_mod_main.h        7 Sep 2005 04:47:14 -0000       1.29
@@ -53,6 +53,23 @@
    Evas_List   *menus;
 
    Config      *conf;
+
+   Ecore_Event_Handler *ev_handler_border_resize;
+   Ecore_Event_Handler *ev_handler_border_move;
+   Ecore_Event_Handler *ev_handler_border_add;
+   Ecore_Event_Handler *ev_handler_border_remove;
+   Ecore_Event_Handler *ev_handler_border_iconify;
+   Ecore_Event_Handler *ev_handler_border_uniconify;
+   Ecore_Event_Handler *ev_handler_border_stick;
+   Ecore_Event_Handler *ev_handler_border_unstick;
+   Ecore_Event_Handler *ev_handler_border_desk_set;
+   Ecore_Event_Handler *ev_handler_border_raise;
+   Ecore_Event_Handler *ev_handler_border_lower;
+   Ecore_Event_Handler *ev_handler_border_icon_change;
+   Ecore_Event_Handler *ev_handler_zone_desk_count_set;
+   Ecore_Event_Handler *ev_handler_desk_show;
+   Ecore_Event_Handler *ev_handler_desk_name_change;
+   Ecore_Event_Handler *ev_handler_container_resize;
 };
 
 struct _Pager_Face
@@ -61,13 +78,13 @@
    E_Gadman_Client *gmc;
    E_Menu          *menu;
    Evas            *evas;
-   
+
    E_Zone          *zone;
    Evas_List       *desks;
-   
+
    Evas_Object  *pager_object;
    Evas_Object  *table_object;
-   
+
    Evas_Coord    fx, fy, fw, fh;
    struct {
        Evas_Coord l, r, t, b;
@@ -77,26 +94,9 @@
    int           xnum, ynum;
 
    Config_Face  *conf;
-   
-   Ecore_Event_Handler *ev_handler_border_resize;
-   Ecore_Event_Handler *ev_handler_border_move;
-   Ecore_Event_Handler *ev_handler_border_add;
-   Ecore_Event_Handler *ev_handler_border_remove;
-   Ecore_Event_Handler *ev_handler_border_iconify;
-   Ecore_Event_Handler *ev_handler_border_uniconify;
-   Ecore_Event_Handler *ev_handler_border_stick;
-   Ecore_Event_Handler *ev_handler_border_unstick;
-   Ecore_Event_Handler *ev_handler_border_desk_set;
-   Ecore_Event_Handler *ev_handler_border_raise;
-   Ecore_Event_Handler *ev_handler_border_lower;
-   Ecore_Event_Handler *ev_handler_border_icon_change;
-   Ecore_Event_Handler *ev_handler_zone_desk_count_set;
-   Ecore_Event_Handler *ev_handler_desk_show;
-   Ecore_Event_Handler *ev_handler_desk_name_change;
-   Ecore_Event_Handler *ev_handler_container_resize;
 
    E_Drop_Handler *drop_handler;
-   
+
    Pager_Popup *current_popup;
 };
 




-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to