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