This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository efm2.

View the commit online.

commit 8579e00da37b09fd9b57940f73c130a4a9bcc669
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Thu May 29 11:05:27 2025 +0100

    open + open with disabled if nothing selected
---
 src/efm/efm.c            |  5 +++--
 src/efm/efm_popup_menu.c | 23 ++++++++++++-----------
 2 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/efm/efm.c b/src/efm/efm.c
index 8e25d55..cf1db6b 100644
--- a/src/efm/efm.c
+++ b/src/efm/efm.c
@@ -1977,7 +1977,8 @@ _item_find_call(Evas_Object *obj, const Efm_Menu *m, int index)
                &(m->item[i]));
           return EINA_TRUE;
         }
-      else if (m->item[i].type == EFM_MENU_ITEM_SUBMENU)
+      else if ((m->item[i].type == EFM_MENU_ITEM_SUBMENU) &&
+               (m->item[i].sub))
         {
           if (_item_find_call(obj, m->item[i].sub, index)) return EINA_TRUE;
         }
@@ -2171,7 +2172,7 @@ static void _menu_create_walk(void *data, Evas_Object *obj, const Efm_Menu *m,
               = _menu_icon_radcheck_add(o_menu, icon_col, mi->icon, icon_num);
               elm_object_item_content_set(it, o_table);
             }
-          _menu_create_walk(data, obj, mi->sub, o_menu, it);
+          if (mi->sub) _menu_create_walk(data, obj, mi->sub, o_menu, it);
           o_radio = NULL;
           break;
         case EFM_MENU_ITEM_SEPARATOR:
diff --git a/src/efm/efm_popup_menu.c b/src/efm/efm_popup_menu.c
index c18d84b..e5386cb 100644
--- a/src/efm/efm_popup_menu.c
+++ b/src/efm/efm_popup_menu.c
@@ -314,7 +314,7 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
       ctx->mime = eina_stringshare_add(ic->info.mime);
     }
   m1 = _efm_menu_add("File", "std:file", _cb_menu_file_done, ctx, NULL);
-  _efm_menu_it_normal(m1, "Open", "std:document-open", EINA_FALSE,
+  _efm_menu_it_normal(m1, "Open", "std:document-open", !have_sel,
                       _cb_menu_item_open, ctx, d_main);
   {
     Efreet_Desktop *d;
@@ -323,8 +323,9 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
     const char     *icon = NULL;
 
     // XXX: ask backend to fill in the menu or to augment it?
-    m2 = _efm_menu_add("Open With", NULL, NULL, NULL, NULL);
-    _efm_menu_it_sub(m1, "Open With", NULL, EINA_FALSE, m2);
+    if (have_sel) m2 = _efm_menu_add("Open With", NULL, NULL, NULL, NULL);
+    else m2 = NULL;
+    _efm_menu_it_sub(m1, "Open With", NULL, !have_sel, m2);
     ctx->d_main = d_main;
     if (d_main)
       {
@@ -337,11 +338,11 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
                 icon = buf;
               }
           }
-        _efm_menu_it_normal(m2, d_main->name, icon, EINA_FALSE,
-                            _cb_menu_item_open, ctx, d_main);
+        if (m2) _efm_menu_it_normal(m2, d_main->name, icon, EINA_FALSE,
+                                   _cb_menu_item_open, ctx, d_main);
       }
     if ((ic) && (ic->info.mime)) mimes = efreet_util_desktop_mime_list(ic->info.mime);
-    if ((d_main) && (mimes)) _efm_menu_it_separator(m2);
+    if ((d_main) && (mimes) && (m2)) _efm_menu_it_separator(m2);
     EINA_LIST_FREE(mimes, d)
     {
       if (d == d_main)
@@ -359,13 +360,13 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
               icon = buf;
             }
         }
-      _efm_menu_it_normal(m2, d->name, icon, EINA_FALSE,
-                          _cb_menu_item_open, ctx, d);
+      if (m2) _efm_menu_it_normal(m2, d->name, icon, EINA_FALSE,
+                                 _cb_menu_item_open, ctx, d);
       ctx->desktops = eina_list_append(ctx->desktops, d);
     }
-    if ((d_main) || (mimes)) _efm_menu_it_separator(m2);
-    _efm_menu_it_normal(m2, "Select Other", NULL, EINA_FALSE,
-                        _cb_menu_item_open_all, ctx, NULL);
+    if (((d_main) || (mimes)) && (m2)) _efm_menu_it_separator(m2);
+    if (m2) _efm_menu_it_normal(m2, "Select ...", NULL, EINA_FALSE,
+                               _cb_menu_item_open_all, ctx, NULL);
   }
   // actions
   _efm_menu_it_separator(m1);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to