add toggle for borderless window state to top-level of border menu
authorMike Blumenkrantz <m.blumenkran@samsung.com>
Wed, 8 May 2013 07:55:54 +0000 (08:55 +0100)
committerMike Blumenkrantz <m.blumenkran@samsung.com>
Wed, 8 May 2013 07:55:54 +0000 (08:55 +0100)
ChangeLog
NEWS
src/bin/e_int_border_menu.c

index c35b80e..c3d3e41 100644 (file)
--- 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 949d053..b133d33 100644 (file)
--- 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.
index 3586a1b..ef12f6f 100644 (file)
@@ -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);
@@ -292,6 +308,16 @@ _e_border_menu_cb_border(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNU
 }
 
 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__)
 {
    E_Border *bd;