diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 434c0373e..ecb1407f2 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -85,6 +85,7 @@ static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi); static void _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); static void _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi); @@ -1252,7 +1253,11 @@ e_border_fullscreen(E_Border *bd) if ((bd->maximized) || (bd->shaded) || (bd->shading)) return; if (!bd->fullscreen) { + int x, y, w, h; // printf("FULLSCREEEN!\n"); + /* make container bg black and show it */ + e_container_bg_black(bd->zone->container); + bd->saved.x = bd->x; bd->saved.y = bd->y; bd->saved.w = bd->w; @@ -1262,11 +1267,14 @@ e_border_fullscreen(E_Border *bd) bd->layer = 200; e_border_raise(bd); - e_border_move_resize(bd, - bd->zone->x - bd->client_inset.l, - bd->zone->y - bd->client_inset.t, - bd->zone->w + bd->client_inset.l + bd->client_inset.r, - bd->zone->h + bd->client_inset.t + bd->client_inset.b); + x = bd->zone->x - bd->client_inset.l; + y = bd->zone->y - bd->client_inset.t; + w = bd->zone->w + bd->client_inset.l + bd->client_inset.r; + h = bd->zone->h + bd->client_inset.t + bd->client_inset.b; + _e_border_resize_limit(bd, &w, &h); + /* center x */ + x = x + (bd->zone->w + bd->client_inset.l + bd->client_inset.r - w) / 2; + e_border_move_resize(bd, x, y, w, h); bd->fullscreen = 1; bd->changes.pos = 1; @@ -1287,6 +1295,9 @@ e_border_unfullscreen(E_Border *bd) if (bd->fullscreen) { // printf("UNFULLSCREEEN!\n"); + /* make container bg white and hide it */ + e_container_bg_white(bd->zone->container); + e_hints_window_fullscreen_set(bd, 0); bd->fullscreen = 0; @@ -4589,6 +4600,16 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key) "widgets/border/default/borderless"), "widgets/border/default/borderless"); + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Fullscreen")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, bd->fullscreen); + e_menu_item_callback_set(mi, _e_border_menu_cb_fullscreen, bd); + e_menu_item_icon_edje_set(mi, + (char *)e_theme_edje_file_get("base/theme/borders", + "widgets/border/default/fullscreen"), + "widgets/border/default/fullscreen"); + mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); @@ -4742,11 +4763,11 @@ _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi) } e_container_border_raise(bd); } + static void _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi) { E_Border *bd; - int toggle; bd = data; @@ -4763,6 +4784,21 @@ _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi) bd->changed = 1; } +static void +_e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi) +{ + E_Border *bd; + int toggle; + + bd = data; + if (!bd) return; + + toggle = e_menu_item_toggle_get(mi); + if (toggle) + e_border_fullscreen(bd); + else + e_border_unfullscreen(bd); +} static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi) diff --git a/src/bin/e_container.c b/src/bin/e_container.c index fc4ad481b..28a26a0c6 100644 --- a/src/bin/e_container.c +++ b/src/bin/e_container.c @@ -292,6 +292,26 @@ e_container_lower(E_Container *con) #endif } +void +e_container_bg_black(E_Container *con) +{ + Evas_Object *o; + + o = con->bg_blank_object; + evas_object_layer_set(o, 100); + evas_object_color_set(o, 0, 0, 0, 255); +} + +void +e_container_bg_white(E_Container *con) +{ + Evas_Object *o; + + o = con->bg_blank_object; + evas_object_layer_set(o, -100); + evas_object_color_set(o, 255, 255, 255, 255); +} + E_Zone * e_container_zone_at_point_get(E_Container *con, int x, int y) { diff --git a/src/bin/e_container.h b/src/bin/e_container.h index ae4a84a03..99e6b16a3 100644 --- a/src/bin/e_container.h +++ b/src/bin/e_container.h @@ -98,6 +98,9 @@ EAPI void e_container_resize(E_Container *con, int w, int h); EAPI void e_container_move_resize(E_Container *con, int x, int y, int w, int h); EAPI void e_container_raise(E_Container *con); EAPI void e_container_lower(E_Container *con); +EAPI void e_container_bg_black(E_Container *con); +EAPI void e_container_bg_white(E_Container *con); + EAPI E_Border_List *e_container_border_list_first(E_Container *con); EAPI E_Border_List *e_container_border_list_last(E_Container *con);