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 6aa62d54bec8acdecc95fd9c50cc5c2b43b9e9d1
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Thu May 29 10:41:30 2025 +0100

    merge menus (with null or non-null icon passed)
---
 src/efm/efm_popup_menu.c | 92 ++++++++++--------------------------------------
 1 file changed, 19 insertions(+), 73 deletions(-)

diff --git a/src/efm/efm_popup_menu.c b/src/efm/efm_popup_menu.c
index 6530fb5..c18d84b 100644
--- a/src/efm/efm_popup_menu.c
+++ b/src/efm/efm_popup_menu.c
@@ -297,14 +297,18 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
   Popup_Context  *ctx;
   Efm_Menu       *m1, *m2;
   Efreet_Desktop *d_main = NULL;
-  Eina_Bool       dis    = EINA_FALSE;
+  Eina_Bool       have_sel = EINA_FALSE; // have any selected icons
+  Eina_Bool       have_nosel = EINA_FALSE; // have no icons selected at all
 
   printf("POPUP MENU ICON\n");
+  if (_efm_sel_first_get(sd)) have_sel = EINA_TRUE;
+  if (_efm_sel_not_count(sd) != 0) have_nosel = EINA_TRUE;
+
   // XXX what if ic is gone by time menu activated?
   ctx = calloc(1, sizeof(Popup_Context));
   if (!ctx) return NULL;
   ctx->sd = sd;
-  if (ic->info.mime)
+  if ((ic) && (ic->info.mime))
     {
       d_main = mimeapps_handler_find(ic->info.mime);
       ctx->mime = eina_stringshare_add(ic->info.mime);
@@ -336,7 +340,7 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
         _efm_menu_it_normal(m2, d_main->name, icon, EINA_FALSE,
                             _cb_menu_item_open, ctx, d_main);
       }
-    if (ic->info.mime) mimes = efreet_util_desktop_mime_list(ic->info.mime);
+    if ((ic) && (ic->info.mime)) mimes = efreet_util_desktop_mime_list(ic->info.mime);
     if ((d_main) && (mimes)) _efm_menu_it_separator(m2);
     EINA_LIST_FREE(mimes, d)
     {
@@ -367,25 +371,24 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
   _efm_menu_it_separator(m1);
   {
     m2 = _efm_menu_add("Actions", NULL, NULL, NULL, NULL);
-    _efm_menu_it_sub(m1, "Actions", NULL,
-                     EINA_FALSE, m2);
+    _efm_menu_it_sub(m1, "Actions", NULL, EINA_FALSE, m2);
     _efm_menu_it_normal(m2, "Cut", "std:edit-cut",
-                        EINA_FALSE, _cb_menu_item_cut, ctx,
+                        !have_sel, _cb_menu_item_cut, ctx,
                         NULL);
     _efm_menu_it_normal(m2, "Copy", "std:edit-copy",
-                        EINA_FALSE, _cb_menu_item_copy, ctx,
+                        !have_sel, _cb_menu_item_copy, ctx,
                         NULL);
     _efm_menu_it_normal(m2, "Paste", "std:edit-paste",
                         EINA_FALSE, _cb_menu_item_paste, ctx,
                         NULL);
     _efm_menu_it_normal(m2, "Rename", "std:edit-rename",
-                        EINA_FALSE, _cb_menu_item_rename,
+                        !have_sel, _cb_menu_item_rename,
                         ctx, NULL);
     _efm_menu_it_normal(m2, "Trash", "std:delete",
-                        EINA_FALSE, _cb_menu_item_trash, ctx,
+                        !have_sel, _cb_menu_item_trash, ctx,
                         NULL);
     _efm_menu_it_normal(m2, "Delete", "std:close",
-                        EINA_FALSE, _cb_menu_item_delete, ctx,
+                        !have_sel, _cb_menu_item_delete, ctx,
                         NULL);
     _efm_menu_it_separator(m2);
     _efm_menu_it_normal(m2, "Properties", "std:document-properties",
@@ -394,29 +397,25 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
                         EINA_FALSE, _cb_menu_item_mkdir, ctx, NULL);
   }
   _efm_menu_it_separator(m1);
-  // view subdir
+  // view submenu
   {
     m2 = _efm_menu_add("View", NULL, NULL, NULL, NULL);
     _efm_menu_it_sub(m1, "View", NULL, EINA_FALSE, m2);
-    dis = EINA_FALSE;
-    if (_efm_sel_not_count(sd) == 0) dis = EINA_TRUE;
-    _efm_menu_it_normal(m2, "Select All", "std:edit-select-all", dis,
+    _efm_menu_it_normal(m2, "Select All", "std:edit-select-all", !have_nosel,
                         _cb_menu_item_sel_all, ctx, NULL);
-    dis = EINA_FALSE;
-    if (!_efm_sel_first_get(sd)) dis = EINA_TRUE;
-    _efm_menu_it_normal(m2, "Select None", NULL, EINA_FALSE,
+    _efm_menu_it_normal(m2, "Select None", NULL, !have_sel,
                         _cb_menu_item_sel_none, ctx, NULL);
     _efm_menu_it_normal(m2, "Refresh", "std:view-refresh", EINA_FALSE,
                         _cb_menu_item_refresh, ctx, NULL);
     // XXX: sort
-   // XXX: show hidden
+    // XXX: show hidden
   }
   // XXX: need option to remove this for desktop icons
   _efm_menu_it_separator(m1);
   _efm_menu_it_normal(m1, "Close", "std:window-close",
                       EINA_FALSE, _cb_menu_item_close, ctx,
                       NULL);
-  _efm_menu_show(ic->sd->o_smart, m1, x, y);
+  _efm_menu_show(sd->o_smart, m1, x, y);
 
   return m1;
 }
@@ -424,60 +423,7 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
 Efm_Menu *
 _efm_popup_main_menu_add(Smart_Data *sd, Evas_Coord x, Evas_Coord y)
 { // menu click in blank area
-  Popup_Context *ctx;
-  Efm_Menu      *m1, *m2;
-  Icon          *ic;
-  Eina_Bool      dis = EINA_FALSE;
-
-  printf("POPUP MENU\n");
-  ic = _efm_sel_first_get(sd);
-  // if we have selected icons then do the same menu as if first icon menu
-  if (ic) return _efm_popup_icon_menu_add(sd, ic, x, y);
-
-  // nothing was selected so do a simpler menu
-  ctx = calloc(1, sizeof(Popup_Context));
-  if (!ctx) return NULL;
-  ctx->sd = sd;
-
-  m1 = _efm_menu_add("File", "std:file", _cb_menu_file_done, ctx, NULL);
-  // actions
-  _efm_menu_it_separator(m1);
-  {
-    m2 = _efm_menu_add("Actions", NULL, NULL, NULL, NULL);
-    _efm_menu_it_sub(m1, "Actions", NULL, EINA_FALSE, m2);
-    _efm_menu_it_normal(m2, "Paste", "std:edit-paste", EINA_FALSE,
-                        _cb_menu_item_paste, ctx, NULL);
-    _efm_menu_it_separator(m2);
-    // XXX: this is properties of the DIR nmot file
-    _efm_menu_it_normal(m2, "Properties", "std:document-properties",
-                        EINA_FALSE, _cb_menu_item_props, ctx, NULL);
-    _efm_menu_it_normal(m2, "Create Directory", "std:folder-new",
-                        EINA_FALSE, _cb_menu_item_mkdir, ctx, NULL);
-  }
-  _efm_menu_it_separator(m1);
-  // view subdir
-  {
-    m2 = _efm_menu_add("View", NULL, NULL, NULL, NULL);
-    _efm_menu_it_sub(m1, "View", NULL, EINA_FALSE, m2);
-    dis = EINA_FALSE;
-    if (_efm_sel_not_count(sd) == 0) dis = EINA_TRUE;
-    _efm_menu_it_normal(m2, "Select All", "std:edit-select-all",
-                        dis, _cb_menu_item_sel_all, ctx, NULL);
-    dis = EINA_FALSE;
-    if (!_efm_sel_first_get(sd)) dis = EINA_TRUE;
-    _efm_menu_it_normal(m2, "Select None", NULL,
-                        dis, _cb_menu_item_sel_none, ctx, NULL);
-    _efm_menu_it_normal(m2, "Refresh", "std:view-refresh",
-                        EINA_FALSE, _cb_menu_item_refresh, ctx, NULL);
-    // XXX: sort
-    // XXX: show hidden
-  }
-  // XXX: need option to remove this for desktop icons
-  _efm_menu_it_separator(m1);
-  _efm_menu_it_normal(m1, "Close", "std:window-close", EINA_FALSE,
-                      _cb_menu_item_close, ctx, NULL);
-  _efm_menu_show(sd->o_smart, m1, x, y);
-  return m1;
+  return _efm_popup_icon_menu_add(sd, NULL, x, y);
   //  const char  *icstr = _icon_strbuf_icon_def(ic, icbuf);
   //  _efm_menu_it_normal(m2, ic->info.label, icstr, _cb_ic_item5, ic, NULL);
   //  eina_strbuf_free(icbuf);

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

Reply via email to