From a885c8c0402d142efce67fac8f57b8e019e57022 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 9 Dec 2015 16:21:31 +0900 Subject: [PATCH] e - fix using an invalid icon theme - fall back to hicolor if not exists this should fix D2036 on the e side by checking validity of an icon theme once efreet has finished scanning for stuff and if its invalid, going back to hicolor. @fix --- src/bin/e_config.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 00d420750..7e30bc065 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -56,6 +56,7 @@ E_API int E_EVENT_CONFIG_MODE_CHANGED = 0; E_API int E_EVENT_CONFIG_LOADED = 0; static E_Dialog *_e_config_error_dialog = NULL; +static Eina_List *handlers = NULL; typedef struct _E_Color_Class { @@ -65,6 +66,24 @@ typedef struct _E_Color_Class int r3, g3, b3, a3; } E_Color_Class; +static Eina_Bool +_e_config_cb_efreet_cache_update(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev EINA_UNUSED) +{ + if (e_config) + { + if (e_config->icon_theme) + { + if (!efreet_icon_theme_find(e_config->icon_theme)) + { + e_config->icon_theme = eina_stringshare_add("hicolor"); + e_config_save_queue(); + } + } + } + return ECORE_CALLBACK_RENEW; +} + + static void _e_config_error_dialog_cb_delete(void *dia) { @@ -933,12 +952,21 @@ e_config_init(void) e_config_load(); e_config_save_queue(); + + E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_DESKTOP_CACHE_UPDATE, + _e_config_cb_efreet_cache_update, NULL); + E_LIST_HANDLER_APPEND(handlers, EFREET_EVENT_ICON_CACHE_UPDATE, + _e_config_cb_efreet_cache_update, NULL); + E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_ICON_THEME, + _e_config_cb_efreet_cache_update, NULL); + return 1; } EINTERN int e_config_shutdown(void) { + E_FREE_LIST(handlers, ecore_event_handler_del); eina_stringshare_del(_e_config_profile); E_CONFIG_DD_FREE(_e_config_binding_edd); E_CONFIG_DD_FREE(_e_config_bindings_mouse_edd);