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.