forked from enlightenment/efl
Elm_menu: fixed item disable hook for elm_dbus_menu
Summary: Menu items in dbus-mode (in Ubunut/Unity) were not updated on disabled/enabled state changes. They were applied only after adding/removing an item. Reviewers: cedric, seoz, raster Reviewed By: raster CC: reutskiy.v.v Differential Revision: https://phab.enlightenment.org/D333
This commit is contained in:
parent
a480745321
commit
cf2ae7397e
|
@ -2,13 +2,14 @@
|
|||
# include "elementary_config.h"
|
||||
#endif
|
||||
#include <Elementary.h>
|
||||
|
||||
|
||||
static void
|
||||
_click_me(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||
_click_me(void *data, Evas_Object *obj EINA_UNUSED,
|
||||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
Elm_Object_Item *it = (Elm_Object_Item *)data;
|
||||
fputs(":-)\n", stderr);
|
||||
int disabled = elm_object_item_disabled_get(it);
|
||||
elm_object_item_disabled_set(it, !disabled);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -68,7 +69,7 @@ test_main_menu(void *data EINA_UNUSED,
|
|||
menu_it1 = elm_menu_item_add(menu, menu_it, NULL, "disabled item", NULL, NULL);
|
||||
elm_object_item_disabled_set(menu_it1, EINA_TRUE);
|
||||
elm_menu_item_separator_add(menu, menu_it);
|
||||
elm_menu_item_add(menu, menu_it, NULL, "click me :-)", _click_me, NULL);
|
||||
elm_menu_item_add(menu, menu_it, NULL, "click me :-)", _click_me, menu_it1);
|
||||
elm_menu_item_add(menu, menu_it, "applications-email-panel", "third item", NULL, NULL);
|
||||
menu_it1 = elm_menu_item_add(menu, menu_it, NULL, "sub menu", NULL, NULL);
|
||||
elm_menu_item_add(menu, menu_it1, NULL, "first item", NULL, NULL);
|
||||
|
|
|
@ -1032,5 +1032,6 @@ _elm_dbus_menu_item_delete(Elm_DBus_Menu *dbus_menu, int id)
|
|||
void
|
||||
_elm_dbus_menu_update(Elm_DBus_Menu *dbus_menu)
|
||||
{
|
||||
dbus_menu->timestamp++;
|
||||
_layout_signal(dbus_menu);
|
||||
}
|
||||
|
|
|
@ -84,6 +84,7 @@ _item_disable_hook(Elm_Object_Item *it)
|
|||
else
|
||||
elm_layout_signal_emit(VIEW(item), "elm,state,enabled", "elm");
|
||||
|
||||
if (item->dbus_menu) _elm_dbus_menu_update(item->dbus_menu);
|
||||
edje_object_message_signal_process(elm_layout_edje_get(VIEW(item)));
|
||||
}
|
||||
|
||||
|
@ -985,8 +986,10 @@ _item_add(Eo *obj, void *_pd, va_list *list)
|
|||
_elm_menu_item_add_helper(obj, (Elm_Menu_Item *)parent, subitem, sd);
|
||||
|
||||
if (sd->dbus_menu)
|
||||
{
|
||||
subitem->dbus_idx = _elm_dbus_menu_item_add(sd->dbus_menu, (Elm_Object_Item *)subitem);
|
||||
|
||||
subitem->dbus_menu = sd->dbus_menu;
|
||||
}
|
||||
*ret = (Elm_Object_Item *)subitem;
|
||||
}
|
||||
|
||||
|
|
|
@ -437,6 +437,7 @@ const char *_elm_dbus_menu_register(Eo *obj);
|
|||
void _elm_dbus_menu_unregister(Eo *obj);
|
||||
int _elm_dbus_menu_item_add(Elm_DBus_Menu *dbus_menu,
|
||||
Elm_Object_Item *item);
|
||||
void _elm_dbus_menu_update(Elm_DBus_Menu *dbus_menu);
|
||||
void _elm_dbus_menu_item_delete(Elm_DBus_Menu *dbus_menu,
|
||||
int id);
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ struct _Elm_Menu_Item
|
|||
const char *label;
|
||||
Evas_Smart_Cb func;
|
||||
unsigned int idx;
|
||||
Elm_DBus_Menu *dbus_menu;
|
||||
int dbus_idx;
|
||||
|
||||
struct
|
||||
|
|
Loading…
Reference in New Issue