Enlightenment CVS committal

Author  : xcomputerman
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_border.c e_border.h e_container.c e_desk.c e_desk.h 
        e_int_menus.c e_main.c e_zone.c e_zone.h 


Log Message:
More bugfixes/updates:
- Add subsystem init/shutdown functions for e_desk and e_zone
- Fix bug in desk remove function
- Prevent duplicate desktop names being automatically generated
- When uniconifying, set window desktop to current
- Don't display iconified windows when desktop switching
- Selecting a window in the window list switches to that window's desktop

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -3 -r1.46 -r1.47
--- e_border.c  5 Jan 2005 09:31:55 -0000       1.46
+++ e_border.c  5 Jan 2005 10:37:53 -0000       1.47
@@ -244,6 +244,17 @@
 }
 
 void
+e_border_desk_set(E_Border *bd, E_Desk *desk)
+{
+   E_OBJECT_CHECK(bd);
+   E_OBJECT_CHECK(desk);
+   if (bd->desk == desk) return;
+   bd->desk->clients = evas_list_remove(bd->desk->clients, bd);
+   desk->clients = evas_list_append(desk->clients, bd);
+   bd->desk = desk;
+}
+
+void
 e_border_show(E_Border *bd)
 {
    E_OBJECT_CHECK(bd);
@@ -610,10 +621,15 @@
 void
 e_border_uniconify(E_Border *bd)
 {
+   E_Desk *desk;
+   
    E_OBJECT_CHECK(bd);
    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);
        bd->iconic = 0;
        e_border_show(bd);
        e_iconify_border_remove(bd);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- e_border.h  3 Jan 2005 09:34:24 -0000       1.14
+++ e_border.h  5 Jan 2005 10:37:53 -0000       1.15
@@ -189,6 +189,7 @@
 EAPI void      e_border_free(E_Border *bd);
 EAPI void      e_border_ref(E_Border *bd);
 EAPI void      e_border_unref(E_Border *bd);
+EAPI void      e_border_desk_set(E_Border *bd, E_Desk *desk);
 EAPI void      e_border_show(E_Border *bd);
 EAPI void      e_border_hide(E_Border *bd);
 EAPI void      e_border_move(E_Border *bd, int x, int y);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- e_container.c       5 Jan 2005 08:30:25 -0000       1.15
+++ e_container.c       5 Jan 2005 10:37:53 -0000       1.16
@@ -20,12 +20,14 @@
 static void _e_container_event_container_resize_free(void *data, void *ev);
 
 int E_EVENT_CONTAINER_RESIZE = 0;
+static int container_count;
 
 /* externally accessible functions */
 int
 e_container_init(void)
 {
    E_EVENT_CONTAINER_RESIZE = ecore_event_type_new();
+   container_count = 0;
    return 1;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_desk.c    5 Jan 2005 09:31:56 -0000       1.8
+++ e_desk.c    5 Jan 2005 10:37:53 -0000       1.9
@@ -9,6 +9,20 @@
  */
 
 static void _e_desk_free(E_Desk *desk);
+static int desk_count;
+
+int
+e_desk_init(void)
+{
+   desk_count = 0;
+   return 1;
+}
+
+int
+e_desk_shutdown(void)
+{
+   return 1;
+}
 
 E_Desk *
 e_desk_new(E_Zone *zone)
@@ -23,7 +37,7 @@
 
    desk->clients = NULL;
    desk->zone = zone;
-   desk->num = evas_list_count(zone->desks) + 1;
+   desk->num = ++desk_count;
    snprintf(name, sizeof(name), "Desktop %d", desk->num);
    desk->name = strdup(name);
    e_object_ref(E_OBJECT(zone));
@@ -53,7 +67,7 @@
      {
        E_Border *bd = l->data;
 
-       if (bd->desk->zone == desk->zone)
+       if (bd->desk->zone == desk->zone && !bd->iconic)
          {
             if (bd->desk == desk)
               {
@@ -83,7 +97,7 @@
    E_OBJECT_CHECK(desk);
    if (evas_list_count(desk->zone->desks) < 2)
      return;
-   l = evas_list_find(desk->zone->desks, desk);
+   l = evas_list_find_list(desk->zone->desks, desk);
    l = l->prev;
    if (!l) l = evas_list_last(desk->zone->desks);
    previous = l->data;
@@ -91,10 +105,11 @@
    for (l = desk->clients; l; l = l->next)
      {
        E_Border *bd = l->data;
-       bd->desk = previous;
+       e_border_desk_set(bd, previous);
      }
    desk->zone->desks = evas_list_remove(desk->zone->desks, desk);
-   e_desk_show(previous);
+   if (desk->visible)
+     e_desk_show(previous);
    
    evas_list_free(desk->clients);
    e_object_del(E_OBJECT(desk));
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_desk.h    3 Jan 2005 22:04:04 -0000       1.3
+++ e_desk.h    5 Jan 2005 10:37:53 -0000       1.4
@@ -17,6 +17,8 @@
    Evas_List           *clients;
 };
 
+EAPI int          e_desk_init(void);
+EAPI int          e_desk_shutdown(void);
 EAPI E_Desk      *e_desk_new(E_Zone *zone);
 EAPI void         e_desk_name_set(E_Desk *desk, const char *name);
 EAPI void         e_desk_show(E_Desk *desk);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- e_int_menus.c       5 Jan 2005 08:30:25 -0000       1.19
+++ e_int_menus.c       5 Jan 2005 10:37:53 -0000       1.20
@@ -353,6 +353,7 @@
        E_Desk *desk;
        E_Zone *zone = e_zone_current_get(root->con);
        desk = e_desk_new(zone);
+       e_desk_show(desk);
      }
 }
 
@@ -368,7 +369,15 @@
        
        zone = e_zone_current_get(root->con);
        desk = e_desk_current_get(zone);
-       e_desk_remove(desk);
+       
+       if (evas_list_count(zone->desks) > 1)
+         {
+            e_desk_remove(desk);
+         }
+       else
+         {
+            e_error_dialog_show("Enlightenment", "You cannot remove the last 
desktop.");
+         }
      }
 }
 
@@ -441,6 +450,7 @@
 
    if (bd->iconic) e_border_uniconify(bd);
 
+   e_desk_show(bd->desk);
    e_border_raise(bd);
    e_border_focus_set(bd, 1, 1);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- e_main.c    5 Jan 2005 09:09:03 -0000       1.21
+++ e_main.c    5 Jan 2005 10:37:53 -0000       1.22
@@ -493,6 +493,8 @@
 
    if (!e_manager_init()) return 0;
    if (!e_container_init()) return 0;
+   if (!e_zone_init()) return 0;
+   if (!e_desk_init()) return 0;
    
    num = 0;
    roots = ecore_x_window_root_list(&num);
@@ -560,6 +562,8 @@
 static int
 _e_main_screens_shutdown(void)
 {
+   e_desk_shutdown();
+   e_zone_shutdown();
    e_container_shutdown();
    e_manager_shutdown();
    return 1;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_zone.c    4 Jan 2005 01:32:23 -0000       1.4
+++ e_zone.c    5 Jan 2005 10:37:53 -0000       1.5
@@ -12,6 +12,21 @@
 static void _e_zone_cb_bg_mouse_up(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 static void _e_zone_cb_bg_mouse_move(void *data, Evas *evas, Evas_Object *obj, 
void *event_info);
 
+static int zone_count;
+
+int
+e_zone_init(void)
+{
+   zone_count = 0;
+   return 1;
+}
+
+int
+e_zone_shutdown(void)
+{
+   return 1;
+}
+
 E_Zone *
 e_zone_new(E_Container *con, int x, int y, int w, int h)
 {
@@ -21,8 +36,6 @@
    zone = E_OBJECT_ALLOC(E_Zone, _e_zone_free);
    if (!zone) return NULL;
 
-   printf("NEW ZONE! %d %d %d %d\n", x, y, w, h);
-
    zone->container = con;
    zone->name = NULL;
 
@@ -30,7 +43,7 @@
    zone->y = y;
    zone->w = w;
    zone->h = h;
-   zone->num = evas_list_count(con->zones) + 1;
+   zone->num = ++zone_count;
 
    e_object_ref(E_OBJECT(con));
    con->zones = evas_list_append(con->zones, zone);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_zone.h    4 Jan 2005 01:51:27 -0000       1.2
+++ e_zone.h    5 Jan 2005 10:37:53 -0000       1.3
@@ -20,6 +20,8 @@
 
 };
 
+EAPI int        e_zone_init(void);
+EAPI int        e_zone_shutdown(void);
 EAPI E_Zone    *e_zone_new(E_Container *con, int x, int y, int w, int h);
 EAPI void       e_zone_move(E_Zone *zone, int x, int y);
 EAPI void       e_zone_resize(E_Zone *zone, int w, int h);




-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to