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 3bf8c9745c0e8553b685a994557e54a302d39daf
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
AuthorDate: Thu May 29 08:53:50 2025 +0100
add disabled flag for menu items
---
src/efm/efm.c | 4 +++
src/efm/efm.h | 3 +-
src/efm/efm_dnd.c | 6 ++--
src/efm/efm_menu.c | 31 ++++++++++---------
src/efm/efm_popup_menu.c | 78 ++++++++++++++++++++++++++++--------------------
src/efm/efm_private.h | 45 +++++++++++++++-------------
6 files changed, 95 insertions(+), 72 deletions(-)
diff --git a/src/efm/efm.c b/src/efm/efm.c
index 25c229a..8e25d55 100644
--- a/src/efm/efm.c
+++ b/src/efm/efm.c
@@ -2152,6 +2152,7 @@ static void _menu_create_walk(void *data, Evas_Object *obj, const Efm_Menu *m,
case EFM_MENU_ITEM_NORMAL:
it = elm_menu_item_add(o_menu, it_parent, NULL, mi->label,
_cb_menu_item, mi);
+ if (mi->disabled) elm_object_item_disabled_set(it, EINA_TRUE);
if (do_table)
{
o_table
@@ -2163,6 +2164,7 @@ static void _menu_create_walk(void *data, Evas_Object *obj, const Efm_Menu *m,
case EFM_MENU_ITEM_SUBMENU:
it = elm_menu_item_add(o_menu, it_parent, NULL, mi->label,
NULL, NULL);
+ if (mi->disabled) elm_object_item_disabled_set(it, EINA_TRUE);
if (do_table)
{
o_table
@@ -2179,6 +2181,7 @@ static void _menu_create_walk(void *data, Evas_Object *obj, const Efm_Menu *m,
case EFM_MENU_ITEM_CHECK:
it = elm_menu_item_add(o_menu, it_parent, NULL, mi->label,
_cb_menu_item, mi);
+ if (mi->disabled) elm_object_item_disabled_set(it, EINA_TRUE);
if (do_table)
{
o_table
@@ -2194,6 +2197,7 @@ static void _menu_create_walk(void *data, Evas_Object *obj, const Efm_Menu *m,
case EFM_MENU_ITEM_RADIO:
it = elm_menu_item_add(o_menu, it_parent, NULL, mi->label,
_cb_menu_item, mi);
+ if (mi->disabled) elm_object_item_disabled_set(it, EINA_TRUE);
if (do_table)
{
o_table
diff --git a/src/efm/efm.h b/src/efm/efm.h
index 30043fb..fc884bd 100644
--- a/src/efm/efm.h
+++ b/src/efm/efm.h
@@ -52,7 +52,8 @@ struct _Efm_Menu_Item
const char *label;
const char *icon;
int index;
- Eina_Bool selected;
+ Eina_Bool disabled : 1;
+ Eina_Bool selected : 1;
Efm_Menu *sub;
void *private1; // private to efm - ignore
void *private2; // private to efm - ignore
diff --git a/src/efm/efm_dnd.c b/src/efm/efm_dnd.c
index 6bfb638..f6de12e 100644
--- a/src/efm/efm_dnd.c
+++ b/src/efm/efm_dnd.c
@@ -368,9 +368,9 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev)
{ // store tmp as urilist and pop up ask menu
Efm_Menu *m
= _efm_menu_add("What to do?", NULL, _cb_menu_dnd_ask_done, sd, NULL);
- _efm_menu_it_normal(m, "Copy", "std:folder-copy", _cb_menu_dnd_drop_copy, sd, NULL);
- _efm_menu_it_normal(m, "Move", "std:folder-move", _cb_menu_dnd_drop_move, sd, NULL);
- _efm_menu_it_normal(m, "Link", "std:insert-link", _cb_menu_dnd_drop_link, sd, NULL);
+ _efm_menu_it_normal(m, "Copy", "std:folder-copy", EINA_FALSE, _cb_menu_dnd_drop_copy, sd, NULL);
+ _efm_menu_it_normal(m, "Move", "std:folder-move", EINA_FALSE, _cb_menu_dnd_drop_move, sd, NULL);
+ _efm_menu_it_normal(m, "Link", "std:insert-link", EINA_FALSE, _cb_menu_dnd_drop_link, sd, NULL);
_efm_menu_show(sd->o_smart, m, sd->dnd_x, sd->dnd_y);
sd->dnd_drop_data = tmp;
printf("XXX: drop action modified to ask by modifier key\n");
diff --git a/src/efm/efm_menu.c b/src/efm/efm_menu.c
index 10cd4ec..f8a9055 100644
--- a/src/efm/efm_menu.c
+++ b/src/efm/efm_menu.c
@@ -2,8 +2,8 @@
#include "efm_private.h"
Efm_Menu *
-_efm_menu_add(const char *title, const char *icon, Efm_Menu_Callback cb,
- void *data, void *data2)
+_efm_menu_add(const char *title, const char *icon,
+ Efm_Menu_Callback cb, void *data, void *data2)
{
Efm_Menu *m = calloc(1, sizeof(Efm_Menu));
@@ -51,7 +51,8 @@ _m_index(void)
static Efm_Menu_Item *
_mi_add(Efm_Menu *m, Efm_Menu_Item_Type type, const char *label,
- const char *icon, Efm_Menu_Item_Callback cb, void *data, void *data2)
+ const char *icon, Eina_Bool disabled, Efm_Menu_Item_Callback cb,
+ void *data, void *data2)
{
Efm_Menu_Item *mi;
@@ -69,6 +70,7 @@ _mi_add(Efm_Menu *m, Efm_Menu_Item_Type type, const char *label,
mi->index = _m_index();
eina_stringshare_replace(&(mi->label), label);
eina_stringshare_replace(&(mi->icon), icon);
+ mi->disabled = disabled;
mi->private1 = cb;
mi->private2 = data;
mi->private3 = data2;
@@ -77,23 +79,24 @@ _mi_add(Efm_Menu *m, Efm_Menu_Item_Type type, const char *label,
Efm_Menu_Item *
_efm_menu_it_normal(Efm_Menu *m, const char *label, const char *icon,
- Efm_Menu_Item_Callback cb, void *data, void *data2)
+ Eina_Bool disabled, Efm_Menu_Item_Callback cb, void *data,
+ void *data2)
{
- return _mi_add(m, EFM_MENU_ITEM_NORMAL, label, icon, cb, data, data2);
+ return _mi_add(m, EFM_MENU_ITEM_NORMAL, label, icon, disabled, cb, data, data2);
}
Efm_Menu_Item *
_efm_menu_it_separator(Efm_Menu *m)
{
- return _mi_add(m, EFM_MENU_ITEM_SEPARATOR, NULL, NULL, NULL, NULL, NULL);
+ return _mi_add(m, EFM_MENU_ITEM_SEPARATOR, NULL, NULL, EINA_FALSE, NULL, NULL, NULL);
}
Efm_Menu_Item *
_efm_menu_it_sub(Efm_Menu *m, const char *label, const char *icon,
- Efm_Menu *sub)
+ Eina_Bool disabled, Efm_Menu *sub)
{
Efm_Menu_Item *mi
- = _mi_add(m, EFM_MENU_ITEM_SUBMENU, label, icon, NULL, NULL, NULL);
+ = _mi_add(m, EFM_MENU_ITEM_SUBMENU, label, icon, disabled, NULL, NULL, NULL);
if (mi) mi->sub = sub;
return mi;
@@ -101,11 +104,11 @@ _efm_menu_it_sub(Efm_Menu *m, const char *label, const char *icon,
Efm_Menu_Item *
_efm_menu_it_radio(Efm_Menu *m, const char *label, const char *icon,
- Eina_Bool on, Efm_Menu_Item_Callback cb, void *data,
- void *data2)
+ Eina_Bool on, Eina_Bool disabled, Efm_Menu_Item_Callback cb,
+ void *data, void *data2)
{
Efm_Menu_Item *mi
- = _mi_add(m, EFM_MENU_ITEM_RADIO, label, icon, cb, data, data2);
+ = _mi_add(m, EFM_MENU_ITEM_RADIO, label, icon, disabled, cb, data, data2);
if (mi) mi->selected = on;
return mi;
@@ -113,11 +116,11 @@ _efm_menu_it_radio(Efm_Menu *m, const char *label, const char *icon,
Efm_Menu_Item *
_efm_menu_it_check(Efm_Menu *m, const char *label, const char *icon,
- Eina_Bool on, Efm_Menu_Item_Callback cb, void *data,
- void *data2)
+ Eina_Bool on, Eina_Bool disabled, Efm_Menu_Item_Callback cb,
+ void *data, void *data2)
{
Efm_Menu_Item *mi
- = _mi_add(m, EFM_MENU_ITEM_CHECK, label, icon, cb, data, data2);
+ = _mi_add(m, EFM_MENU_ITEM_CHECK, label, icon, disabled, cb, data, data2);
if (mi) mi->selected = on;
return mi;
diff --git a/src/efm/efm_popup_menu.c b/src/efm/efm_popup_menu.c
index 5762b86..7a9a02d 100644
--- a/src/efm/efm_popup_menu.c
+++ b/src/efm/efm_popup_menu.c
@@ -309,8 +309,8 @@ _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", _cb_menu_item_open, ctx,
- d_main);
+ _efm_menu_it_normal(m1, "Open", "std:document-open", EINA_FALSE,
+ _cb_menu_item_open, ctx, d_main);
{
Efreet_Desktop *d;
Eina_List *mimes = NULL;
@@ -319,7 +319,7 @@ _efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x, Evas_Coord y)
// 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, m2);
+ _efm_menu_it_sub(m1, "Open With", NULL, EINA_FALSE, m2);
ctx->d_main = d_main;
if (d_main)
{
@@ -332,8 +332,8 @@ _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, _cb_menu_item_open, ctx,
- d_main);
+ _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 ((d_main) && (mimes)) _efm_menu_it_separator(m2);
@@ -354,52 +354,64 @@ _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, _cb_menu_item_open, ctx, d);
+ _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, _cb_menu_item_open_all, ctx,
- NULL);
+ _efm_menu_it_normal(m2, "Select Other", NULL, EINA_FALSE,
+ _cb_menu_item_open_all, ctx, NULL);
}
// actions
_efm_menu_it_separator(m1);
{
m2 = _efm_menu_add("Actions", NULL, NULL, NULL, NULL);
- _efm_menu_it_sub(m1, "Actions", NULL, m2);
- _efm_menu_it_normal(m2, "Cut", "std:edit-cut", _cb_menu_item_cut, ctx, NULL);
- _efm_menu_it_normal(m2, "Copy", "std:edit-copy", _cb_menu_item_copy, ctx,
+ _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,
NULL);
- _efm_menu_it_normal(m2, "Paste", "std:edit-paste", _cb_menu_item_paste, ctx,
+ _efm_menu_it_normal(m2, "Copy", "std:edit-copy",
+ EINA_FALSE, _cb_menu_item_copy, ctx,
NULL);
- _efm_menu_it_normal(m2, "Rename", "std:edit-rename", _cb_menu_item_rename,
+ _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,
ctx, NULL);
- _efm_menu_it_normal(m2, "Trash", "std:delete", _cb_menu_item_trash, ctx,
+ _efm_menu_it_normal(m2, "Trash", "std:delete",
+ EINA_FALSE, _cb_menu_item_trash, ctx,
NULL);
- _efm_menu_it_normal(m2, "Delete", "std:close", _cb_menu_item_delete, ctx,
+ _efm_menu_it_normal(m2, "Delete", "std:close",
+ EINA_FALSE, _cb_menu_item_delete, ctx,
NULL);
_efm_menu_it_separator(m2);
_efm_menu_it_normal(m2, "Properties", "std:document-properties",
- _cb_menu_item_props, ctx, NULL);
+ EINA_FALSE, _cb_menu_item_props, ctx, NULL);
_efm_menu_it_normal(m2, "Create Directory", "std:folder-new",
- _cb_menu_item_mkdir, ctx, NULL);
+ 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, m2);
+ _efm_menu_it_sub(m1, "View", NULL, EINA_FALSE, m2);
_efm_menu_it_normal(m2, "Select All", "std:edit-select-all",
- _cb_menu_item_sel_all, ctx, NULL);
+ EINA_FALSE, _cb_menu_item_sel_all,
+ ctx, NULL);
_efm_menu_it_normal(m2, "Select None", NULL,
- _cb_menu_item_sel_none, ctx, NULL);
- _efm_menu_it_normal(m2, "Refresh", "std:view-refresh",
+ EINA_FALSE, _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", _cb_menu_item_close, ctx,
+ _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);
@@ -428,34 +440,34 @@ _efm_popup_main_menu_add(Smart_Data *sd, 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, m2);
- _efm_menu_it_normal(m2, "Paste", "std:edit-paste", _cb_menu_item_paste, ctx,
- 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",
- _cb_menu_item_props, ctx, NULL);
+ EINA_FALSE, _cb_menu_item_props, ctx, NULL);
_efm_menu_it_normal(m2, "Create Directory", "std:folder-new",
- _cb_menu_item_mkdir, ctx, NULL);
+ 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, m2);
+ _efm_menu_it_sub(m1, "View", NULL, EINA_FALSE, m2);
_efm_menu_it_normal(m2, "Select All", "std:edit-select-all",
- _cb_menu_item_sel_all, ctx, NULL);
+ EINA_FALSE, _cb_menu_item_sel_all, ctx, NULL);
_efm_menu_it_normal(m2, "Select None", NULL,
- _cb_menu_item_sel_none, ctx, NULL);
+ EINA_FALSE, _cb_menu_item_sel_none, ctx, NULL);
_efm_menu_it_normal(m2, "Refresh", "std:view-refresh",
- _cb_menu_item_refresh, ctx, NULL);
+ 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", _cb_menu_item_close, ctx,
- NULL);
+ _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;
// const char *icstr = _icon_strbuf_icon_def(ic, icbuf);
diff --git a/src/efm/efm_private.h b/src/efm/efm_private.h
index 4e440b6..6194f08 100644
--- a/src/efm/efm_private.h
+++ b/src/efm/efm_private.h
@@ -38,27 +38,30 @@ Eina_Bool _file_video_is(const char *file);
#define MENU_SEPARATOR() \
EFM_MENU_ITEM_SEPARATOR, NULL, NULL, 0, EINA_FALSE, NULL, NULL, NULL
- void _efm_menu_show(Evas_Object *obj, Efm_Menu *m, Evas_Coord x,
- Evas_Coord y);
-
- Efm_Menu *_efm_menu_add(const char *title, const char *icon,
- Efm_Menu_Callback cb, void *data, void *data2);
- void _efm_menu_del(Efm_Menu *m);
- Efm_Menu_Item *_efm_menu_it_normal(Efm_Menu *m, const char *label,
- const char *icon,
- Efm_Menu_Item_Callback cb, void *data,
- void *data2);
- Efm_Menu_Item *_efm_menu_it_separator(Efm_Menu *m);
- Efm_Menu_Item *_efm_menu_it_sub(Efm_Menu *m, const char *label,
- const char *icon, Efm_Menu *sub);
- Efm_Menu_Item *_efm_menu_it_radio(Efm_Menu *m, const char *label,
- const char *icon, Eina_Bool on,
- Efm_Menu_Item_Callback cb, void *data,
- void *data2);
- Efm_Menu_Item *_efm_menu_it_check(Efm_Menu *m, const char *label,
- const char *icon, Eina_Bool on,
- Efm_Menu_Item_Callback cb, void *data,
- void *data2);
+ void
+ _efm_menu_show(Evas_Object *obj, Efm_Menu *m, Evas_Coord x, Evas_Coord y);
+ Efm_Menu *
+ _efm_menu_add(const char *title, const char *icon,
+ Efm_Menu_Callback cb, void *data, void *data2);
+ void
+ _efm_menu_del(Efm_Menu *m);
+ Efm_Menu_Item *
+ _efm_menu_it_normal(Efm_Menu *m, const char *label, const char *icon,
+ Eina_Bool disabled, Efm_Menu_Item_Callback cb,
+ void *data, void *data2);
+ Efm_Menu_Item *
+ _efm_menu_it_separator(Efm_Menu *m);
+ Efm_Menu_Item *
+ _efm_menu_it_sub(Efm_Menu *m, const char *label, const char *icon,
+ Eina_Bool disabled, Efm_Menu *sub);
+ Efm_Menu_Item *
+ _efm_menu_it_radio(Efm_Menu *m, const char *label, const char *icon,
+ Eina_Bool on, Eina_Bool disabled,
+ Efm_Menu_Item_Callback cb, void *data, void *data2);
+ Efm_Menu_Item *
+ _efm_menu_it_check(Efm_Menu *m, const char *label, const char *icon,
+ Eina_Bool on, Eina_Bool disabled,
+ Efm_Menu_Item_Callback cb, void *data, void *data2);
Efm_Menu *_efm_popup_icon_menu_add(Smart_Data *sd, Icon *ic, Evas_Coord x,
Evas_Coord y);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.