Implemented desktops as a list, instead of an array. Moved e_desk_current_get, e_desk_at_xy_get to e_zone_desk_current_get and e_zone_desk_at_xy_get.

Anyone against?

Sebastian
Index: e/src/bin/e_border.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.101
diff -u -r1.101 e_border.c
--- e/src/bin/e_border.c        15 Feb 2005 17:11:13 -0000      1.101
+++ e/src/bin/e_border.c        17 Feb 2005 17:42:28 -0000
@@ -296,7 +296,7 @@
 
    bd->zone = e_zone_current_get(con);
    bd->zone->clients = evas_list_append(bd->zone->clients, bd);
-   bd->desk = e_desk_current_get(bd->zone);
+   bd->desk = e_zone_desk_current_get(bd->zone);
    bd->desk->clients = evas_list_append(bd->desk->clients, bd);
    con->clients = evas_list_append(con->clients, bd);
    borders = evas_list_append(borders, bd);
@@ -333,11 +333,11 @@
        int x, y;
 
        e_desk_xy_get(bd->desk, &x, &y);
-       desk = e_desk_at_xy_get(bd->zone, x, y);
+       desk = e_zone_desk_at_xy_get(bd->zone, x, y);
        if (desk)
          e_border_desk_set(bd, desk);
        else
-         e_border_desk_set(bd, e_desk_current_get(bd->zone));
+         e_border_desk_set(bd, e_zone_desk_current_get(bd->zone));
      }
 
    ev = calloc(1, sizeof(E_Event_Border_Zone_Set));
@@ -365,8 +365,7 @@
    bd->desk->clients = evas_list_remove(bd->desk->clients, bd);
    desk->clients = evas_list_append(desk->clients, bd);
    bd->desk = desk;
-   if (bd->zone != desk->zone)
-     e_border_zone_set(bd, desk->zone);
+   e_border_zone_set(bd, desk->zone);
 
    ev = calloc(1, sizeof(E_Event_Border_Desk_Set));
    ev->border = bd;
@@ -892,9 +891,8 @@
    if ((bd->shading)) return;
    if (bd->iconic)
      {
-       desk = e_desk_current_get(bd->desk->zone);
-       if (desk != bd->desk)
-         e_border_desk_set(bd, desk);
+       desk = e_zone_desk_current_get(bd->desk->zone);
+       e_border_desk_set(bd, desk);
        bd->iconic = 0;
        e_border_show(bd);
        /* FIXME: DEPRECATED?
@@ -931,7 +929,7 @@
    E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE);
    bd->sticky = 0;
    e_hints_window_sticky_set(bd->client.win, 0);
-   e_border_desk_set(bd, e_desk_current_get(bd->zone));
+   e_border_desk_set(bd, e_zone_desk_current_get(bd->zone));
 
    ev = E_NEW(E_Event_Border_Unstick, 1);
    ev->border = bd;
@@ -2544,7 +2542,7 @@
          e_border_iconify(bd);
        /* If a window isn't iconic, and is one the current desk,
         * show it! */
-       else if (bd->desk == e_desk_current_get(bd->zone))
+       else if (bd->desk == e_zone_desk_current_get(bd->zone))
          e_border_show(bd);
 
        ecore_x_icccm_move_resize_send(bd->client.win,
Index: e/src/bin/e_desk.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.21
diff -u -r1.21 e_desk.c
--- e/src/bin/e_desk.c  15 Feb 2005 16:54:47 -0000      1.21
+++ e/src/bin/e_desk.c  17 Feb 2005 17:42:29 -0000
@@ -46,6 +46,8 @@
    desk->clients = NULL;
    desk->zone = zone;
    desk->num = ++desk_count;
+   desk->x = x;
+   desk->y = y;
    snprintf(name, sizeof(name), "Desktop %d, %d", x, y);
    desk->name = strdup(name);
    return desk;
@@ -56,8 +58,7 @@
 {
    E_OBJECT_CHECK(desk);
    E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
-   if (desk->name)
-      free(desk->name);
+   E_FREE(desk->name);
    desk->name = strdup(name);
 }
 
@@ -65,7 +66,6 @@
 e_desk_show(E_Desk *desk)
 {
    Evas_List   *l;
-   int          x, y;
    E_Event_Desk_Show *ev;
    
    E_OBJECT_CHECK(desk);
@@ -89,20 +89,14 @@
          }
      }
    
-   for (x = 0; x < desk->zone->desk_x_count; x++)
+   for (l = desk->zone->desks; l; l = l->next)
      {
-       for (y = 0; y < desk->zone->desk_y_count; y++)
-         {
-            E_Desk *next;
-            next = e_desk_at_xy_get(desk->zone,x, y);
-            next->visible = 0;
-            if (next == desk)
-              {
-                 desk->zone->desk_x_current = x;
-                 desk->zone->desk_y_current = y;
-              }
-         }
+       E_Desk *next;
+
+       next = l->data;
+       next->visible = 0;
      }
+   e_zone_desk_current_set(desk->zone, desk);
    desk->visible = 1;
 
    ev = E_NEW(E_Event_Desk_Show, 1);
@@ -135,103 +129,48 @@
    e_zone_desk_count_set(zone, zone->desk_x_count - 1, zone->desk_y_count);
 }
 
-E_Desk *
-e_desk_current_get(E_Zone *zone)
-{
-   E_OBJECT_CHECK_RETURN(zone, NULL);
-   E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
-  
-   return e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current);
-}
-
-E_Desk *
-e_desk_at_xy_get(E_Zone *zone, int x, int y)
-{
-   E_OBJECT_CHECK_RETURN(zone, NULL);
-   E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
-
-   if (x >= zone->desk_x_count || y >= zone->desk_y_count)
-     return NULL;
-
-   return (E_Desk *) zone->desks[x + (y * zone->desk_x_count)];
-}
-
 void
 e_desk_xy_get(E_Desk *desk, int *x, int *y)
 {
-   int xx, yy;
-
    E_OBJECT_CHECK(desk);
    E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
 
-   for (xx = 0; xx < desk->zone->desk_x_count; xx++)
-     {
-       for (yy = 0; yy < desk->zone->desk_y_count; yy++)
-         {
-            E_Desk *next;
-            next = e_desk_at_xy_get(desk->zone, xx, yy);
-
-            if (next == desk)
-              {
-                 *x = xx;
-                 *y = yy;
-                 return;
-              }
-         }
-     }
+   *x = desk->x;
+   *y = desk->y;
 }
 
 void
 e_desk_next(E_Zone *zone)
 {
-   int          x, y;
+   Evas_List *l;
 
    E_OBJECT_CHECK(zone);
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
    
-   if (zone->desk_x_count < 2 && zone->desk_y_count < 2)
-      return;
-   
-   x = zone->desk_x_current;
-   y = zone->desk_y_current;
-
-   x++;
-   if (x == zone->desk_x_count)
-     {
-       x = 0;
-       y++;
-       if (y == zone->desk_y_count)
-         y = 0;
-     }
-   
-   e_desk_show(e_desk_at_xy_get(zone, x, y));
+   for (l = zone->desks; l; l = l->next)
+     if (l->data == zone->current)
+       {
+         if (l->next)
+           e_desk_show(E_DESK(l->next));
+         break;
+       }
 }
 
 void
 e_desk_prev(E_Zone *zone)
 {
-   int          x, y;
+   Evas_List *l;
 
    E_OBJECT_CHECK(zone);
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
 
-   if (zone->desk_x_count < 2 && zone->desk_y_count < 2)
-     return;
-
-   x = zone->desk_x_current;
-   y = zone->desk_y_current;
-
-   x--;
-   if (x < 0)
-     {
-       x = zone->desk_x_count - 1;
-       y--;
-       if (y < 0)
-         y = zone->desk_y_count - 1;
-       
-     }
-
-   e_desk_show(e_desk_at_xy_get(zone, x, y));
+   for (l = zone->desks; l; l = l->next)
+     if (l->data == zone->current)
+       {
+         if (l->prev)
+           e_desk_show(E_DESK(l->prev));
+         break;
+       }
 }
 
 static void
Index: e/src/bin/e_desk.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.h,v
retrieving revision 1.11
diff -u -r1.11 e_desk.h
--- e/src/bin/e_desk.h  15 Feb 2005 12:11:31 -0000      1.11
+++ e/src/bin/e_desk.h  17 Feb 2005 17:42:29 -0000
@@ -11,6 +11,7 @@
 #define E_DESK_H
 
 #define E_DESK_TYPE 0xE0b01005
+#define E_DESK(x)   ((E_Desk *)(x))
 
 struct _E_Desk
 {
@@ -21,6 +22,9 @@
    int                  num;
    char                 visible : 1;
 
+   /* Position */
+   int                  x, y;
+
    Evas_Object         *bg_object;
 
    Evas_List           *clients;
@@ -36,8 +40,6 @@
 EAPI E_Desk      *e_desk_new(E_Zone *zone, int x, int y);
 EAPI void         e_desk_name_set(E_Desk *desk, const char *name);
 EAPI void         e_desk_show(E_Desk *desk);
-EAPI E_Desk      *e_desk_current_get(E_Zone *zone);
-EAPI E_Desk      *e_desk_at_xy_get(E_Zone *zone, int x, int y);
 EAPI void         e_desk_xy_get(E_Desk *desk, int *x, int *y);
 EAPI void         e_desk_next(E_Zone *zone);
 EAPI void         e_desk_prev(E_Zone *zone);
Index: e/src/bin/e_int_menus.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.37
diff -u -r1.37 e_int_menus.c
--- e/src/bin/e_int_menus.c     15 Feb 2005 11:50:12 -0000      1.37
+++ e/src/bin/e_int_menus.c     17 Feb 2005 17:42:30 -0000
@@ -320,7 +320,7 @@
 _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
 {
    E_Menu_Item *mi;
-   Evas_List *l, *desks = NULL;
+   Evas_List *l;
    E_Menu *root;
 
    e_menu_pre_activate_callback_set(m, NULL, NULL);
@@ -329,21 +329,14 @@
    /* FIXME: Menu code needs to determine what zone menu was clicked in */
    if ((root) && (root->zone))
      {
-       int i;
-       E_Zone *zone;
-       
-       zone = root->zone;
-       for (i = 0; i < zone->desk_x_count * zone->desk_y_count; i++)
-         desks = evas_list_append(desks, zone->desks[i]);
-       
-       for (l = desks; l; l = l->next)
+       for (l = root->zone->desks; l; l = l->next)
          {
             E_Desk *desk = l->data;
             mi = e_menu_item_new(m);
             e_menu_item_radio_group_set(mi, 1);
             e_menu_item_radio_set(mi, 1);
             e_menu_item_label_set(mi, desk->name);
-            if (desk == e_desk_current_get(zone))
+            if (desk == e_zone_desk_current_get(root->zone))
               e_menu_item_toggle_set(mi, 1);
             e_menu_item_callback_set(mi, _e_int_menus_desktops_item_cb, desk);
          }
@@ -367,9 +360,6 @@
    mi = e_menu_item_new(m);
    e_menu_item_label_set(mi, "Remove Column of Desktops");
    e_menu_item_callback_set(mi, _e_int_menus_desktops_col_del_cb, NULL);
-                    
-                    
-   evas_list_free(desks);
 }
 
 /* FIXME: Use the zone the menu was clicked in */
@@ -475,18 +465,13 @@
 _e_int_menus_clients_free_hook(void *obj)
 {
    E_Menu *m;
-   Evas_List *borders;
+   Evas_List *borders, *l;
    
    m = obj;
    borders = e_object_data_get(E_OBJECT(m));
-   while (borders)
-     {
-       E_Border *bd;
-       
-       bd = borders->data;
-       borders = evas_list_remove_list(borders, borders);
-       e_object_unref(E_OBJECT(bd));
-     }
+   for (l = borders; l; l = l->next)
+     e_object_unref(E_OBJECT(l->data));
+   evas_list_free(borders);
 }
 
 
Index: e/src/bin/e_manager.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.13
diff -u -r1.13 e_manager.c
--- e/src/bin/e_manager.c       16 Feb 2005 11:29:31 -0000      1.13
+++ e/src/bin/e_manager.c       17 Feb 2005 17:42:31 -0000
@@ -127,9 +127,9 @@
                                                       E_ATOM_DESK,
                                                       deskxy, 2);
                  if (ret == 2)
-                   desk = e_desk_at_xy_get(zone,
-                                           deskxy[0],
-                                           deskxy[1]);
+                   desk = e_zone_desk_at_xy_get(zone,
+                                                deskxy[0],
+                                                deskxy[1]);
 
                  bd = e_border_new(con, windows[i], 1);
                  if (bd)
Index: e/src/bin/e_zone.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.25
diff -u -r1.25 e_zone.c
--- e/src/bin/e_zone.c  15 Feb 2005 16:54:47 -0000      1.25
+++ e/src/bin/e_zone.c  17 Feb 2005 17:42:31 -0000
@@ -92,11 +92,10 @@
 
    zone->desk_x_count = 0;
    zone->desk_y_count = 0;
-   zone->desk_x_current = 0;
-   zone->desk_y_current = 0;
    e_zone_desk_count_set(zone,
                         e_config->zone_desks_x_count,
                         e_config->zone_desks_y_count);
+   zone->current = zone->desks->data;
    return zone;
 }
 
@@ -216,13 +215,50 @@
    E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
    return zone->clients;
 }
+
+void
+e_zone_desk_current_set(E_Zone *zone, E_Desk *desk)
+{
+   zone->current = desk;
+}
+
+E_Desk *
+e_zone_desk_current_get(E_Zone *zone)
+{
+   return zone->current;
+}
+
+E_Desk *
+e_zone_desk_at_xy_get(E_Zone *zone, int x, int y)
+{
+   Evas_List *l;
+   int pos;
+   E_Desk *desk;
+
+   pos = x + (y * zone->desk_x_count);
+   desk = evas_list_nth(zone->desks, pos);
+   if (!(desk) || (desk->x != x) || (desk->y != y))
+     {
+       printf("BUG: Desktop list isn't sorted right!\n");
+       for (l = zone->desks; l; l = l->next)
+         {
+            desk = l->data;
+            if ((desk->x == x) && (desk->y == y))
+              return desk;
+         }
+     }
+   else
+     return desk;
+
+   return NULL;
+}
    
 
 static void
 _e_zone_free(E_Zone *zone)
 {
    E_Container *con;
-   int x, y;
+   Evas_List *l;
    
    con = zone->container;
    if (zone->name) free(zone->name);
@@ -231,10 +267,9 @@
    evas_object_del(zone->bg_clip_object);
    evas_object_del(zone->bg_object);
    /* free desks */
-   for (x = 0; x < zone->desk_x_count; x++)
-     for(y = 0; y < zone->desk_y_count; y++)
-       e_object_del(E_OBJECT(zone->desks[x + (y * zone->desk_x_count)]));
-   free(zone->desks);
+   for (l = zone->desks; l; l = l->next)
+     e_object_del(E_OBJECT(l->data));
+   evas_list_free(zone->desks);
 
    free(zone);
 }
@@ -312,10 +347,9 @@
 void
 e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
 {
-   E_Desk   **new_desks;
    E_Desk    *desk, *new_desk;
    int        x, y, xx, yy, moved;
-   Evas_List *client;
+   Evas_List *client, *desks;
    E_Border  *bd;
    E_Event_Zone_Desk_Count_Set *ev;
    
@@ -326,85 +360,70 @@
    if (yy < 1)
      yy = 1;
 
-   new_desks = malloc(xx * yy * sizeof(E_Desk *));
-
-   for (x = 0; x < xx; x++)
-     for(y = 0; y < yy; y++)
-       {
-         if (x < zone->desk_x_count && y < zone->desk_y_count)
-           desk = (E_Desk *) zone->desks[x + (y * zone->desk_x_count)];
-         else
-           desk = e_desk_new(zone, x, y);
-         new_desks[x + (y * xx)] = desk;
-       }
-
-   /* catch windoes that have fallen off the end if we got smaller */
-   if (xx < zone->desk_x_count)
-     for (y = 0; y < zone->desk_y_count; y++)
-       {
-         new_desk = (E_Desk *)
-            zone->desks[xx - 1 + (y * zone->desk_x_count)];
-         for (x = xx; x < zone->desk_x_count; x++)
-           {
-              desk = (E_Desk *)
-                 zone->desks[x + (y * zone->desk_x_count)];
-
-              for (client = desk->clients; client; client = client->next)
-                {
-                   bd = (E_Border *) client->data;
-
-                   new_desk->clients = evas_list_append(new_desk->clients, bd);
-                   e_border_desk_set(bd, new_desk);
-                }
-              e_object_del(E_OBJECT(desk));
-           }
-       }  
-   if (yy < zone->desk_y_count)
-     for (x = 0; x < zone->desk_x_count; x++)
-       {
-         new_desk = (E_Desk *)
-            zone->desks[x + ((yy - 1) * zone->desk_x_count)];
-         for (y = yy; y < zone->desk_y_count; y++)
-           {
-              desk = (E_Desk *)
-                 zone->desks[x + (y * zone->desk_x_count)];
-
-              for (client = desk->clients; client; client = client->next)
-                {
-                   bd = (E_Border *) client->data;
-
-                   new_desk->clients = evas_list_append(new_desk->clients, bd);
-                   e_border_desk_set(bd, new_desk);
-                }
-              e_object_del(E_OBJECT(desk));
-           }
-       }       
-
-   if (zone->desks) free(zone->desks);
-   zone->desks = new_desks;
-   
-   zone->desk_x_count = xx;
-   zone->desk_y_count = yy;
-
-   moved = 0;
-   if (zone->desk_x_current >= xx)
+   if ((zone->desk_x_count > xx) || (zone->desk_y_count > yy))
      {
-       zone->desk_x_current = xx - 1;
-       moved = 1;
+       for (desks = zone->desks; desks;)
+         {
+            desk = desks->data;
+            if ((desk->x >= xx) || (desk->y >= yy))
+              {
+                 /* Remove desk */
+                 desks = desks->prev;
+                 new_desk = desks->data;
+                 /* New current desk */
+                 if (desk == zone->current)
+                   {
+                      zone->current = new_desk;
+                      moved = 1;
+                   }
+                 /* Move clients */
+                 for (client = desk->clients; client; client = client->next)
+                   {
+                      bd = client->data;
+                      e_border_desk_set(bd, new_desk);
+                   }
+                 /* Delete desk */
+                 e_object_del(E_OBJECT(desk));
+                 zone->desks = evas_list_remove_list(zone->desks, desks->next);
+              }
+            desks = desks->next;
+         }
      }
-   if (zone->desk_y_current >= yy)
+
+   if ((xx > zone->desk_x_count) || (yy > zone->desk_y_count))
      {
-       zone->desk_y_current = yy - 1;
-       moved = 1;
+       desks = zone->desks;
+       for (y = 0; y < yy; y++)
+         {
+            for (x = 0; x < xx; x++)
+              {
+                 if ((x >= zone->desk_x_count) || (y >= zone->desk_y_count))
+                   {
+                      /* Add desk */
+                      new_desk = e_desk_new(zone, x, y);
+                      if (desks)
+                        {
+                           desk = desks->data;
+                           zone->desks = 
evas_list_prepend_relative(zone->desks, new_desk, desk);
+                           desks = desks->prev;
+                        }
+                      else
+                        {
+                           zone->desks = evas_list_append(zone->desks, 
new_desk);
+                           desks = zone->desks->last;
+                        }
+                   }
+                 desks = desks->next;
+              }
+         }
      }
+
    if (moved)
-     e_desk_show(e_desk_at_xy_get(zone, xx - 1, yy - 1));
-   else
-     {
-       desk = e_desk_current_get(zone);
-       desk->visible = 0;
-       e_desk_show(desk);
-     }
+     e_desk_show(zone->current);
+
+   zone->desk_x_count = xx;
+   zone->desk_y_count = yy;
+
    e_config->zone_desks_x_count = xx;
    e_config->zone_desks_y_count = yy;
    e_config_save_queue();
Index: e/src/bin/e_zone.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.h,v
retrieving revision 1.13
diff -u -r1.13 e_zone.h
--- e/src/bin/e_zone.h  13 Feb 2005 12:33:31 -0000      1.13
+++ e/src/bin/e_zone.h  17 Feb 2005 17:42:31 -0000
@@ -30,8 +30,8 @@
    Evas_Object         *bg_clip_object;
    
    int                  desk_x_count, desk_y_count;
-   int                  desk_x_current, desk_y_current;
-   E_Desk             **desks;
+   Evas_List           *desks;
+   E_Desk              *current;
    Evas_List           *clients;
 
 };
@@ -50,6 +50,9 @@
 EAPI E_Zone    *e_zone_current_get(E_Container *con);
 EAPI void       e_zone_bg_reconfigure(E_Zone *zone);
 EAPI Evas_List *e_zone_clients_list_get(E_Zone *zone);
+EAPI void       e_zone_desk_current_set(E_Zone *zone, E_Desk *desk);
+EAPI E_Desk    *e_zone_desk_current_get(E_Zone *zone);
+EAPI E_Desk    *e_zone_desk_at_xy_get(E_Zone *zone, int x, int y);
 EAPI void       e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count);
 EAPI void       e_zone_desk_count_get(E_Zone *zone, int *x_count, int 
*y_count);
 
Index: e/src/modules/pager/e_mod_main.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/pager/e_mod_main.c,v
retrieving revision 1.54
diff -u -r1.54 e_mod_main.c
--- e/src/modules/pager/e_mod_main.c    16 Feb 2005 12:24:03 -0000      1.54
+++ e/src/modules/pager/e_mod_main.c    17 Feb 2005 17:42:36 -0000
@@ -523,7 +523,7 @@
    face->zone = zone;
    e_object_ref(E_OBJECT(zone));
    e_zone_desk_count_get(zone, &desks_x, &desks_y);
-   current = e_desk_current_get(zone);
+   current = e_zone_desk_current_get(zone);
    face->xnum = desks_x;
    face->ynum = desks_y;
 
@@ -533,7 +533,7 @@
          Pager_Desk *pd;
          E_Desk     *desk;
 
-         desk = e_desk_at_xy_get(zone, x, y);
+         desk = e_zone_desk_at_xy_get(zone, x, y);
          pd = _pager_desk_new(face, desk, x, y);
          if (pd)
            face->desks = evas_list_append(face->desks, pd);
@@ -570,7 +570,7 @@
    pd->xpos = xpos;
    pd->ypos = ypos;
 
-   if (desk == e_desk_current_get(desk->zone))
+   if (desk == e_zone_desk_current_get(desk->zone))
      {
        pd->current = 1;
        evas_object_move(face->screen,
@@ -1234,7 +1234,7 @@
          if ((x >= face->xnum) || (y >= face->ynum))
            {
               /* Add desk */
-              desk = e_desk_at_xy_get(ev->zone, x, y);
+              desk = e_zone_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);
@@ -1250,7 +1250,7 @@
                 }
               if (pd->current)
                 {
-                   desk = e_desk_current_get(ev->zone);
+                   desk = e_zone_desk_current_get(ev->zone);
                    new = _pager_desk_find(face, desk);
                    new->current = 1;
                 }
@@ -1319,7 +1319,6 @@
      { 
        _pager_face_enable(face);
      }
-   e_menu_item_toggle_set(mi, face->conf->enabled);
 }
 
 static void
@@ -1330,7 +1329,6 @@
    face = data;
 
    face->conf->scale = e_menu_item_toggle_get(mi);
-   e_menu_item_toggle_set(mi, face->conf->scale);
    e_config_save_queue();
 }
 

Reply via email to