From 1074da19619f80f252235154e84d82ea39df79d8 Mon Sep 17 00:00:00 2001 From: Davide Andreoli Date: Thu, 26 Jul 2012 21:35:12 +0000 Subject: [PATCH] Places: create/destroy the e menu augmentation on config apply (no more e restart required to apply the config) SVN revision: 74457 --- src/e_mod_config.c | 1 + src/e_mod_main.c | 30 ++++++++++++++++++++++-------- src/e_mod_main.h | 1 + 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/e_mod_config.c b/src/e_mod_config.c index 99856e8..ff0cc09 100644 --- a/src/e_mod_config.c +++ b/src/e_mod_config.c @@ -196,5 +196,6 @@ _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) e_config_save_queue(); places_update_all_gadgets(); + places_menu_augmentation(); return 1; } diff --git a/src/e_mod_main.c b/src/e_mod_main.c index 4ae6285..7556675 100644 --- a/src/e_mod_main.c +++ b/src/e_mod_main.c @@ -26,6 +26,7 @@ static void _places_cb_menu_configure(void *data, E_Menu *mn, E_Menu_Item *mi); /* Local Variables */ static E_Config_DD *conf_edd = NULL; static E_Config_DD *conf_item_edd = NULL; +static E_Int_Menu_Augmentation *maug = NULL; Eina_List *instances = NULL; Config *places_conf = NULL; extern Eina_List *volumes; @@ -137,18 +138,11 @@ e_modapi_init(E_Module *m) e_gadcon_provider_register(&_gc_class); places_init(); - if (places_conf->show_menu) - { - E_Int_Menu_Augmentation *maug; - maug = e_int_menus_menu_augmentation_add("main/1", - places_augmentation, - NULL, NULL, NULL); - } + places_menu_augmentation(); return m; } - EAPI int e_modapi_shutdown(E_Module *m) { @@ -161,6 +155,13 @@ e_modapi_shutdown(E_Module *m) if (places_conf->cfd) e_object_del(E_OBJECT(places_conf->cfd)); places_conf->cfd = NULL; + /* Remove the main menu item */ + if (maug) + { + e_int_menus_menu_augmentation_del("main/1", maug); + maug = NULL; + } + /* Tell E the module is now unloaded. Gets removed from shelves, etc. */ places_conf->module = NULL; e_gadcon_provider_unregister(&_gc_class); @@ -179,6 +180,19 @@ e_modapi_save(E_Module *m) return 1; } +void +places_menu_augmentation(void) +{ + if (places_conf->show_menu && (!maug)) + maug = e_int_menus_menu_augmentation_add("main/1", places_augmentation, + NULL, NULL, NULL); + else if ((!places_conf->show_menu) && maug) + { + e_int_menus_menu_augmentation_del("main/1", maug); + maug = NULL; + } +} + /* Gadcon Functions */ static E_Gadcon_Client * _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) diff --git a/src/e_mod_main.h b/src/e_mod_main.h index cb609d9..793064d 100644 --- a/src/e_mod_main.h +++ b/src/e_mod_main.h @@ -65,6 +65,7 @@ EAPI int e_modapi_shutdown(E_Module *m); EAPI int e_modapi_save(E_Module *m); E_Config_Dialog *e_int_config_places_module(E_Container *con, const char *params); +void places_menu_augmentation(void); extern Config *places_conf; extern Eina_List *instances;