diff --git a/src/modules/xkbswitch/e_mod_config.c b/src/modules/xkbswitch/e_mod_config.c index 45e41a56d..fab5d976f 100644 --- a/src/modules/xkbswitch/e_mod_config.c +++ b/src/modules/xkbswitch/e_mod_config.c @@ -230,6 +230,16 @@ _create_data(E_Config_Dialog *cfd) return cfdata; } +static void +_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) +{ + Evas_Object **o; + + o = data; + + *o = NULL; +} + static void _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) { @@ -237,6 +247,13 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) _xkb.cfd = NULL; + if (cfdata->compose_list) + evas_object_event_callback_del(cfdata->compose_list, EVAS_CALLBACK_DEL, _list_del); + if (cfdata->lv3_list) + evas_object_event_callback_del(cfdata->lv3_list, EVAS_CALLBACK_DEL, _list_del); + if (cfdata->switch_list) + evas_object_event_callback_del(cfdata->switch_list, EVAS_CALLBACK_DEL, _list_del); + EINA_LIST_FREE(cfdata->cfg_layouts, cl) { eina_stringshare_del(cl->name); @@ -445,16 +462,6 @@ _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) return 1; } -static void -_list_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) -{ - Evas_Object **o; - - o = data; - - *o = NULL; -} - static void _option_del(void *data, Evas_Object *obj, void *event EINA_UNUSED) {