e: Adjust fullscreen stacking

Allow popups above fullscreen, unless presentation mode is set.

SVN revision: 77317
This commit is contained in:
Sebastian Dransfeld 2012-10-02 12:53:38 +00:00
parent 4b9e05d0fc
commit beb76614ac
4 changed files with 46 additions and 7 deletions

View File

@ -93,6 +93,9 @@ static Eina_Bool _e_border_cb_efreet_cache_update(void *data,
static Eina_Bool _e_border_cb_config_icon_theme(void *data,
int ev_type,
void *ev);
static Eina_Bool _e_border_cb_config_mode(void *data,
int ev_type,
void *ev);
static Eina_Bool _e_border_cb_pointer_warp(void *data,
int ev_type,
@ -326,6 +329,7 @@ e_border_init(void)
handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_UPDATE, _e_border_cb_efreet_cache_update, NULL));
handlers = eina_list_append(handlers, ecore_event_handler_add(EFREET_EVENT_ICON_CACHE_UPDATE, _e_border_cb_efreet_cache_update, NULL));
handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_CONFIG_ICON_THEME, _e_border_cb_config_icon_theme, NULL));
handlers = eina_list_append(handlers, ecore_event_handler_add(E_EVENT_CONFIG_MODE_CHANGED, _e_border_cb_config_mode, NULL));
if (!borders_hash) borders_hash = eina_hash_string_superfast_new(NULL);
@ -1722,8 +1726,6 @@ e_border_layer_set(E_Border *bd,
bd->saved.layer = layer;
return;
}
if (bd->layer != E_LAYER_FULLSCREEN)
bd->saved.layer = bd->layer;
bd->layer = layer;
if (e_config->transient.layer)
{
@ -2970,6 +2972,7 @@ e_border_fullscreen(E_Border *bd,
bd->desk->fullscreen_borders++;
/* e_zone_fullscreen_set(bd->zone, 1); */
bd->saved.layer = bd->layer;
if (!e_config->allow_above_fullscreen)
e_border_layer_set(bd, E_LAYER_FULLSCREEN);
@ -6147,6 +6150,41 @@ _e_border_cb_config_icon_theme(void *data __UNUSED__,
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool _e_border_cb_config_mode(void *data __UNUSED__,
int ev_type __UNUSED__,
void *ev __UNUSED__)
{
Eina_List *l;
E_Border *bd;
/* move fullscreen borders above everything */
if (e_config->mode.presentation)
{
EINA_LIST_FOREACH(borders, l, bd)
{
if ((bd->fullscreen) || (bd->need_fullscreen) || (bd->was_fullscreen))
{
bd->fullscreen = 0;
e_border_layer_set(bd, E_LAYER_TOP);
bd->fullscreen = 1;
}
}
}
else
{
EINA_LIST_FOREACH(borders, l, bd)
{
if ((bd->fullscreen) || (bd->need_fullscreen) || (bd->was_fullscreen))
{
bd->fullscreen = 0;
e_border_layer_set(bd, E_LAYER_FULLSCREEN);
bd->fullscreen = 1;
}
}
}
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_e_border_cb_pointer_warp(void *data __UNUSED__,
int ev_type __UNUSED__,

View File

@ -17,9 +17,10 @@ typedef enum _E_Layer
E_LAYER_BELOW = 50,
E_LAYER_NORMAL = 100,
E_LAYER_ABOVE = 150,
E_LAYER_POPUP = 200,
E_LAYER_EDGE = 250,
E_LAYER_FULLSCREEN = 300,
E_LAYER_EDGE = 200,
E_LAYER_FULLSCREEN = 250,
E_LAYER_EDGE_FULLSCREEN = 300,
E_LAYER_POPUP = 300,
E_LAYER_TOP = 350,
E_LAYER_DRAG = 400,
E_LAYER_PRIO = 450

View File

@ -1125,7 +1125,7 @@ e_zone_edge_new(E_Zone_Edge edge)
break;
}
if (e_config->fullscreen_flip)
e_zone_edge_win_layer_set(zone, E_LAYER_TOP);
e_zone_edge_win_layer_set(zone, E_LAYER_EDGE_FULLSCREEN);
else
e_zone_edge_win_layer_set(zone, E_LAYER_EDGE);
}

View File

@ -225,7 +225,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
if (cfdata->fullscreen_flip != e_config->fullscreen_flip)
{
if (cfdata->fullscreen_flip)
layer = E_LAYER_TOP;
layer = E_LAYER_EDGE_FULLSCREEN;
else
layer = E_LAYER_EDGE;