From 6de31a616316cebfd9463de216a5e4b7b5b618a6 Mon Sep 17 00:00:00 2001 From: Chidambar Zinnoury Date: Tue, 14 Oct 2008 16:22:52 +0000 Subject: [PATCH] id_del was never called for gadcon clients, so call it after shutdown. Report and help for testing done by stefzekiller . Moreover, remove some new compiler warning. SVN revision: 36661 --- src/bin/e_gadcon.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index 57d0b0004..309e2733a 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -48,7 +48,7 @@ static void _e_gadcon_cb_dnd_move(void *data, const char *type, void *event); static void _e_gadcon_cb_dnd_leave(void *data, const char *type, void *event); static void _e_gadcon_cb_drop(void *data, const char *type, void *event); -static int _e_gadcon_client_class_feature_check(E_Gadcon_Client_Class *cc, const char *name, void *feature); +static int _e_gadcon_client_class_feature_check(const E_Gadcon_Client_Class *cc, const char *name, void *feature); static void _e_gadcon_client_cb_menu_post(void *data, E_Menu *m); static void _e_gadcon_client_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_gadcon_client_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -468,6 +468,10 @@ e_gadcon_populate_class(E_Gadcon *gc, const E_Gadcon_Client_Class *cc) { E_Gadcon_Client *gcc; + if ((!cf_gcc->id) && + (_e_gadcon_client_class_feature_check(cc, "id_new", cc->func.id_new))) + cf_gcc->id = evas_stringshare_add(cc->func.id_new()); + gcc = cc->func.init(gc, cf_gcc->name, cf_gcc->id, cf_gcc->style); if (gcc) @@ -1372,6 +1376,8 @@ _e_gadcon_client_free(E_Gadcon_Client *gcc) } e_gadcon_client_edit_end(gcc); gcc->client_class->func.shutdown(gcc); + if (gcc->client_class->func.id_del) + gcc->client_class->func.id_del(gcc->cf->id); gcc->gadcon->clients = evas_list_remove(gcc->gadcon->clients, gcc); if (gcc->o_box) evas_object_del(gcc->o_box); if (gcc->o_frame) evas_object_del(gcc->o_frame); @@ -2236,7 +2242,7 @@ _e_gadcon_cb_drop(void *data, const char *type, void *event) } static int -_e_gadcon_client_class_feature_check(E_Gadcon_Client_Class *cc, const char *name, void *feature) +_e_gadcon_client_class_feature_check(const E_Gadcon_Client_Class *cc, const char *name, void *feature) { if (!feature) {