From fa648a9e48a7a1ecfc53b4f55304e405dad4bc7f Mon Sep 17 00:00:00 2001 From: Davide Andreoli Date: Mon, 10 Nov 2008 15:47:25 +0000 Subject: [PATCH] * make E aware of the existance of gadman as a gadcon. This solve some module load/unload issues SVN revision: 37575 --- src/bin/e_config.h | 2 +- src/bin/e_gadcon.c | 14 ++++++++++++++ src/bin/e_gadcon.h | 2 ++ src/modules/gadman/e_mod_gadman.c | 5 +++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/bin/e_config.h b/src/bin/e_config.h index d6059914a..c3748d96c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -410,7 +410,7 @@ struct _E_Config_Gadcon_Client int seq, flags; } state_info; const char *style; - int orient; + int orient; unsigned char autoscroll; unsigned char resizable; }; diff --git a/src/bin/e_gadcon.c b/src/bin/e_gadcon.c index 87e0188ce..55dbca16c 100644 --- a/src/bin/e_gadcon.c +++ b/src/bin/e_gadcon.c @@ -252,6 +252,20 @@ e_gadcon_provider_list(void) return providers_list; } +EAPI void +e_gadcon_custom_new(E_Gadcon *gc) +{ + if (!gc) return; + gadcons = eina_list_append(gadcons, gc); +} + +EAPI void +e_gadcon_custom_del(E_Gadcon *gc) +{ + if (!gc) return; + gadcons = eina_list_remove(gadcons, gc); +} + EAPI E_Gadcon * e_gadcon_swallowed_new(const char *name, int id, Evas_Object *obj, char *swallow_name) { diff --git a/src/bin/e_gadcon.h b/src/bin/e_gadcon.h index e1c967976..724bd6287 100644 --- a/src/bin/e_gadcon.h +++ b/src/bin/e_gadcon.h @@ -190,6 +190,8 @@ EAPI void e_gadcon_provider_register(const E_Gadcon_Client_Class *cc EAPI void e_gadcon_provider_unregister(const E_Gadcon_Client_Class *cc); EAPI Eina_List *e_gadcon_provider_list(void); EAPI E_Gadcon *e_gadcon_swallowed_new(const char *name, int id, Evas_Object *obj, char *swallow_name); +EAPI void e_gadcon_custom_new(E_Gadcon *gc); +EAPI void e_gadcon_custom_del(E_Gadcon *gc); EAPI void e_gadcon_swallowed_min_size_set(E_Gadcon *gc, Evas_Coord w, Evas_Coord h); EAPI void e_gadcon_min_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data); EAPI void e_gadcon_size_request_callback_set(E_Gadcon *gc, void (*func) (void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h), void *data); diff --git a/src/modules/gadman/e_mod_gadman.c b/src/modules/gadman/e_mod_gadman.c index 19881aa0e..9be5e116b 100644 --- a/src/modules/gadman/e_mod_gadman.c +++ b/src/modules/gadman/e_mod_gadman.c @@ -101,6 +101,9 @@ gadman_shutdown(void) e_gadcon_unpopulate(Man->gc); e_gadcon_unpopulate(Man->gc_top); + e_gadcon_custom_del(Man->gc); + e_gadcon_custom_del(Man->gc_top); + /* free gadcons */ e_config->gadcons = eina_list_remove(e_config->gadcons, Man->gc); e_config->gadcons = eina_list_remove(e_config->gadcons, Man->gc_top); @@ -528,6 +531,8 @@ _gadman_gadcon_new(const char* name, int ontop) e_config_save_queue(); } + e_gadcon_custom_new(gc); + return gc; }