fix menu tracking + E_API

1. uses EAPI - this was efl's symbol visibility macro. e used E_API...
so use it
2. don't track menu - gadcon does that for you. fixed crash/mem access
bug as gadcon owns this menu not the module.
This commit is contained in:
Carsten Haitzler 2024-03-24 13:01:39 +00:00
parent 54133987a3
commit 3a8554ee94
2 changed files with 5 additions and 28 deletions

View File

@ -18,7 +18,6 @@ static Eina_Bool _places_conf_timer(void *data);
static Config_Item *_places_conf_item_get(const char *id);
static void _places_icon_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event);
static void _places_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event);
static void _places_cb_menu_post(void *data, E_Menu *menu);
static void _places_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi);
/* Local Variables */
@ -37,10 +36,10 @@ static const E_Gadcon_Client_Class _gc_class =
E_GADCON_CLIENT_STYLE_PLAIN
};
EAPI E_Module_Api e_modapi = {E_MODULE_API_VERSION, "Places"};
E_API E_Module_Api e_modapi = {E_MODULE_API_VERSION, "Places"};
/* Module Functions */
EAPI void *
E_API void *
e_modapi_init(E_Module *m)
{
char buf[PATH_MAX];
@ -142,7 +141,7 @@ e_modapi_init(E_Module *m)
return m;
}
EAPI int
E_API int
e_modapi_shutdown(E_Module *m)
{
places_shutdown();
@ -172,7 +171,7 @@ e_modapi_shutdown(E_Module *m)
return 1;
}
EAPI int
E_API int
e_modapi_save(E_Module *m)
{
e_config_domain_save("module.places", conf_edd, places_conf);
@ -232,13 +231,6 @@ _gc_shutdown(E_Gadcon_Client *gcc)
if (!(inst = gcc->data)) return;
instances = eina_list_remove(instances, inst);
if (inst->menu)
{
e_menu_post_deactivate_callback_set(inst->menu, NULL, NULL);
e_object_del(E_OBJECT(inst->menu));
inst->menu = NULL;
}
if (inst->o_main)
{
evas_object_event_callback_del(inst->o_main, EVAS_CALLBACK_MOUSE_DOWN,
@ -516,7 +508,7 @@ _places_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event)
if (!(inst = data)) return;
ev = event;
if ((ev->button == 3) && (!inst->menu))
if (ev->button == 3)
{
E_Menu *m;
@ -530,9 +522,6 @@ _places_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event)
/* Each Gadget Client has a utility menu from the Container */
m = e_gadcon_client_util_menu_items_append(inst->gcc, m, 0);
e_menu_post_deactivate_callback_set(m, _places_cb_menu_post, inst);
inst->menu = m;
e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &x, &y,
NULL, NULL);
@ -546,17 +535,6 @@ _places_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event)
}
}
static void
_places_cb_menu_post(void *data, E_Menu *menu)
{
Instance *inst = NULL;
if (!(inst = data)) return;
if (!inst->menu) return;
e_object_del(E_OBJECT(inst->menu));
inst->menu = NULL;
}
static void
_places_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi)
{

View File

@ -75,7 +75,6 @@ struct _Instance
Evas_Object *o_icon;
E_Gadcon_Popup *popup;
Eina_Bool horiz;
E_Menu *menu;
Config_Item *conf_item;
};