diff --git a/src/modules/conf/e_mod_config.c b/src/modules/conf/e_mod_config.c index 65940d099..4e72868bb 100644 --- a/src/modules/conf/e_mod_config.c +++ b/src/modules/conf/e_mod_config.c @@ -1,7 +1,7 @@ #include "e.h" #include "e_mod_main.h" -struct _E_Config_Dialog_Data +struct _E_Config_Dialog_Data { int menu_augmentation; }; @@ -13,7 +13,7 @@ static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dia static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); E_Config_Dialog * -e_int_config_conf_module(E_Container *con, const char *params) +e_int_config_conf_module(E_Container *con, const char *params) { E_Config_Dialog *cfd = NULL; E_Config_Dialog_View *v = NULL; @@ -31,7 +31,7 @@ e_int_config_conf_module(E_Container *con, const char *params) v->basic.apply_cfdata = _basic_apply; snprintf(buf, sizeof(buf), "%s/e-module-conf.edj", conf->module->dir); - cfd = e_config_dialog_new(con, _("Configuration Panel"), "Conf", + cfd = e_config_dialog_new(con, _("Configuration Panel"), "Conf", "advanced/conf", buf, 0, v, NULL); conf->cfd = cfd; @@ -39,7 +39,7 @@ e_int_config_conf_module(E_Container *con, const char *params) } static void * -_create_data(E_Config_Dialog *cfd) +_create_data(E_Config_Dialog *cfd) { E_Config_Dialog_Data *cfdata = NULL; @@ -48,21 +48,21 @@ _create_data(E_Config_Dialog *cfd) return cfdata; } -static void -_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +static void +_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { conf->cfd = NULL; E_FREE(cfdata); } -static void -_fill_data(E_Config_Dialog_Data *cfdata) +static void +_fill_data(E_Config_Dialog_Data *cfdata) { cfdata->menu_augmentation = conf->menu_augmentation; } static Evas_Object * -_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { Evas_Object *o = NULL, *of = NULL, *ow = NULL; @@ -70,7 +70,7 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) of = e_widget_framelist_add(evas, _("General"), 0); e_widget_framelist_content_align_set(of, 0.0, 0.0); - ow = e_widget_check_add(evas, _("Show configuration panel contents in Settings menu"), + ow = e_widget_check_add(evas, _("Show configurations in menu"), &(cfdata->menu_augmentation)); e_widget_framelist_object_append(of, ow); e_widget_list_object_append(o, of, 1, 0, 0.5); @@ -78,26 +78,22 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) return o; } -static int -_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +static int +_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { conf->menu_augmentation = cfdata->menu_augmentation; if (conf->aug) { - e_int_menus_menu_augmentation_del("config/0", conf->aug); + e_int_menus_menu_augmentation_del("config/2", conf->aug); conf->aug = NULL; } if (conf->menu_augmentation) { - conf->aug = - e_int_menus_menu_augmentation_add("config/0", - e_mod_config_menu_add, - NULL, NULL, NULL); - e_int_menus_menu_augmentation_point_disabled_set("config/1", 1); + conf->aug = + e_int_menus_menu_augmentation_add + ("config/2", e_mod_config_menu_add, NULL, NULL, NULL); } - else - e_int_menus_menu_augmentation_point_disabled_set("config/1", 0); e_config_save_queue(); return 1; diff --git a/src/modules/conf/e_mod_main.c b/src/modules/conf/e_mod_main.c index db31bcfe6..7c2f4aaf3 100644 --- a/src/modules/conf/e_mod_main.c +++ b/src/modules/conf/e_mod_main.c @@ -152,8 +152,7 @@ _config_pre_activate_cb(void *data, E_Menu *m) Eina_List *l; E_Menu_Item *mi; - /*XXX is this the right way to not initiate the menu a second time ?*/ - if (e_menu_item_nth(m, 0)) return; + e_menu_pre_activate_callback_set(m, NULL, NULL); EINA_LIST_FOREACH(ecat->items, l, eci) { @@ -175,40 +174,54 @@ _config_pre_activate_cb(void *data, E_Menu *m) } } - -/* menu item add hook */ -void -e_mod_config_menu_add(void *data, E_Menu *m) +static void +_config_all_pre_activate_cb(void *data __UNUSED__, E_Menu *m) { - E_Menu_Item *mi; - E_Menu *sub; - Eina_List *l; + const Eina_List *l; E_Configure_Cat *ecat; - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); + e_menu_pre_activate_callback_set(m, NULL, NULL); EINA_LIST_FOREACH(e_configure_registry, l, ecat) { - if ((ecat->pri >= 0) && (ecat->items)) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, ecat->label); - if (ecat->icon) - { - if (ecat->icon_file) - e_menu_item_icon_edje_set(mi, ecat->icon_file, ecat->icon); - else - e_util_menu_item_theme_icon_set(mi, ecat->icon); - } + E_Menu_Item *mi; + E_Menu *sub; - sub = e_menu_new(); - e_menu_item_submenu_set(mi, sub); - e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat); - } + if ((ecat->pri < 0) || (!ecat->items)) continue; + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, ecat->label); + if (ecat->icon) + { + if (ecat->icon_file) + e_menu_item_icon_edje_set(mi, ecat->icon_file, ecat->icon); + else + e_util_menu_item_theme_icon_set(mi, ecat->icon); + } + + sub = e_menu_new(); + e_menu_item_submenu_set(mi, sub); + e_menu_pre_activate_callback_set(sub, _config_pre_activate_cb, ecat); } } +/* menu item add hook */ +void +e_mod_config_menu_add(void *data __UNUSED__, E_Menu *m) +{ + E_Menu_Item *mi; + E_Menu *sub; + + e_menu_pre_activate_callback_set(m, NULL, NULL); + + sub = e_menu_new(); + e_menu_pre_activate_callback_set(sub, _config_all_pre_activate_cb, NULL); + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("All")); + e_menu_item_submenu_set(mi, sub); +} + /* module setup */ EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Conf" }; @@ -291,12 +304,9 @@ e_modapi_init(E_Module *m) if (conf->menu_augmentation) { conf->aug = - e_int_menus_menu_augmentation_add("config/0", e_mod_config_menu_add, - NULL, NULL, NULL); - e_int_menus_menu_augmentation_point_disabled_set("config/1", 1); + e_int_menus_menu_augmentation_add + ("config/2", e_mod_config_menu_add, NULL, NULL, NULL); } - else - e_int_menus_menu_augmentation_point_disabled_set("config/1", 0); e_gadcon_provider_register(&_gadcon_class); return m; @@ -323,9 +333,8 @@ e_modapi_shutdown(E_Module *m) } if (conf->aug) { - e_int_menus_menu_augmentation_del("config/0", conf->aug); + e_int_menus_menu_augmentation_del("config/2", conf->aug); conf->aug = NULL; - e_int_menus_menu_augmentation_point_disabled_set("config/1", 0); } /* remove module-supplied action */