forked from enlightenment/enlightenment
parent
d3bcd46f2b
commit
e82e4a3f2b
|
@ -125,7 +125,7 @@ e_hints_init(void)
|
|||
&win, 1);
|
||||
if (nwins > 0)
|
||||
{
|
||||
for (;;)
|
||||
for (;; )
|
||||
{
|
||||
nwins = ecore_x_window_prop_window_get(win,
|
||||
ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK,
|
||||
|
@ -398,7 +398,8 @@ e_hints_client_stacking_set(void)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_active_window_set(E_Manager *man, E_Border *bd)
|
||||
e_hints_active_window_set(E_Manager *man,
|
||||
E_Border *bd)
|
||||
{
|
||||
E_OBJECT_CHECK(man);
|
||||
if (bd)
|
||||
|
@ -585,7 +586,7 @@ e_hints_window_init(E_Border *bd)
|
|||
e_border_center(bd);
|
||||
}
|
||||
*/
|
||||
/* Update stacking */
|
||||
/* Update stacking */
|
||||
e_hints_client_list_set();
|
||||
e_hints_client_stacking_set();
|
||||
}
|
||||
|
@ -620,9 +621,11 @@ e_hints_window_state_set(E_Border *bd)
|
|||
case E_STACKING_ABOVE:
|
||||
state[num++] = ECORE_X_WINDOW_STATE_ABOVE;
|
||||
break;
|
||||
|
||||
case E_STACKING_BELOW:
|
||||
state[num++] = ECORE_X_WINDOW_STATE_BELOW;
|
||||
break;
|
||||
|
||||
case E_STACKING_NONE:
|
||||
default:
|
||||
break;
|
||||
|
@ -708,7 +711,8 @@ e_hints_window_type_get(E_Border *bd)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
||||
e_hints_window_state_update(E_Border *bd,
|
||||
Ecore_X_Window_State state,
|
||||
Ecore_X_Window_State_Action action)
|
||||
{
|
||||
switch (state)
|
||||
|
@ -719,6 +723,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
if (bd->lock_client_iconify) return;
|
||||
e_border_iconify(bd);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_MODAL:
|
||||
switch (action)
|
||||
{
|
||||
|
@ -730,6 +735,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!bd->client.netwm.state.modal)
|
||||
{
|
||||
|
@ -738,6 +744,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
bd->client.netwm.state.modal = !bd->client.netwm.state.modal;
|
||||
bd->client.netwm.update.state = 1;
|
||||
|
@ -745,6 +752,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_STICKY:
|
||||
if (bd->lock_client_sticky) return;
|
||||
switch (action)
|
||||
|
@ -752,9 +760,11 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
|
||||
e_border_unstick(bd);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
e_border_stick(bd);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->sticky)
|
||||
e_border_unstick(bd);
|
||||
|
@ -763,6 +773,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
||||
if (bd->lock_client_maximize) return;
|
||||
switch (action)
|
||||
|
@ -771,10 +782,12 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
if (bd->maximized & E_MAXIMIZE_VERTICAL)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_VERTICAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!(bd->maximized & E_MAXIMIZE_VERTICAL))
|
||||
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_VERTICAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->maximized & E_MAXIMIZE_VERTICAL)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_VERTICAL);
|
||||
|
@ -783,6 +796,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
||||
if (bd->lock_client_maximize) return;
|
||||
switch (action)
|
||||
|
@ -791,10 +805,12 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
if (bd->maximized & E_MAXIMIZE_HORIZONTAL)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_HORIZONTAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!(bd->maximized & E_MAXIMIZE_HORIZONTAL))
|
||||
e_border_maximize(bd, (e_config->maximize_policy & E_MAXIMIZE_TYPE) | E_MAXIMIZE_HORIZONTAL);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->maximized & E_MAXIMIZE_HORIZONTAL)
|
||||
e_border_unmaximize(bd, E_MAXIMIZE_HORIZONTAL);
|
||||
|
@ -803,6 +819,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_SHADED:
|
||||
if (bd->lock_client_shade) return;
|
||||
switch (action)
|
||||
|
@ -810,9 +827,11 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
|
||||
e_border_unshade(bd, e_hints_window_shade_direction_get(bd));
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
e_border_shade(bd, e_hints_window_shade_direction_get(bd));
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->shaded)
|
||||
e_border_unshade(bd, e_hints_window_shade_direction_get(bd));
|
||||
|
@ -821,6 +840,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
|
||||
switch (action)
|
||||
{
|
||||
|
@ -832,6 +852,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!bd->client.netwm.state.skip_taskbar)
|
||||
{
|
||||
|
@ -840,6 +861,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
bd->client.netwm.state.skip_taskbar = !bd->client.netwm.state.skip_taskbar;
|
||||
bd->client.netwm.update.state = 1;
|
||||
|
@ -847,6 +869,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_SKIP_PAGER:
|
||||
switch (action)
|
||||
{
|
||||
|
@ -858,6 +881,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
if (!bd->client.netwm.state.skip_pager)
|
||||
{
|
||||
|
@ -866,6 +890,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
bd->changed = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
bd->client.netwm.state.skip_pager = !bd->client.netwm.state.skip_pager;
|
||||
bd->client.netwm.update.state = 1;
|
||||
|
@ -873,9 +898,11 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_HIDDEN:
|
||||
/* Ignore */
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_FULLSCREEN:
|
||||
if (bd->lock_client_fullscreen) return;
|
||||
switch (action)
|
||||
|
@ -883,9 +910,11 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
case ECORE_X_WINDOW_STATE_ACTION_REMOVE:
|
||||
e_border_unfullscreen(bd);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
e_border_fullscreen(bd, e_config->fullscreen_policy);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->fullscreen)
|
||||
e_border_unfullscreen(bd);
|
||||
|
@ -894,6 +923,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ABOVE:
|
||||
if (bd->lock_client_stacking) return;
|
||||
/* FIXME: Should this require that BELOW is set to 0 first, or just
|
||||
|
@ -904,10 +934,12 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
e_border_layer_set(bd, 100);
|
||||
e_hints_window_stacking_set(bd, E_STACKING_NONE);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
e_hints_window_stacking_set(bd, E_STACKING_ABOVE);
|
||||
e_border_layer_set(bd, 150);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->layer == 150)
|
||||
{
|
||||
|
@ -922,6 +954,7 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_BELOW:
|
||||
if (bd->lock_client_stacking) return;
|
||||
/* FIXME: Should this require that ABOVE is set to 0 first, or just
|
||||
|
@ -932,10 +965,12 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
e_hints_window_stacking_set(bd, E_STACKING_NONE);
|
||||
e_border_layer_set(bd, 100);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_ADD:
|
||||
e_hints_window_stacking_set(bd, E_STACKING_BELOW);
|
||||
e_border_layer_set(bd, 50);
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_ACTION_TOGGLE:
|
||||
if (bd->layer == 50)
|
||||
{
|
||||
|
@ -950,9 +985,11 @@ e_hints_window_state_update(E_Border *bd, Ecore_X_Window_State state,
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
|
||||
/* FIXME */
|
||||
break;
|
||||
|
||||
case ECORE_X_WINDOW_STATE_UNKNOWN:
|
||||
/* Ignore */
|
||||
break;
|
||||
|
@ -986,42 +1023,55 @@ e_hints_window_state_get(E_Border *bd)
|
|||
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;
|
||||
|
@ -1032,32 +1082,44 @@ e_hints_window_state_get(E_Border *bd)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_allowed_action_update(E_Border *bd __UNUSED__, Ecore_X_Action action)
|
||||
e_hints_allowed_action_update(E_Border *bd __UNUSED__,
|
||||
Ecore_X_Action action)
|
||||
{
|
||||
switch (action)
|
||||
{
|
||||
case ECORE_X_ACTION_MOVE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_RESIZE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MINIMIZE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_SHADE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_STICK:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MAXIMIZE_HORZ:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MAXIMIZE_VERT:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_FULLSCREEN:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_CHANGE_DESKTOP:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_CLOSE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_ABOVE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_BELOW:
|
||||
break;
|
||||
}
|
||||
|
@ -1091,35 +1153,46 @@ e_hints_allowed_action_get(E_Border *bd)
|
|||
case ECORE_X_ACTION_MOVE:
|
||||
bd->client.netwm.action.move = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_RESIZE:
|
||||
bd->client.netwm.action.resize = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MINIMIZE:
|
||||
bd->client.netwm.action.minimize = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_SHADE:
|
||||
bd->client.netwm.action.shade = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_STICK:
|
||||
bd->client.netwm.action.stick = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MAXIMIZE_HORZ:
|
||||
bd->client.netwm.action.maximized_h = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_MAXIMIZE_VERT:
|
||||
bd->client.netwm.action.maximized_v = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_FULLSCREEN:
|
||||
bd->client.netwm.action.fullscreen = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_CHANGE_DESKTOP:
|
||||
bd->client.netwm.action.change_desktop = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_CLOSE:
|
||||
bd->client.netwm.action.close = 1;
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_ABOVE:
|
||||
break;
|
||||
|
||||
case ECORE_X_ACTION_BELOW:
|
||||
break;
|
||||
}
|
||||
|
@ -1177,7 +1250,8 @@ e_hints_window_hidden_set(E_Border *bd)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_shaded_set(E_Border *bd, int on)
|
||||
e_hints_window_shaded_set(E_Border *bd,
|
||||
int on)
|
||||
{
|
||||
if ((!bd->client.netwm.state.shaded) && (on))
|
||||
{
|
||||
|
@ -1194,7 +1268,8 @@ e_hints_window_shaded_set(E_Border *bd, int on)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_shade_direction_set(E_Border *bd, E_Direction dir)
|
||||
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);
|
||||
}
|
||||
|
@ -1253,7 +1328,9 @@ e_hints_window_size_get(E_Border *bd)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_maximized_set(E_Border *bd, int horizontal, int vertical)
|
||||
e_hints_window_maximized_set(E_Border *bd,
|
||||
int horizontal,
|
||||
int vertical)
|
||||
{
|
||||
if ((horizontal) && (!bd->client.netwm.state.maximized_h))
|
||||
{
|
||||
|
@ -1282,7 +1359,8 @@ e_hints_window_maximized_set(E_Border *bd, int horizontal, int vertical)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_fullscreen_set(E_Border *bd, int on)
|
||||
e_hints_window_fullscreen_set(E_Border *bd,
|
||||
int on)
|
||||
{
|
||||
if ((!bd->client.netwm.state.fullscreen) && (on))
|
||||
{
|
||||
|
@ -1299,7 +1377,8 @@ e_hints_window_fullscreen_set(E_Border *bd, int on)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_sticky_set(E_Border *bd, int on)
|
||||
e_hints_window_sticky_set(E_Border *bd,
|
||||
int on)
|
||||
{
|
||||
if ((!bd->client.netwm.state.sticky) && (on))
|
||||
{
|
||||
|
@ -1316,7 +1395,8 @@ e_hints_window_sticky_set(E_Border *bd, int on)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking)
|
||||
e_hints_window_stacking_set(E_Border *bd,
|
||||
E_Stacking stacking)
|
||||
{
|
||||
if (bd->client.netwm.state.stacking == stacking) return;
|
||||
bd->client.netwm.update.state = 1;
|
||||
|
@ -1441,3 +1521,4 @@ e_hints_scale_update(void)
|
|||
free(roots);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue