rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=34d56e8424edbd5df33203b1e1dd128a7e1c2b51

commit 34d56e8424edbd5df33203b1e1dd128a7e1c2b51
Author: Andrii Kroitor <[email protected]>
Date:   Tue Jul 5 17:58:05 2016 +0300

    workspace: block shortcuts when context menu is shown
---
 src/bin/ui/workspace/workspace.c | 55 ++++++++++++++++++++++++++++++----------
 1 file changed, 41 insertions(+), 14 deletions(-)

diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 78fe050..2325d82 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -662,26 +662,41 @@ _container_changed(void *data,
 }
 
 static void
-_menu_undo(void *data __UNUSED__,
+_menu_dismissed(void *data,
+                Evas_Object *obj __UNUSED__,
+                void *event_info __UNUSED__)
+{
+   Workspace_Data *wd = data;
+
+   assert(wd != NULL);
+
+   shortcuts_object_check_pop(wd->menu.obj);
+}
+
+static void
+_menu_undo(void *data,
            Evas_Object *obj __UNUSED__,
            void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
    shortcuts_shortcut_send(SHORTCUT_TYPE_UNDO);
 }
 
 static void
-_menu_redo(void *data __UNUSED__,
+_menu_redo(void *data,
            Evas_Object *obj __UNUSED__,
            void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
    shortcuts_shortcut_send(SHORTCUT_TYPE_REDO);
 }
 
 static void
-_menu_rulers_visible(void *data __UNUSED__,
+_menu_rulers_visible(void *data,
                      Evas_Object *obj __UNUSED__,
                      void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
    shortcuts_shortcut_send(SHORTCUT_TYPE_RULERS_SHOW);
 }
 
@@ -690,6 +705,8 @@ _menu_ruler_abs(void *data,
                 Evas_Object *obj __UNUSED__,
                 void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
+
    Workspace_Data *wd = data;
    Scroll_Area *area;
 
@@ -705,6 +722,8 @@ _menu_ruler_rel(void *data,
                 Evas_Object *obj __UNUSED__,
                 void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
+
    Workspace_Data *wd = data;
    Scroll_Area *area;
 
@@ -720,6 +739,8 @@ _menu_rulers_both(void *data,
                   Evas_Object *obj __UNUSED__,
                   void *event_info __UNUSED__)
 {
+   _menu_dismissed(data, NULL, NULL);
+
    Workspace_Data *wd = data;
    Scroll_Area *area;
 
@@ -756,27 +777,33 @@ _menu_cb(void *data,
    Eina_Bool sa, sr;
 
    if (ev->button != 3) return;
-   area = _scroll_area_get(wd);
+   elm_menu_move(wd->menu.obj, ev->canvas.x, ev->canvas.y);
 
-   sa = ewe_ruler_scale_visible_get(area->ruler_h.obj, NULL);
-   sr = ewe_ruler_scale_visible_get(area->ruler_h.obj, 
area->ruler_h.scale_rel);
+   if (!evas_object_visible_get(wd->menu.obj))
+     {
+        area = _scroll_area_get(wd);
 
-   if (sa) elm_radio_value_set(wd->menu.scale_abs, 0);
-   if (sr) elm_radio_value_set(wd->menu.scale_abs, 1);
-   if (sa && sr) elm_radio_value_set(wd->menu.scale_abs, 2);
+        sa = ewe_ruler_scale_visible_get(area->ruler_h.obj, NULL);
+        sr = ewe_ruler_scale_visible_get(area->ruler_h.obj, 
area->ruler_h.scale_rel);
 
-   elm_menu_move(wd->menu.obj, ev->canvas.x, ev->canvas.y);
-   evas_object_show(wd->menu.obj);
+        if (sa) elm_radio_value_set(wd->menu.scale_abs, 0);
+        if (sr) elm_radio_value_set(wd->menu.scale_abs, 1);
+        if (sa && sr) elm_radio_value_set(wd->menu.scale_abs, 2);
+
+        shortcuts_object_push(wd->menu.obj);
+        evas_object_show(wd->menu.obj);
+     }
 }
 
 static void
 _menu_add(Workspace_Data *wd)
 {
    wd->menu.obj = elm_menu_add(ap.win);
-   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Undo"), _menu_undo, "Ctrl-Z", 
NULL, NULL);
-   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Redo"), _menu_redo, "Ctrl-Y", 
NULL, NULL);
+   evas_object_smart_callback_add(wd->menu.obj, "clicked", _menu_dismissed, 
wd);
+   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Undo"), _menu_undo, "Ctrl-Z", 
NULL, wd);
+   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Redo"), _menu_redo, "Ctrl-Y", 
NULL, wd);
    elm_menu_item_separator_add(wd->menu.obj, NULL);
-   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Show rulers"), 
_menu_rulers_visible, NULL, NULL, NULL);
+   MENU_ITEM_ADD(wd->menu.obj, NULL, NULL, _("Show rulers"), 
_menu_rulers_visible, NULL, NULL, wd);
 
 #if !HAVE_TIZEN
    elm_menu_item_separator_add(wd->menu.obj, NULL);

-- 


Reply via email to