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:
sebastid 2005-07-20 13:07:58 +00:00 committed by sebastid
parent 2977b96cd1
commit 6b6f98a2a2
5 changed files with 77 additions and 95 deletions

View File

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

View File

@ -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)
{

View File

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

View File

@ -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)
{

View File

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