forked from enlightenment/enlightenment
Implement FreeDesktop .deskop Additional Actions menu
Summary: This implements the additional actions as specified in FreeDesktop.org's desktop entry specification 1.1. This version is implemented by Efreet 1.12 The additional actions are presented as right-click menu entries. @feature Reviewers: zmike Subscribers: tasn, q66, cedric Differential Revision: https://phab.enlightenment.org/D1657
This commit is contained in:
parent
38432f93d5
commit
6a92676cf8
|
@ -111,6 +111,7 @@ static void _ibar_sep_create(IBar *b);
|
|||
static void _ibar_icon_signal_emit(IBar_Icon *ic, char *sig, char *src);
|
||||
static void _ibar_cb_app_change(void *data, E_Order *eo);
|
||||
static void _ibar_cb_obj_moveresize(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _ibar_cb_menu_icon_action_exec(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _ibar_cb_menu_icon_new(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _ibar_cb_menu_icon_add(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _ibar_cb_menu_icon_properties(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -1042,6 +1043,13 @@ _ibar_cb_obj_moveresize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSE
|
|||
inst->ibar->resize_job = ecore_job_add((Ecore_Cb)_ibar_cb_resize_job, inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_ibar_cb_menu_icon_action_exec(void *data, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
Efreet_Desktop_Action *action = (Efreet_Desktop_Action*)data;
|
||||
e_exec(NULL, NULL, action->exec, NULL, "ibar");
|
||||
}
|
||||
|
||||
static void
|
||||
_ibar_cb_menu_icon_new(void *data __UNUSED__, E_Menu *m __UNUSED__, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
|
@ -1558,8 +1566,10 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS
|
|||
}
|
||||
else if (ev->button == 3)
|
||||
{
|
||||
Eina_List *it;
|
||||
E_Menu *m, *mo;
|
||||
E_Menu_Item *mi;
|
||||
Efreet_Desktop_Action *action;
|
||||
char buf[256];
|
||||
int cx, cy;
|
||||
|
||||
|
@ -1626,6 +1636,20 @@ _ibar_cb_icon_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUS
|
|||
mi);
|
||||
e_menu_item_submenu_set(mi, mo);
|
||||
e_object_unref(E_OBJECT(mo));
|
||||
|
||||
if (ic->app->actions)
|
||||
{
|
||||
EINA_LIST_FOREACH(ic->app->actions, it, action)
|
||||
{
|
||||
mi = e_menu_item_new_relative(m, mi);
|
||||
e_menu_item_label_set(mi, action->name);
|
||||
e_util_menu_item_theme_icon_set(mi, action->icon);
|
||||
e_menu_item_callback_set(mi, _ibar_cb_menu_icon_action_exec, action);
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
}
|
||||
|
||||
e_gadcon_client_menu_set(ic->ibar->inst->gcc, m);
|
||||
|
||||
e_gadcon_canvas_zone_geometry_get(ic->ibar->inst->gcc->gadcon,
|
||||
|
|
Loading…
Reference in New Issue