Enlightenment CVS committal Author : sebastid 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_hints.c Log Message: Don't need to store if the DESKTOP hint was set on init. If the hint doesn't exist or the desktop doesn't exists, update the hint with our desktop. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.206 retrieving revision 1.207 diff -u -3 -r1.206 -r1.207 --- e_border.c 16 May 2005 15:43:08 -0000 1.206 +++ e_border.c 17 May 2005 12:33:12 -0000 1.207 @@ -2004,22 +2004,18 @@ Ecore_X_Event_Desktop_Change *e; e = ev; - if (e->desk < 0) return 1; bd = e_border_find_by_client_window(e->win); if (bd) { - if (bd->client.netwm.desktop == 0xffffffff) + if (e->desk == 0xffffffff) e_border_stick(bd); else if (e->desk < (bd->zone->desk_x_count * bd->zone->desk_y_count)) { E_Desk *desk; - int x, y; - - y = e->desk / bd->zone->desk_x_count; - x = e->desk - (y * bd->zone->desk_x_count); - desk = e_desk_at_xy_get(bd->zone, x, y); - e_border_desk_set(bd, desk); + desk = e_desk_at_pos_get(bd->zone, e->desk); + if (desk) + e_border_desk_set(bd, desk); } } else =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- e_border.h 17 May 2005 08:30:15 -0000 1.54 +++ e_border.h 17 May 2005 12:33:12 -0000 1.55 @@ -148,7 +148,6 @@ struct { pid_t pid; unsigned int desktop; - unsigned char use_desktop : 1; /* NetWM Window state */ struct { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- e_container.c 17 May 2005 11:57:22 -0000 1.54 +++ e_container.c 17 May 2005 12:33:12 -0000 1.55 @@ -56,8 +56,6 @@ con->h = con->manager->h; if (e_config->use_virtual_roots) { - Ecore_X_Window mwin; - con->win = ecore_x_window_override_new(con->manager->win, con->x, con->y, con->w, con->h); ecore_x_icccm_title_set(con->win, "Enlightenment Container"); ecore_x_window_raise(con->win); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- e_desk.c 13 May 2005 10:09:55 -0000 1.32 +++ e_desk.c 17 May 2005 12:33:12 -0000 1.33 @@ -147,6 +147,23 @@ return zone->desks[x + (y * zone->desk_x_count)]; } +E_Desk * +e_desk_at_pos_get(E_Zone *zone, int pos) +{ + int x, y; + + E_OBJECT_CHECK_RETURN(zone, NULL); + E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL); + + y = pos / zone->desk_x_count; + x = pos - (y * zone->desk_x_count); + + if ((x >= zone->desk_x_count) || (y >= zone->desk_y_count)) + return NULL; + + return zone->desks[x + (y * zone->desk_x_count)]; +} + void e_desk_xy_get(E_Desk *desk, int *x, int *y) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- e_desk.h 9 Apr 2005 00:13:09 -0000 1.13 +++ e_desk.h 17 May 2005 12:33:12 -0000 1.14 @@ -36,6 +36,7 @@ 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 E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos); 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); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- e_hints.c 17 May 2005 08:30:26 -0000 1.24 +++ e_hints.c 17 May 2005 12:33:12 -0000 1.25 @@ -266,6 +266,7 @@ { e_hints_window_state_get(bd); e_hints_window_type_get(bd); + int has; bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win); if (bd->client.icccm.state == ECORE_X_WINDOW_STATE_HINT_NONE) @@ -288,33 +289,36 @@ bd->layer = 100; e_border_raise(bd); + has = 1; if (!ecore_x_netwm_desktop_get(bd->client.win, &bd->client.netwm.desktop)) + has = 0; + if (has) { - bd->client.netwm.use_desktop = 0; - bd->client.netwm.desktop = 0; + if (bd->client.netwm.desktop == 0xffffffff) + e_border_stick(bd); + else if (bd->client.netwm.desktop < (bd->zone->desk_x_count * bd->zone->desk_y_count)) + { + E_Desk *desk; + + desk = e_desk_at_pos_get(bd->zone, bd->client.netwm.desktop); + if (desk) + e_border_desk_set(bd, desk); + } + else + { + /* Update netwm desktop with current desktop */ + e_hints_window_desktop_set(bd); + } } else - bd->client.netwm.use_desktop = 1; + { + /* Update netwm desktop with current desktop */ + e_hints_window_desktop_set(bd); + } + if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid)) bd->client.netwm.pid = -1; - if (bd->client.netwm.desktop == 0xffffffff) - e_border_stick(bd); - else if ((bd->client.netwm.use_desktop) && - (bd->client.netwm.desktop >= 0) && - (bd->client.netwm.desktop < (bd->zone->desk_x_count * bd->zone->desk_y_count))) - { - E_Desk *desk; - int x, y; - - y = bd->client.netwm.desktop / bd->zone->desk_x_count; - x = bd->client.netwm.desktop - (y * bd->zone->desk_x_count); - - desk = e_desk_at_xy_get(bd->zone, x, y); - if (desk) - e_border_desk_set(bd, desk); - } - if (bd->client.netwm.state.sticky) e_border_stick(bd); if (bd->client.netwm.state.shaded) ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs