Use proper config dialog window class, so that when the module gets
unloaded, any existing dialogs are killed. This stops a crash that was happening if the module was unloaded while the dialog was shown. SVN revision: 44153
This commit is contained in:
parent
61c451f011
commit
4042dda53a
|
@ -6,14 +6,14 @@
|
||||||
#include "e_int_config_theme_import.h"
|
#include "e_int_config_theme_import.h"
|
||||||
#include "e_int_config_theme_web.h"
|
#include "e_int_config_theme_web.h"
|
||||||
|
|
||||||
static void *_create_data (E_Config_Dialog *cfd);
|
static void *_create_data(E_Config_Dialog *cfd);
|
||||||
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);
|
||||||
static void _fill_data (E_Config_Dialog_Data *cfdata);
|
static void _fill_data(E_Config_Dialog_Data *cfdata);
|
||||||
static int _basic_apply_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static Evas_Object *_basic_create_widgets (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||||
static int _advanced_apply_data (E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||||
static Evas_Object *_advanced_create_widgets (E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||||
static Eina_List *_get_theme_categories_list (void);
|
static Eina_List *_get_theme_categories_list(void);
|
||||||
|
|
||||||
struct _E_Config_Dialog_Data
|
struct _E_Config_Dialog_Data
|
||||||
{
|
{
|
||||||
|
@ -31,43 +31,44 @@ struct _E_Config_Dialog_Data
|
||||||
/* Advanced */
|
/* Advanced */
|
||||||
Evas_Object *o_categories_ilist;
|
Evas_Object *o_categories_ilist;
|
||||||
Evas_Object *o_files_ilist;
|
Evas_Object *o_files_ilist;
|
||||||
int personal_file_count;
|
int personal_file_count;
|
||||||
Eina_List *theme_list;
|
Eina_List *theme_list;
|
||||||
Eina_List *parts_list;
|
Eina_List *parts_list;
|
||||||
|
|
||||||
/* Dialog */
|
/* Dialog */
|
||||||
E_Win *win_import;
|
E_Win *win_import;
|
||||||
E_Dialog *dia_web;
|
E_Dialog *dia_web;
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *parts_list[] = {
|
static const char *parts_list[] =
|
||||||
"about:e/widgets/about/main",
|
{
|
||||||
"borders:e/widgets/border/default/border",
|
"about:e/widgets/about/main",
|
||||||
"background:e/desktop/background",
|
"borders:e/widgets/border/default/border",
|
||||||
"configure:e/widgets/configure/main",
|
"background:e/desktop/background",
|
||||||
"dialog:e/widgets/dialog/main",
|
"configure:e/widgets/configure/main",
|
||||||
"dnd:ZZZ",
|
"dialog:e/widgets/dialog/main",
|
||||||
"error:e/error/main",
|
"dnd:ZZZ",
|
||||||
"exebuf:e/widgets/exebuf/main",
|
"error:e/error/main",
|
||||||
"fileman:ZZZ",
|
"exebuf:e/widgets/exebuf/main",
|
||||||
"gadman:e/gadman/control",
|
"fileman:ZZZ",
|
||||||
"icons:ZZZ",
|
"gadman:e/gadman/control",
|
||||||
"menus:ZZZ",
|
"icons:ZZZ",
|
||||||
"modules:ZZZ",
|
"menus:ZZZ",
|
||||||
"modules/pager:e/widgets/pager/popup",
|
"modules:ZZZ",
|
||||||
"modules/ibar:ZZZ",
|
"modules/pager:e/widgets/pager/popup",
|
||||||
"modules/ibox:ZZZ",
|
"modules/ibar:ZZZ",
|
||||||
"modules/clock:e/modules/clock/main",
|
"modules/ibox:ZZZ",
|
||||||
"modules/battery:e/modules/battery/main",
|
"modules/clock:e/modules/clock/main",
|
||||||
"modules/cpufreq:e/modules/cpufreq/main",
|
"modules/battery:e/modules/battery/main",
|
||||||
"modules/start:e/modules/start/main",
|
"modules/cpufreq:e/modules/cpufreq/main",
|
||||||
"modules/temperature:e/modules/temperature/main",
|
"modules/start:e/modules/start/main",
|
||||||
"pointer:e/pointer",
|
"modules/temperature:e/modules/temperature/main",
|
||||||
"shelf:e/shelf/default/base",
|
"pointer:e/pointer",
|
||||||
"transitions:ZZZ",
|
"shelf:e/shelf/default/base",
|
||||||
"widgets:ZZZ",
|
"transitions:ZZZ",
|
||||||
"winlist:e/widgets/winlist/main",
|
"widgets:ZZZ",
|
||||||
NULL
|
"winlist:e/widgets/winlist/main",
|
||||||
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
EAPI E_Config_Dialog *
|
EAPI E_Config_Dialog *
|
||||||
|
@ -76,19 +77,19 @@ e_int_config_theme(E_Container *con, const char *params __UNUSED__)
|
||||||
E_Config_Dialog *cfd;
|
E_Config_Dialog *cfd;
|
||||||
E_Config_Dialog_View *v;
|
E_Config_Dialog_View *v;
|
||||||
|
|
||||||
if (e_config_dialog_find("E", "appearance/theme")) return NULL;
|
if (e_config_dialog_find("E", "_config_theme_dialog")) return NULL;
|
||||||
v = E_NEW(E_Config_Dialog_View, 1);
|
v = E_NEW(E_Config_Dialog_View, 1);
|
||||||
|
|
||||||
v->create_cfdata = _create_data;
|
v->create_cfdata = _create_data;
|
||||||
v->free_cfdata = _free_data;
|
v->free_cfdata = _free_data;
|
||||||
v->basic.apply_cfdata = _basic_apply_data;
|
v->basic.apply_cfdata = _basic_apply_data;
|
||||||
v->basic.create_widgets = _basic_create_widgets;
|
v->basic.create_widgets = _basic_create_widgets;
|
||||||
v->advanced.apply_cfdata = _advanced_apply_data;
|
v->advanced.apply_cfdata = _advanced_apply_data;
|
||||||
v->advanced.create_widgets = _advanced_create_widgets;
|
v->advanced.create_widgets = _advanced_create_widgets;
|
||||||
v->override_auto_apply = 1;
|
v->override_auto_apply = 1;
|
||||||
cfd = e_config_dialog_new(con,
|
cfd = e_config_dialog_new(con,
|
||||||
_("Theme Selector"),
|
_("Theme Selector"),
|
||||||
"E", "appearance/theme",
|
"E", "_config_theme_dialog",
|
||||||
"preferences-desktop-theme", 0, v, NULL);
|
"preferences-desktop-theme", 0, v, NULL);
|
||||||
return cfd;
|
return cfd;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +131,8 @@ e_int_config_theme_update(E_Config_Dialog *dia, char *file)
|
||||||
e_widget_flist_path_set(cfdata->o_fm, path, "/");
|
e_widget_flist_path_set(cfdata->o_fm, path, "/");
|
||||||
|
|
||||||
if (cfdata->o_preview)
|
if (cfdata->o_preview)
|
||||||
e_widget_preview_edje_set(cfdata->o_preview, cfdata->theme, "e/desktop/background");
|
e_widget_preview_edje_set(cfdata->o_preview, cfdata->theme,
|
||||||
|
"e/desktop/background");
|
||||||
if (cfdata->o_fm) e_widget_change(cfdata->o_fm);
|
if (cfdata->o_fm) e_widget_change(cfdata->o_fm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,27 +4,13 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
#include "e_mod_main.h"
|
#include "e_mod_main.h"
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/**/
|
|
||||||
/* actual module specifics */
|
/* actual module specifics */
|
||||||
|
static void _e_mod_run_cb(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_mod_run_cb(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_mod_menu_add(void *data, E_Menu *m);
|
||||||
static void _e_mod_menu_add(void *data, E_Menu *m);
|
|
||||||
|
|
||||||
static E_Module *conf_module = NULL;
|
static E_Module *conf_module = NULL;
|
||||||
static E_Int_Menu_Augmentation *maug = NULL;
|
static E_Int_Menu_Augmentation *maug = NULL;
|
||||||
|
|
||||||
/**/
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/**/
|
|
||||||
|
|
||||||
/**/
|
|
||||||
/***************************************************************************/
|
|
||||||
|
|
||||||
/***************************************************************************/
|
|
||||||
/**/
|
|
||||||
/* module setup */
|
/* module setup */
|
||||||
EAPI E_Module_Api e_modapi =
|
EAPI E_Module_Api e_modapi =
|
||||||
{
|
{
|
||||||
|
@ -35,9 +21,15 @@ EAPI E_Module_Api e_modapi =
|
||||||
EAPI void *
|
EAPI void *
|
||||||
e_modapi_init(E_Module *m)
|
e_modapi_init(E_Module *m)
|
||||||
{
|
{
|
||||||
e_configure_registry_category_add("appearance", 10, _("Look"), NULL, "preferences-appearance");
|
e_configure_registry_category_add("appearance", 10, _("Look"), NULL,
|
||||||
e_configure_registry_item_add("appearance/theme", 20, _("Theme"), NULL, "preferences-desktop-theme", e_int_config_theme);
|
"preferences-appearance");
|
||||||
maug = e_int_menus_menu_augmentation_add_sorted("config/1", _("Theme"), _e_mod_menu_add, NULL, NULL, NULL);
|
e_configure_registry_item_add("appearance/theme", 20, _("Theme"), NULL,
|
||||||
|
"preferences-desktop-theme",
|
||||||
|
e_int_config_theme);
|
||||||
|
|
||||||
|
maug =
|
||||||
|
e_int_menus_menu_augmentation_add_sorted("config/1", _("Theme"),
|
||||||
|
_e_mod_menu_add, NULL, NULL, NULL);
|
||||||
|
|
||||||
conf_module = m;
|
conf_module = m;
|
||||||
e_module_delayed_set(m, 1);
|
e_module_delayed_set(m, 1);
|
||||||
|
@ -48,13 +40,17 @@ EAPI int
|
||||||
e_modapi_shutdown(E_Module *m)
|
e_modapi_shutdown(E_Module *m)
|
||||||
{
|
{
|
||||||
E_Config_Dialog *cfd;
|
E_Config_Dialog *cfd;
|
||||||
|
|
||||||
/* remove module-supplied menu additions */
|
/* remove module-supplied menu additions */
|
||||||
if (maug)
|
if (maug)
|
||||||
{
|
{
|
||||||
e_int_menus_menu_augmentation_del("config/1", maug);
|
e_int_menus_menu_augmentation_del("config/1", maug);
|
||||||
maug = NULL;
|
maug = NULL;
|
||||||
}
|
}
|
||||||
while ((cfd = e_config_dialog_get("E", "_config_theme_dialog"))) e_object_del(E_OBJECT(cfd));
|
|
||||||
|
while ((cfd = e_config_dialog_get("E", "_config_theme_dialog")))
|
||||||
|
e_object_del(E_OBJECT(cfd));
|
||||||
|
|
||||||
e_configure_registry_item_del("appearance/theme");
|
e_configure_registry_item_del("appearance/theme");
|
||||||
e_configure_registry_category_del("appearance");
|
e_configure_registry_category_del("appearance");
|
||||||
conf_module = NULL;
|
conf_module = NULL;
|
||||||
|
|
Loading…
Reference in New Issue