Enlightenment CVS committal
Author : handyande
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_desk.c e_zone.c e_zone.h
Log Message:
Move apps on desks being removed to theirnearest valid desk
fix a few warnings
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- e_desk.c 8 Jan 2005 17:32:07 -0000 1.12
+++ e_desk.c 8 Jan 2005 21:21:56 -0000 1.13
@@ -97,7 +97,6 @@
desk->visible = 1;
}
-/* FIXME replace e_desk_remove etc with these row / col operations */
void
e_desk_row_add(E_Zone *zone)
{
@@ -107,8 +106,6 @@
void
e_desk_row_remove(E_Zone *zone)
{
- if (zone->desk_y_count < 2)
- return;
e_zone_desk_count_set(zone, zone->desk_x_count, zone->desk_y_count - 1);
}
@@ -121,8 +118,6 @@
void
e_desk_col_remove(E_Zone *zone)
{
- if (zone->desk_x_count < 2)
- return;
e_zone_desk_count_set(zone, zone->desk_x_count - 1, zone->desk_y_count);
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_zone.c 8 Jan 2005 17:32:08 -0000 1.8
+++ e_zone.c 8 Jan 2005 21:21:56 -0000 1.9
@@ -249,43 +249,101 @@
e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count)
{
E_Object **new_desks; /* match the bug in e_zone.h */
- E_Desk *desk;
- int x, y, reshow;
+ E_Desk *desk, *new_desk;
+ int x, y, xx, yy, moved;
+ Evas_List *client;
+ E_Border *bd;
- new_desks =
- malloc(x_count * y_count * sizeof(E_Desk *));
+ xx = x_count;
+ if (xx < 1)
+ xx = 1;
+ yy = y_count;
+ if (yy < 1)
+ yy = 1;
- for (x = 0; x < x_count; x++)
- for(y = 0; y < y_count; y++)
+ 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 * x_count)] = (E_Object *) desk;
+ new_desks[x + (y * xx)] = (E_Object *) desk;
}
-/* FIXME catch thigns that have fallen off the end if we got smaller */
+ /* 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)];
+
+ client = desk->clients;
+ while (client)
+ {
+ bd = (E_Border *) client->data;
+
+ new_desk->clients = evas_list_append(new_desk->clients, bd);
+ bd->desk = new_desk;
+ client = client->next;
+ }
+ evas_list_free(desk->clients);
+ }
+ }
+ 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)];
+
+ client = desk->clients;
+ while (client)
+ {
+ bd = (E_Border *) client->data;
+
+ new_desk->clients = evas_list_append(new_desk->clients, bd);
+ bd->desk = new_desk;
+ client = client->next;
+ }
+ evas_list_free(desk->clients);
+ }
+ }
if (zone->desks)
free(zone->desks);
zone->desks = new_desks;
- zone->desk_x_count = x_count;
- zone->desk_y_count = y_count;
+ zone->desk_x_count = xx;
+ zone->desk_y_count = yy;
- reshow = 0;
- if (zone->desk_x_current >= x_count)
+ moved = 0;
+ if (zone->desk_x_current >= xx)
+ {
+ zone->desk_x_current = xx - 1;
+ moved = 1;
+ }
+ if (zone->desk_y_current >= yy)
{
- zone->desk_x_current = x_count - 1;
- reshow = 1;
+ zone->desk_y_current = yy - 1;
+ moved = 1;
}
- if (zone->desk_y_current >= y_count)
+ if (moved)
+ e_desk_show(e_desk_at_xy_get(zone, xx - 1, yy - 1));
+ else
{
- zone->desk_y_current = y_count - 1;
- reshow = 1;
+ desk = e_desk_current_get(zone);
+ desk->visible = 0;
+ e_desk_show(desk);
}
- if (reshow)
- e_desk_show(e_desk_at_xy_get(zone, x_count - 1, y_count - 1));
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_zone.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_zone.h 8 Jan 2005 17:32:08 -0000 1.5
+++ e_zone.h 8 Jan 2005 21:21:56 -0000 1.6
@@ -31,7 +31,7 @@
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_desks_set(E_Zone *zone, int x_count, int y_count);
+EAPI void e_zone_desk_count_set(E_Zone *zone, int x_count, int y_count);
#endif
-------------------------------------------------------
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