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 enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs