One FIXME down.

SVN revision: 15010
This commit is contained in:
sebastid 2005-05-29 10:08:25 +00:00 committed by sebastid
parent 3bd72d9e10
commit bb9a664fa7
1 changed files with 85 additions and 43 deletions

View File

@ -834,31 +834,73 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
void void
e_hints_window_state_get(E_Border *bd) 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 = 0;
bd->client.netwm.state.modal = bd->client.netwm.state.sticky = 0;
ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MODAL); bd->client.netwm.state.maximized_v = 0;
bd->client.netwm.state.sticky = bd->client.netwm.state.maximized_h = 0;
ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_STICKY); bd->client.netwm.state.shaded = 0;
bd->client.netwm.state.maximized_v = bd->client.netwm.state.skip_taskbar = 0;
ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT); bd->client.netwm.state.skip_pager = 0;
bd->client.netwm.state.maximized_h = bd->client.netwm.state.hidden = 0;
ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ); bd->client.netwm.state.fullscreen = 0;
bd->client.netwm.state.shaded = bd->client.netwm.state.stacking = 0;
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); state = ecore_x_netwm_window_state_get(bd->client.win, &num);
below = ecore_x_netwm_window_state_isset(bd->client.win, ECORE_X_WINDOW_STATE_BELOW); if (state)
bd->client.netwm.state.stacking = (above << 0) + (below << 1); {
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