again with the tabs!!!!

SVN revision: 55726
This commit is contained in:
Mike Blumenkrantz 2010-12-23 00:28:49 +00:00
parent d3bcd46f2b
commit e82e4a3f2b
1 changed files with 893 additions and 812 deletions

View File

@ -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);
}
}