Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_hints.c Log Message: One FIXME down. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- e_hints.c 28 May 2005 13:22:15 -0000 1.36 +++ e_hints.c 29 May 2005 10:08:25 -0000 1.37 @@ -834,34 +834,76 @@ void e_hints_window_state_get(E_Border *bd) { - int above, below; + int i, num; + Ecore_X_Window_State *state; - /* FIXME: each of these is a round trip. need to make it a single fetch */ - bd->client.netwm.state.modal = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MODAL); - bd->client.netwm.state.sticky = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_STICKY); - bd->client.netwm.state.maximized_v = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT); - bd->client.netwm.state.maximized_h = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ); - bd->client.netwm.state.shaded = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_SHADED); - bd->client.netwm.state.skip_taskbar = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR); - bd->client.netwm.state.skip_pager = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_SKIP_PAGER); - bd->client.netwm.state.hidden = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_HIDDEN); - bd->client.netwm.state.fullscreen = - ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_FULLSCREEN); - - above = ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE); - below = ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_BELOW); - bd->client.netwm.state.stacking = (above << 0) + (below << 1); + bd->client.netwm.state.modal = 0; + bd->client.netwm.state.sticky = 0; + bd->client.netwm.state.maximized_v = 0; + bd->client.netwm.state.maximized_h = 0; + bd->client.netwm.state.shaded = 0; + bd->client.netwm.state.skip_taskbar = 0; + bd->client.netwm.state.skip_pager = 0; + bd->client.netwm.state.hidden = 0; + bd->client.netwm.state.fullscreen = 0; + bd->client.netwm.state.stacking = 0; + + state = ecore_x_netwm_window_state_get(bd->client.win, &num); + if (state) + { + for (i = 0; i < num; i++) + { + switch (state[i]) + { + case ECORE_X_WINDOW_STATE_ICONIFIED: + /* Ignore */ + break; + case ECORE_X_WINDOW_STATE_MODAL: + bd->client.netwm.state.modal = 1; + break; + case ECORE_X_WINDOW_STATE_STICKY: + bd->client.netwm.state.sticky = 1; + break; + case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT: + bd->client.netwm.state.maximized_v = 1; + break; + case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ: + bd->client.netwm.state.maximized_h = 1; + break; + case ECORE_X_WINDOW_STATE_SHADED: + bd->client.netwm.state.shaded = 1; + break; + case ECORE_X_WINDOW_STATE_SKIP_TASKBAR: + bd->client.netwm.state.skip_taskbar = 1; + break; + case ECORE_X_WINDOW_STATE_SKIP_PAGER: + bd->client.netwm.state.skip_pager = 1; + break; + case ECORE_X_WINDOW_STATE_HIDDEN: + bd->client.netwm.state.hidden = 1; + break; + case ECORE_X_WINDOW_STATE_FULLSCREEN: + bd->client.netwm.state.fullscreen = 1; + break; + case ECORE_X_WINDOW_STATE_ABOVE: + bd->client.netwm.state.stacking = E_STACKING_ABOVE; + break; + case ECORE_X_WINDOW_STATE_BELOW: + bd->client.netwm.state.stacking = E_STACKING_BELOW; + break; + case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION: + /* FIXME */ + break; + case ECORE_X_WINDOW_STATE_UNKNOWN: + /* Ignore */ + break; + } + } + free(state); + } } -void + void e_hints_window_visible_set(E_Border *bd) { if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_NORMAL) @@ -876,7 +918,7 @@ } } -void + void e_hints_window_iconic_set(E_Border *bd) { if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_ICONIC) @@ -891,7 +933,7 @@ } } -void + void e_hints_window_hidden_set(E_Border *bd) { if (bd->client.icccm.state != ECORE_X_WINDOW_STATE_HINT_ICONIC) @@ -906,7 +948,7 @@ } } -void + void e_hints_window_shaded_set(E_Border *bd, int on) { if ((!bd->client.netwm.state.shaded) && (on)) @@ -921,28 +963,28 @@ } } -void + void e_hints_window_shade_direction_set(E_Border *bd, E_Direction dir) { ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_SHADE_DIRECTION, &dir, 1); } -E_Direction + E_Direction e_hints_window_shade_direction_get(E_Border *bd) { int ret; E_Direction dir; ret = ecore_x_window_prop_card32_get(bd->client.win, - E_ATOM_SHADE_DIRECTION, - &dir, 1); + E_ATOM_SHADE_DIRECTION, + &dir, 1); if (ret == 1) return dir; return E_DIRECTION_UP; } -void + void e_hints_window_maximized_set(E_Border *bd, int on) { if ((!bd->client.netwm.state.maximized_v) && (on)) @@ -967,7 +1009,7 @@ } } -void + void e_hints_window_fullscreen_set(E_Border *bd, int on) { if ((!bd->client.netwm.state.fullscreen) && (on)) @@ -982,7 +1024,7 @@ } } -void + void e_hints_window_sticky_set(E_Border *bd, int on) { if ((!bd->client.netwm.state.sticky) && (on)) @@ -997,7 +1039,7 @@ } } -void + void e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking) { if (bd->client.netwm.state.stacking == stacking) return; @@ -1021,12 +1063,12 @@ } /* -ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, on); -ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR, on); -ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_PAGER, on); -*/ + ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, on); + ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR, on); + ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_PAGER, on); + */ -void + void e_hints_window_icon_name_get(E_Border *bd) { char *name; @@ -1043,12 +1085,12 @@ bd->changed = 1; } -void + void e_hints_window_desktop_set(E_Border *bd) { unsigned int deskpos[2]; unsigned int current; - + current = (bd->desk->y * bd->zone->desk_x_count) + bd->desk->x; /* if valgrind complains here it is complaining bd->client.netwm.desktop * is an uninitialised variable - but it isn't. it can't be. its part of ------------------------------------------------------- This SF.Net email is sponsored by Yahoo. Introducing Yahoo! Search Developer Network - Create apps using Yahoo! Search APIs Find out how you can build Yahoo! directly into your own Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs