raster pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=cc0f075b2742b767c63a29fb34d7137288953976
commit cc0f075b2742b767c63a29fb34d7137288953976 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Sat Oct 12 14:31:03 2013 +0900 make theme auto-reload emit signals to configure stuff properly! --- src/bin/main.c | 63 ++++++++++++++++++++++++++++++++++----------------------- src/bin/utils.c | 7 +++++++ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index b8260e9..41a1b2f 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -1998,32 +1998,8 @@ main_term_free(Term *term) } static void -main_term_bg_redo(Term *term) +main_term_bg_config(Term *term) { - Evas_Object *o; - - if (term->tabcount_spacer) - { - evas_object_del(term->tabcount_spacer); - term->tabcount_spacer = NULL; - } - evas_object_del(term->base); - evas_object_del(term->bg); - - term->base = o = edje_object_add(evas_object_evas_get(term->wn->win)); - theme_apply(o, term->config, "terminology/core"); - - theme_auto_reload_enable(o); - evas_object_show(o); - - term->bg = o = edje_object_add(evas_object_evas_get(term->wn->win)); - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); - theme_apply(o, term->config, "terminology/background"); - - theme_auto_reload_enable(o); - evas_object_show(o); - if (term->config->translucent) { edje_object_signal_emit(term->bg, "translucent,on", "terminology"); @@ -2089,6 +2065,39 @@ main_term_bg_redo(Term *term) } } +static void +main_term_bg_redo(Term *term) +{ + Evas_Object *o; + + if (term->tabcount_spacer) + { + evas_object_del(term->tabcount_spacer); + term->tabcount_spacer = NULL; + } + evas_object_del(term->base); + evas_object_del(term->bg); + + term->base = o = edje_object_add(evas_object_evas_get(term->wn->win)); + theme_apply(o, term->config, "terminology/core"); + + theme_auto_reload_enable(o); + evas_object_data_set(o, "theme_reload_func", main_term_bg_config); + evas_object_data_set(o, "theme_reload_func_data", term); + evas_object_show(o); + + term->bg = o = edje_object_add(evas_object_evas_get(term->wn->win)); + evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); + theme_apply(o, term->config, "terminology/background"); + + theme_auto_reload_enable(o); + evas_object_data_set(o, "theme_reload_func", main_term_bg_config); + evas_object_data_set(o, "theme_reload_func_data", term); + evas_object_show(o); + main_term_bg_config(term); +} + static Term * main_term_new(Win *wn, Config *config, const char *cmd, Eina_Bool login_shell, const char *cd, @@ -2112,6 +2121,8 @@ main_term_new(Win *wn, Config *config, const char *cmd, theme_apply(o, term->config, "terminology/core"); theme_auto_reload_enable(o); + evas_object_data_set(o, "theme_reload_func", main_term_bg_config); + evas_object_data_set(o, "theme_reload_func_data", term); evas_object_show(o); term->bg = o = edje_object_add(evas_object_evas_get(wn->win)); @@ -2126,6 +2137,8 @@ main_term_new(Win *wn, Config *config, const char *cmd, } theme_auto_reload_enable(o); + evas_object_data_set(o, "theme_reload_func", main_term_bg_config); + evas_object_data_set(o, "theme_reload_func_data", term); evas_object_show(o); if (term->config->translucent) diff --git a/src/bin/utils.c b/src/bin/utils.c index 027254e..67fb71c 100644 --- a/src/bin/utils.c +++ b/src/bin/utils.c @@ -43,7 +43,14 @@ theme_reload(Evas_Object *edje) static void theme_reload_cb(void *data EINA_UNUSED, Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) { + void (*func) (void *d); + void *func_data; + theme_reload(obj); + func = evas_object_data_get(obj, "theme_reload_func"); + func_data = evas_object_data_get(obj, "theme_reload_func_data"); + printf("%p %p\n", func, func_data); + if (func) func(func_data); } void --
