elementary/layout - added theme changed hook
authorhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 08:36:40 +0000 (08:36 +0000)
committerhermet <hermet@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 20 Jul 2011 08:36:40 +0000 (08:36 +0000)
Because the user can use their' own edj objs and call the signals for the edj objs,
They have a responsibility to reset the status of the edj objs when layout theme is changed.

This "theme,changed" signal provides to user a chance to reset (signal-emit) again.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@61518 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Elementary.h.in
src/lib/elm_layout.c

index 7ab5788..843eb31 100644 (file)
@@ -4794,6 +4794,7 @@ extern "C" {
   elm_layout_text_get((_ly), "elm.text")
 
    /* smart callbacks called:
+    * "theme,changed" - when elm theme is changed.
     */
 
    /* notify */
index 34e2e61..41576a2 100644 (file)
@@ -69,6 +69,13 @@ static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *eve
 static void _sub_del(void *data, Evas_Object *obj, void *event_info);
 static void _part_cursor_free(Part_Cursor *pc);
 
+static const char SIG_THEME_CHANGED[] = "theme,changed";
+
+static const Evas_Smart_Cb_Description _signals[] = {
+   {SIG_THEME_CHANGED, ""},
+   {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -106,6 +113,7 @@ _theme_hook(Evas_Object *obj)
    _elm_theme_object_set(obj, wd->lay, wd->clas, wd->group, wd->style);
    edje_object_scale_set(wd->lay, elm_widget_scale_get(obj) *
                          _elm_config->scale);
+   evas_object_smart_callback_call(obj, SIG_THEME_CHANGED, (void *) elm_theme_get(NULL));
    _sizing_eval(wd);
 }
 
@@ -398,6 +406,7 @@ elm_layout_add(Evas_Object *parent)
                                    _signal_size_eval, wd);
 
    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
 
    _mirrored_set(obj, elm_widget_mirrored_get(obj));
    _request_sizing_eval(wd);