Only allow borders in normal layers to change stacking from the menu.
Move fullscreen from desk to zone. It is the zone that is fullscreen, and then each desk must set fullscreen state on the zone if requested. SVN revision: 15838
This commit is contained in:
parent
2977b96cd1
commit
6b6f98a2a2
|
@ -563,7 +563,7 @@ e_border_hide(E_Border *bd, int manage)
|
|||
_e_border_move_end(bd);
|
||||
e_zone_flip_coords_handle(bd->zone, -1, -1);
|
||||
}
|
||||
if ((bd->desk->visible) && (bd->fullscreen))
|
||||
if (bd->fullscreen)
|
||||
e_border_unfullscreen(bd);
|
||||
if (bd->resize_mode != RESIZE_NONE)
|
||||
{
|
||||
|
@ -1314,7 +1314,7 @@ e_border_fullscreen(E_Border *bd)
|
|||
bd->client_inset.t = 0;
|
||||
bd->client_inset.b = 0;
|
||||
|
||||
e_desk_fullscreen_set(bd->desk, bd);
|
||||
e_zone_fullscreen_set(bd->zone, 1);
|
||||
|
||||
bd->layer = 200;
|
||||
e_border_raise(bd);
|
||||
|
@ -1352,7 +1352,7 @@ e_border_unfullscreen(E_Border *bd)
|
|||
bd->client_inset.t = bd->client_inset.st;
|
||||
bd->client_inset.b = bd->client_inset.sb;
|
||||
|
||||
e_desk_fullscreen_set(bd->desk, NULL);
|
||||
e_zone_fullscreen_set(bd->zone, 0);
|
||||
|
||||
e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
||||
ecore_evas_show(bd->bg_ecore_evas);
|
||||
|
@ -5690,38 +5690,40 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key)
|
|||
|
||||
m = e_menu_new();
|
||||
bd->border_stacking_menu = m;
|
||||
if (!bd->lock_user_stacking)
|
||||
/* Only allow to change layer for windows in "normal" layers */
|
||||
if ((!bd->lock_user_stacking) &&
|
||||
((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150)))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Always On Top"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_on_top"),
|
||||
"widgets/border/default/stack_on_top");
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Normal"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 100 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_normal, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_normal"),
|
||||
"widgets/border/default/stack_normal");
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Always Below"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 50 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_below, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_below"),
|
||||
"widgets/border/default/stack_below");
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Always On Top"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_on_top"),
|
||||
"widgets/border/default/stack_on_top");
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Normal"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 100 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_normal, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_normal"),
|
||||
"widgets/border/default/stack_normal");
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Always Below"));
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 2);
|
||||
e_menu_item_toggle_set(mi, (bd->layer == 50 ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_below, bd);
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
(char *)e_theme_edje_file_get("base/theme/borders",
|
||||
"widgets/border/default/stack_below"),
|
||||
"widgets/border/default/stack_below");
|
||||
}
|
||||
|
||||
m = e_menu_new();
|
||||
|
@ -6033,9 +6035,6 @@ _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
static void
|
||||
_e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
/* FIXME:
|
||||
* - Remember old layer
|
||||
*/
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
|
@ -6050,9 +6049,6 @@ _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
static void
|
||||
_e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
/* FIXME:
|
||||
* - Remember old layer
|
||||
*/
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
|
@ -6067,9 +6063,6 @@ _e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
static void
|
||||
_e_border_menu_cb_normal(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
/* FIXME:
|
||||
* - Remember old layer
|
||||
*/
|
||||
E_Border *bd;
|
||||
|
||||
bd = data;
|
||||
|
|
|
@ -30,7 +30,6 @@ E_Desk *
|
|||
e_desk_new(E_Zone *zone, int x, int y)
|
||||
{
|
||||
E_Desk *desk;
|
||||
Evas_Object *o;
|
||||
char name[40];
|
||||
|
||||
E_OBJECT_CHECK_RETURN(zone, NULL);
|
||||
|
@ -45,24 +44,6 @@ e_desk_new(E_Zone *zone, int x, int y)
|
|||
snprintf(name, sizeof(name), _("Desktop %d, %d"), x, y);
|
||||
desk->name = strdup(name);
|
||||
|
||||
/* TODO: config the ecore_evas type. */
|
||||
desk->black_ecore_evas = ecore_evas_software_x11_new(NULL, zone->container->win,
|
||||
0, 0, zone->w, zone->h);
|
||||
ecore_evas_software_x11_direct_resize_set(desk->black_ecore_evas, 1);
|
||||
ecore_evas_override_set(desk->black_ecore_evas, 1);
|
||||
ecore_evas_layer_set(desk->black_ecore_evas, 6);
|
||||
|
||||
desk->black_win = ecore_evas_software_x11_window_get(desk->black_ecore_evas);
|
||||
desk->black_evas = ecore_evas_get(desk->black_ecore_evas);
|
||||
|
||||
o = evas_object_rectangle_add(desk->black_evas);
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_color_set(o, 0, 0, 0, 255);
|
||||
ecore_evas_name_class_set(desk->black_ecore_evas, "E", "Black_Window");
|
||||
snprintf(name, sizeof(name), "Enlightenment Black Desk (%d, %d)", desk->x, desk->y);
|
||||
ecore_evas_title_set(desk->black_ecore_evas, name);
|
||||
|
||||
return desk;
|
||||
}
|
||||
|
||||
|
@ -95,11 +76,7 @@ e_desk_show(E_Desk *desk)
|
|||
E_Desk *desk2;
|
||||
|
||||
desk2 = e_desk_at_xy_get(desk->zone,x, y);
|
||||
if (desk2->visible)
|
||||
{
|
||||
desk2->visible = 0;
|
||||
ecore_evas_hide(desk2->black_ecore_evas);
|
||||
}
|
||||
desk2->visible = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -124,12 +101,6 @@ e_desk_show(E_Desk *desk)
|
|||
|
||||
desk->zone->desk_x_current = desk->x;
|
||||
desk->zone->desk_y_current = desk->y;
|
||||
if (desk->fullscreen)
|
||||
{
|
||||
ecore_evas_show(desk->black_ecore_evas);
|
||||
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
||||
e_border_fullscreen(desk->fullscreen);
|
||||
}
|
||||
desk->visible = 1;
|
||||
|
||||
if (was_zone)
|
||||
|
@ -164,22 +135,6 @@ e_desk_last_focused_focus(E_Desk *desk)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
e_desk_fullscreen_set(E_Desk *desk, E_Border *bd)
|
||||
{
|
||||
if ((!desk->fullscreen) && (bd))
|
||||
{
|
||||
ecore_evas_show(desk->black_ecore_evas);
|
||||
e_container_window_raise(desk->zone->container, desk->black_win, 150);
|
||||
desk->fullscreen = bd;
|
||||
}
|
||||
else if ((desk->fullscreen) && (!bd))
|
||||
{
|
||||
ecore_evas_hide(desk->black_ecore_evas);
|
||||
desk->fullscreen = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
e_desk_row_add(E_Zone *zone)
|
||||
{
|
||||
|
|
|
@ -20,13 +20,8 @@ struct _E_Desk
|
|||
char *name;
|
||||
int x, y;
|
||||
char visible : 1;
|
||||
E_Border *fullscreen;
|
||||
|
||||
Evas_Object *bg_object;
|
||||
|
||||
Ecore_Evas *black_ecore_evas;
|
||||
Evas *black_evas;
|
||||
Ecore_X_Window black_win;
|
||||
};
|
||||
|
||||
struct _E_Event_Desk_Show
|
||||
|
@ -40,7 +35,6 @@ EAPI E_Desk *e_desk_new(E_Zone *zone, int x, int y);
|
|||
EAPI void e_desk_name_set(E_Desk *desk, const char *name);
|
||||
EAPI void e_desk_show(E_Desk *desk);
|
||||
EAPI void e_desk_last_focused_focus(E_Desk *desk);
|
||||
EAPI void e_desk_fullscreen_set(E_Desk *desk, E_Border *bd);
|
||||
EAPI E_Desk *e_desk_current_get(E_Zone *zone);
|
||||
EAPI E_Desk *e_desk_at_xy_get(E_Zone *zone, int x, int y);
|
||||
EAPI E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
|
||||
|
|
|
@ -99,6 +99,24 @@ e_zone_new(E_Container *con, int num, int x, int y, int w, int h)
|
|||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_zone_cb_bg_mouse_up, zone);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_zone_cb_bg_mouse_move, zone);
|
||||
|
||||
/* TODO: config the ecore_evas type. */
|
||||
zone->black_ecore_evas = ecore_evas_software_x11_new(NULL, zone->container->win,
|
||||
0, 0, zone->w, zone->h);
|
||||
ecore_evas_software_x11_direct_resize_set(zone->black_ecore_evas, 1);
|
||||
ecore_evas_override_set(zone->black_ecore_evas, 1);
|
||||
ecore_evas_layer_set(zone->black_ecore_evas, 6);
|
||||
|
||||
zone->black_win = ecore_evas_software_x11_window_get(zone->black_ecore_evas);
|
||||
zone->black_evas = ecore_evas_get(zone->black_ecore_evas);
|
||||
|
||||
o = evas_object_rectangle_add(zone->black_evas);
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_color_set(o, 0, 0, 0, 255);
|
||||
ecore_evas_name_class_set(zone->black_ecore_evas, "E", "Black_Window");
|
||||
snprintf(name, sizeof(name), "Enlightenment Black Zone (%d)", zone->num);
|
||||
ecore_evas_title_set(zone->black_ecore_evas, name);
|
||||
|
||||
zone->desk_x_count = 0;
|
||||
zone->desk_y_count = 0;
|
||||
zone->desk_x_current = 0;
|
||||
|
@ -181,6 +199,22 @@ e_zone_move_resize(E_Zone *zone, int x, int y, int w, int h)
|
|||
evas_object_resize(zone->bg_clip_object, w, h);
|
||||
}
|
||||
|
||||
void
|
||||
e_zone_fullscreen_set(E_Zone *zone, int on)
|
||||
{
|
||||
if ((!zone->fullscreen) && (on))
|
||||
{
|
||||
ecore_evas_show(zone->black_ecore_evas);
|
||||
e_container_window_raise(zone->container, zone->black_win, 150);
|
||||
zone->fullscreen = 1;
|
||||
}
|
||||
else if ((zone->fullscreen) && (!on))
|
||||
{
|
||||
ecore_evas_hide(zone->black_ecore_evas);
|
||||
zone->fullscreen = 0;
|
||||
}
|
||||
}
|
||||
|
||||
E_Zone *
|
||||
e_zone_current_get(E_Container *con)
|
||||
{
|
||||
|
|
|
@ -25,6 +25,7 @@ struct _E_Zone
|
|||
* this zone belongs to. */
|
||||
unsigned int num;
|
||||
E_Container *container;
|
||||
int fullscreen;
|
||||
|
||||
Evas_Object *bg_object;
|
||||
Evas_Object *bg_event_object;
|
||||
|
@ -46,6 +47,10 @@ struct _E_Zone
|
|||
|
||||
E_Action *cur_mouse_action;
|
||||
Evas_List *popups;
|
||||
|
||||
Ecore_Evas *black_ecore_evas;
|
||||
Evas *black_evas;
|
||||
Ecore_X_Window black_win;
|
||||
};
|
||||
|
||||
struct _E_Event_Zone_Desk_Count_Set
|
||||
|
@ -69,6 +74,7 @@ EAPI E_Zone *e_zone_new(E_Container *con, int num, int x, int y, int w, int h
|
|||
EAPI void e_zone_move(E_Zone *zone, int x, int y);
|
||||
EAPI void e_zone_resize(E_Zone *zone, int w, int h);
|
||||
EAPI void e_zone_move_resize(E_Zone *zone, int x, int y, int w, int h);
|
||||
EAPI void e_zone_fullscreen_set(E_Zone *zone, int on);
|
||||
EAPI E_Zone *e_zone_current_get(E_Container *con);
|
||||
EAPI void e_zone_bg_reconfigure(E_Zone *zone);
|
||||
EAPI void e_zone_flip_coords_handle(E_Zone *zone, int x, int y);
|
||||
|
|
Loading…
Reference in New Issue