From 219b40545b6b83a9b1077815ecdfabede06612e9 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 8 May 2013 08:55:54 +0100 Subject: [PATCH] add toggle for borderless window state to top-level of border menu --- ChangeLog | 1 + NEWS | 1 + src/bin/e_int_border_menu.c | 28 +++++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c35b80ecf..c3d3e41e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * e_fm2_optimal_size_calc returns bool to indicate whether the returned size can be used * filemanager windows no longer resize to 0x0 when double clicked with no icons present + * border menu now has top-level item to set borderless state 2013-04-26 Mike Blumenkrantz diff --git a/NEWS b/NEWS index 949d05396..b133d33f4 100644 --- a/NEWS +++ b/NEWS @@ -137,6 +137,7 @@ Improvements: * added new modes for notification display on multiple monitors * improve efm mouse movement detection for icons * add check for vmware window in another spot to disable key remapping + * border menu now has top-level item to set borderless state Fixes: * IBar menu didn't allow to configure different icon sources, show contents menu even on empty IBar. diff --git a/src/bin/e_int_border_menu.c b/src/bin/e_int_border_menu.c index 3586a1bbe..ef12f6fc0 100644 --- a/src/bin/e_int_border_menu.c +++ b/src/bin/e_int_border_menu.c @@ -3,6 +3,7 @@ static void _e_border_cb_border_menu_end(void *data, E_Menu *m); static void _e_border_menu_cb_locks(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_remember(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_border(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi); @@ -99,6 +100,7 @@ e_int_border_menu_create(E_Border *bd) Eina_List *l; E_Border_Menu_Hook *h; char buf[128]; + Eina_Bool borderless; if (bd->border_menu) return; @@ -121,6 +123,7 @@ e_int_border_menu_create(E_Border *bd) if (bd->desktop) e_util_desktop_menu_item_icon_add(bd->desktop, 16, mi); } + borderless = bd->borderless || (!bd->client.border.name) || (!e_util_strcmp("borderless", bd->client.border.name)); mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Window")); @@ -171,7 +174,7 @@ e_int_border_menu_create(E_Border *bd) } if ((!bd->lock_user_shade) && (!bd->fullscreen) && (!bd->maximized) && - ((!bd->client.border.name) || (strcmp("borderless", bd->client.border.name)))) + ((!bd->client.border.name) || (!borderless))) { mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Shade")); @@ -184,6 +187,19 @@ e_int_border_menu_create(E_Border *bd) "e/widgets/border/default/shade"); } + if ((!bd->fullscreen) && (!bd->lock_border) && (!bd->shading) && (!bd->shaded)) + { + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Borderless")); + e_menu_item_check_set(mi, 1); + e_menu_item_toggle_set(mi, borderless); + e_menu_item_callback_set(mi, _e_border_menu_cb_borderless, bd); + e_menu_item_icon_edje_set(mi, + e_theme_edje_file_get("base/theme/borders", + "e/widgets/border/default/borderless"), + "e/widgets/border/default/borderless"); + } + if (!bd->lock_close) { mi = e_menu_item_new(m); @@ -291,6 +307,16 @@ _e_border_menu_cb_border(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNU e_configure_registry_call("internal/borders_border", bd->zone->container, buf); } +static void +_e_border_menu_cb_borderless(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi) +{ + E_Border *bd = data; + + BD_CHANGED(bd); + bd->client.border.changed = 1; + bd->borderless = mi->toggle; +} + static void _e_border_menu_cb_close(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__) {