ibar - fix seg with ibar icon task menus are up while desktop files change

segv if u go do make installs that install desktop files causing
efreet to recheck desktop files causing e to reset desktop files
causing ibar to refill icons but this causea a segv if a hover menu of
windows for that icon are up at the same time. this fixes that.

@fix
This commit is contained in:
Carsten Haitzler 2017-01-02 23:26:14 +09:00
parent 3779086a63
commit c0f6594c96
1 changed files with 10 additions and 1 deletions

View File

@ -140,6 +140,8 @@ static void _ibar_exec_new_client_show(void *data, Evas *e EINA_UNUSED,
static Eina_Bool _ibar_cb_out_hide_delay(void *data);
static void _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab);
static void _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab);
static void _ibar_cb_icon_menu_img_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
static void _ibar_cb_icon_frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
static E_Config_DD *conf_edd = NULL;
static E_Config_DD *conf_item_edd = NULL;
@ -872,7 +874,14 @@ _ibar_icon_free(IBar_Icon *ic)
E_Exec_Instance *inst;
Evas_Object *o;
EINA_LIST_FREE(ic->client_objs, o) evas_object_del(o);
EINA_LIST_FREE(ic->client_objs, o)
{
evas_object_event_callback_del(o, EVAS_CALLBACK_DEL,
_ibar_cb_icon_frame_del);
evas_object_event_callback_del(o, EVAS_CALLBACK_DEL,
_ibar_cb_icon_menu_img_del);
evas_object_del(o);
}
if (ic->ibar->menu_icon == ic) ic->ibar->menu_icon = NULL;
if (ic->ibar->ic_drop_before == ic) ic->ibar->ic_drop_before = NULL;
if (ic->menu) e_object_data_set(E_OBJECT(ic->menu), NULL);