Describe more widgets callbacks.
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 26 Mar 2010 10:59:56 +0000 (10:59 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 26 Mar 2010 10:59:56 +0000 (10:59 +0000)
These are all that Editje support now :-) Add others later as
required, but patches are welcome!

SVN revision: 47488

src/lib/elc_scrolled_entry.c
src/lib/elm_check.c
src/lib/elm_entry.c
src/lib/elm_radio.c
src/lib/elm_scroller.c
src/lib/elm_slider.c
src/lib/elm_toggle.c

index 5175d44..6627557 100644 (file)
@@ -12,6 +12,37 @@ struct _Widget_Data
 };
 
 static const char *widtype = NULL;
+
+static const char SIG_CHANGED[] = "changed";
+static const char SIG_ACTIVATED[] = "activated";
+static const char SIG_PRESS[] = "press";
+static const char SIG_LONGPRESSED[] = "longpressed";
+static const char SIG_CLICKED[] = "clicked";
+static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
+static const char SIG_SELECTION_PASTE[] = "selection,paste";
+static const char SIG_SELECTION_COPY[] = "selection,copy";
+static const char SIG_SELECTION_CUT[] = "selection,cut";
+static const char SIG_SELECTION_START[] = "selection,start";
+static const char SIG_SELECTION_CHANGED[] = "selection,changed";
+static const char SIG_SELECTION_CLEARED[] = "selection,cleared";
+static const char SIG_CURSOR_CHANGED[] = "cursor,changed";
+static const char SIG_ANCHOR_CLICKED[] = "anchor,clicked";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {SIG_ACTIVATED, ""},
+  {SIG_PRESS, ""},
+  {SIG_LONGPRESSED, ""},
+  {SIG_SELECTION_PASTE, ""},
+  {SIG_SELECTION_COPY, ""},
+  {SIG_SELECTION_CUT, ""},
+  {SIG_SELECTION_START, ""},
+  {SIG_SELECTION_CHANGED, ""},
+  {SIG_SELECTION_CLEARED, ""},
+  {SIG_CURSOR_CHANGED, ""},
+  {SIG_ANCHOR_CLICKED, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -64,85 +95,85 @@ static void
 _entry_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    _sizing_eval(data);
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 static void
 _entry_activated(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "activated", NULL);
+   evas_object_smart_callback_call(data, SIG_ACTIVATED, NULL);
 }
 
 static void
 _entry_press(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "press", NULL);
+   evas_object_smart_callback_call(data, SIG_PRESS, NULL);
 }
 
 static void
 _entry_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "clicked", NULL);
+   evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
 }
 
 static void
 _entry_clicked_double(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "clicked,double", NULL);
+   evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, NULL);
 }
 
 static void
 _entry_cursor_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "cursor,changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CURSOR_CHANGED, NULL);
 }
 
 static void
 _entry_anchor_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "anchor,clicked", NULL);
+   evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, NULL);
 }
 
 static void
 _entry_selection_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,start", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_START, NULL);
 }
 
 static void
 _entry_selection_changed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,changed", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
 }
 
 static void
 _entry_selection_cleared(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,cleared", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CLEARED, NULL);
 }
 
 static void
 _entry_selection_paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,paste", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
 }
 
 static void
 _entry_selection_copy(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,copy", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_COPY, NULL);
 }
 
 static void
 _entry_selection_cut(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "selection,cut", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CUT, NULL);
 }
 
 static void
 _entry_longpressed(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "longpressed", NULL);
+   evas_object_smart_callback_call(data, SIG_LONGPRESSED, NULL);
 }
 
 static void
@@ -206,6 +237,9 @@ elm_scrolled_entry_add(Evas_Object *parent)
 
    _sizing_eval(obj);
 
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index 2379240..2a5f9cc 100644 (file)
@@ -40,6 +40,12 @@ static void _signal_check_off(void *data, Evas_Object *obj, const char *emission
 static void _signal_check_on(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void _signal_check_toggle(void *data, Evas_Object *obj, const char *emission, const char *source);
 
+static const char SIG_CHANGED[] = "changed";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -132,7 +138,7 @@ _signal_check_off(void *data, Evas_Object *obj __UNUSED__, const char *emission
    wd->state = EINA_FALSE;
    if (wd->statep) *wd->statep = wd->state;
    edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm");
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 static void
@@ -143,7 +149,7 @@ _signal_check_on(void *data, Evas_Object *obj __UNUSED__, const char *emission _
    wd->state = EINA_TRUE;
    if (wd->statep) *wd->statep = wd->state;
    edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm");
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 static void
@@ -157,7 +163,7 @@ _signal_check_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emissi
      edje_object_signal_emit(wd->chk, "elm,state,check,on", "elm");
    else
      edje_object_signal_emit(wd->chk, "elm,state,check,off", "elm");
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 /**
@@ -199,6 +205,10 @@ elm_check_add(Evas_Object *parent)
    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
 
    _sizing_eval(obj);
+
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index 6a1a394..4f064ae 100644 (file)
@@ -63,6 +63,36 @@ static void _signal_entry_copy_notify(void *data, Evas_Object *obj, const char *
 static void _signal_entry_cut_notify(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void _signal_cursor_changed(void *data, Evas_Object *obj, const char *emission, const char *source);
 
+static const char SIG_CHANGED[] = "changed";
+static const char SIG_ACTIVATED[] = "activated";
+static const char SIG_PRESS[] = "press";
+static const char SIG_LONGPRESSED[] = "longpressed";
+static const char SIG_CLICKED[] = "clicked";
+static const char SIG_CLICKED_DOUBLE[] = "clicked,double";
+static const char SIG_SELECTION_PASTE[] = "selection,paste";
+static const char SIG_SELECTION_COPY[] = "selection,copy";
+static const char SIG_SELECTION_CUT[] = "selection,cut";
+static const char SIG_SELECTION_START[] = "selection,start";
+static const char SIG_SELECTION_CHANGED[] = "selection,changed";
+static const char SIG_SELECTION_CLEARED[] = "selection,cleared";
+static const char SIG_CURSOR_CHANGED[] = "cursor,changed";
+static const char SIG_ANCHOR_CLICKED[] = "anchor,clicked";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {SIG_ACTIVATED, ""},
+  {SIG_PRESS, ""},
+  {SIG_LONGPRESSED, ""},
+  {SIG_SELECTION_PASTE, ""},
+  {SIG_SELECTION_COPY, ""},
+  {SIG_SELECTION_CUT, ""},
+  {SIG_SELECTION_START, ""},
+  {SIG_SELECTION_CHANGED, ""},
+  {SIG_SELECTION_CLEARED, ""},
+  {SIG_CURSOR_CHANGED, ""},
+  {SIG_ANCHOR_CLICKED, ""},
+  {NULL, NULL}
+};
+
 static Eina_List *entries = NULL;
 
 struct _Mod_Api
@@ -300,7 +330,7 @@ _paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "selection,paste", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
    if (wd->sel_notify_handler)
      {
 #ifdef HAVE_ELEMENTARY_X
@@ -447,7 +477,7 @@ _long_press(void *data)
         edje_object_part_text_select_abort(wd->ent, "elm.text");
      }
    wd->longpress_timer = NULL;
-   evas_object_smart_callback_call(data, "longpressed", NULL);
+   evas_object_smart_callback_call(data, SIG_LONGPRESSED, NULL);
    return 0;
 }
 
@@ -757,7 +787,7 @@ _signal_entry_changed(void *data, Evas_Object *obj __UNUSED__, const char *emiss
    _sizing_eval(data);
    if (wd->text) eina_stringshare_del(wd->text);
    wd->text = NULL;
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 static void
@@ -772,7 +802,7 @@ _signal_selection_start(void *data, Evas_Object *obj __UNUSED__, const char *emi
        if (entry != data) elm_entry_select_none(entry);
      }
    wd->have_selection = EINA_TRUE;
-   evas_object_smart_callback_call(data, "selection,start", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_START, NULL);
    if (wd->sel_notify_handler)
      {
        char *txt = _mkup_to_text(elm_entry_selection_get(data));
@@ -798,7 +828,7 @@ _signal_selection_changed(void *data, Evas_Object *obj __UNUSED__, const char *e
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
    wd->have_selection = EINA_TRUE;
-   evas_object_smart_callback_call(data, "selection,changed", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CHANGED, NULL);
    if (wd->sel_notify_handler)
      {
        char *txt = _mkup_to_text(elm_entry_selection_get(data));
@@ -825,7 +855,7 @@ _signal_selection_cleared(void *data, Evas_Object *obj __UNUSED__, const char *e
    if (!wd) return;
    if (!wd->have_selection) return;
    wd->have_selection = EINA_FALSE;
-   evas_object_smart_callback_call(data, "selection,cleared", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CLEARED, NULL);
    if (wd->sel_notify_handler)
      {
        if (wd->cut_sel)
@@ -868,7 +898,7 @@ _signal_entry_paste_request(void *data, Evas_Object *obj __UNUSED__, const char
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "selection,paste", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
    if (wd->sel_notify_handler)
      {
 #ifdef HAVE_ELEMENTARY_X
@@ -890,7 +920,7 @@ _signal_entry_copy_notify(void *data, Evas_Object *obj __UNUSED__, const char *e
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "selection,copy", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_COPY, NULL);
 }
 
 static void
@@ -899,7 +929,7 @@ _signal_entry_cut_notify(void *data, Evas_Object *obj __UNUSED__, const char *em
    Widget_Data *wd = elm_widget_data_get(data);
    char *txt;
    if (!wd) return;
-   evas_object_smart_callback_call(data, "selection,cut", NULL);
+   evas_object_smart_callback_call(data, SIG_SELECTION_CUT, NULL);
    txt = _mkup_to_text(elm_entry_selection_get(data));
    eina_stringshare_replace(&wd->cut_sel, txt);
    if (txt) free(txt);
@@ -914,7 +944,7 @@ _signal_cursor_changed(void *data, Evas_Object *obj __UNUSED__, const char *emis
    Widget_Data *wd = elm_widget_data_get(data);
    Evas_Coord cx, cy, cw, ch;
    if (!wd) return;
-   evas_object_smart_callback_call(data, "cursor,changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CURSOR_CHANGED, NULL);
    edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
                                              &cx, &cy, &cw, &ch);
    if (!wd->deferred_recalc_job)
@@ -986,7 +1016,7 @@ _signal_anchor_up(void *data, Evas_Object *obj __UNUSED__, const char *emission,
               }
          }
        if (!wd->disabled)
-         evas_object_smart_callback_call(data, "anchor,clicked", &ei);
+         evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, &ei);
      }
 }
 
@@ -1016,7 +1046,7 @@ _signal_key_enter(void *data, Evas_Object *obj __UNUSED__, const char *emission
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "activated", NULL);
+   evas_object_smart_callback_call(data, SIG_ACTIVATED, NULL);
 }
 
 static void
@@ -1024,7 +1054,7 @@ _signal_mouse_down(void *data, Evas_Object *obj __UNUSED__, const char *emission
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "press", NULL);
+   evas_object_smart_callback_call(data, SIG_PRESS, NULL);
 }
 
 static void
@@ -1032,7 +1062,7 @@ _signal_mouse_up(void *data, Evas_Object *obj __UNUSED__, const char *emission _
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "clicked", NULL);
+   evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
 }
 
 static void
@@ -1040,7 +1070,7 @@ _signal_mouse_double(void *data, Evas_Object *obj __UNUSED__, const char *emissi
 {
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
-   evas_object_smart_callback_call(data, "clicked,double", NULL);
+   evas_object_smart_callback_call(data, SIG_CLICKED_DOUBLE, NULL);
 }
 
 #ifdef HAVE_ELEMENTARY_X
@@ -1186,6 +1216,9 @@ elm_entry_add(Evas_Object *parent)
    // if found - hook in
    if ((wd->api) && (wd->api->obj_hook)) wd->api->obj_hook(obj);
 
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index b767792..ba84d48 100644 (file)
@@ -60,6 +60,12 @@ 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 _signal_radio_on(void *data, Evas_Object *obj, const char *emission, const char *source);
 
+static const char SIG_CHANGED[] = "changed";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -192,7 +198,7 @@ _signal_radio_on(void *data, Evas_Object *obj __UNUSED__, const char *emission _
    wd->group->value = wd->value;
    if (wd->group->valuep) *(wd->group->valuep) = wd->group->value;
    _state_set_all(wd);
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 /**
@@ -234,6 +240,10 @@ elm_radio_add(Evas_Object *parent)
    wd->state = 0;
 
    _sizing_eval(obj);
+
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index 2a3b2a0..4956145 100644 (file)
@@ -50,6 +50,28 @@ static void _show_region_hook(void *data, Evas_Object *obj);
 static void _sizing_eval(Evas_Object *obj);
 static void _sub_del(void *data, Evas_Object *obj, void *event_info);
 
+static const char SIG_SCROLL[] = "scroll";
+static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
+static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
+static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
+static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop";
+static const char SIG_EDGE_LEFT[] = "edge,left";
+static const char SIG_EDGE_RIGHT[] = "edge,right";
+static const char SIG_EDGE_TOP[] = "edge,top";
+static const char SIG_EDGE_BOTTOM[] = "edge,bottom";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_SCROLL, ""},
+  {SIG_SCROLL_ANIM_START, ""},
+  {SIG_SCROLL_ANIM_STOP, ""},
+  {SIG_SCROLL_DRAG_START, ""},
+  {SIG_SCROLL_DRAG_STOP, ""},
+  {SIG_EDGE_LEFT, ""},
+  {SIG_EDGE_RIGHT, ""},
+  {SIG_EDGE_TOP, ""},
+  {SIG_EDGE_BOTTOM, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -204,55 +226,55 @@ _resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event
 static void
 _edge_left(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "edge,left", NULL);
+   evas_object_smart_callback_call(data, SIG_EDGE_LEFT, NULL);
 }
 
 static void
 _edge_right(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "edge,right", NULL);
+   evas_object_smart_callback_call(data, SIG_EDGE_RIGHT, NULL);
 }
 
 static void
 _edge_top(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "edge,top", NULL);
+   evas_object_smart_callback_call(data, SIG_EDGE_TOP, NULL);
 }
 
 static void
 _edge_bottom(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "edge,bottom", NULL);
+   evas_object_smart_callback_call(data, SIG_EDGE_BOTTOM, NULL);
 }
 
 static void
 _scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "scroll", NULL);
+   evas_object_smart_callback_call(data, SIG_SCROLL, NULL);
 }
 
 static void
 _scroll_anim_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "scroll,anim,start", NULL);
+   evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_START, NULL);
 }
 
 static void
 _scroll_anim_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "scroll,anim,stop", NULL);
+   evas_object_smart_callback_call(data, SIG_SCROLL_ANIM_STOP, NULL);
 }
 
 static void
 _scroll_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "scroll,drag,start", NULL);
+   evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_START, NULL);
 }
 
 static void
 _scroll_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   evas_object_smart_callback_call(data, "scroll,drag,stop", NULL);
+   evas_object_smart_callback_call(data, SIG_SCROLL_DRAG_STOP, NULL);
 }
 
 /**
@@ -314,6 +336,10 @@ elm_scroller_add(Evas_Object *parent)
    evas_object_smart_callback_add(wd->scr, "drag,stop", _scroll_drag_stop, obj);
 
    _sizing_eval(obj);
+
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index c6fd167..f88df28 100644 (file)
@@ -66,6 +66,18 @@ static void _sub_del(void *data, Evas_Object *obj, void *event_info);
 static void _units_set(Evas_Object *obj);
 static void _indicator_set(Evas_Object *obj);
 
+static const char SIG_CHANGED[] = "changed";
+static const char SIG_DELAY_CHANGED[] = "delay,changed";
+static const char SIG_DRAG_START[] = "slider,drag,start";
+static const char SIG_DRAG_STOP[] = "slider,drag,stop";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {SIG_DELAY_CHANGED, ""},
+  {SIG_DRAG_START, ""},
+  {SIG_DRAG_STOP, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -158,7 +170,7 @@ _delay_change(void *data)
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return 0;
    wd->delay = NULL;
-   evas_object_smart_callback_call(data, "delay,changed", NULL);
+   evas_object_smart_callback_call(data, SIG_DELAY_CHANGED, NULL);
    return 0;
 }
 
@@ -177,7 +189,7 @@ _val_fetch(Evas_Object *obj)
    if (val != wd->val)
      {
        wd->val = val;
-       evas_object_smart_callback_call(obj, "changed", NULL);
+       evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
        if (wd->delay) ecore_timer_del(wd->delay);
        wd->delay = ecore_timer_add(0.2, _delay_change, obj);
      }
@@ -248,7 +260,7 @@ static void
 _drag_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    _val_fetch(data);
-   evas_object_smart_callback_call(data, "slider,drag,start", NULL);
+   evas_object_smart_callback_call(data, SIG_DRAG_START, NULL);
    _units_set(data);
    _indicator_set(data);
 }
@@ -257,7 +269,7 @@ static void
 _drag_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    _val_fetch(data);
-   evas_object_smart_callback_call(data, "slider,drag,stop", NULL);
+   evas_object_smart_callback_call(data, SIG_DRAG_STOP, NULL);
    _units_set(data);
    _indicator_set(data);
 }
@@ -328,6 +340,10 @@ elm_slider_add(Evas_Object *parent)
    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
 
    _sizing_eval(obj);
+
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }
 
index 21532de..cc19b3d 100644 (file)
@@ -23,6 +23,12 @@ static void _sub_del(void *data, Evas_Object *obj, void *event_info);
 static void _signal_toggle_off(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void _signal_toggle_on(void *data, Evas_Object *obj, const char *emission, const char *source);
 
+static const char SIG_CHANGED[] = "changed";
+static const Evas_Smart_Cb_Description _signals[] = {
+  {SIG_CHANGED, ""},
+  {NULL, NULL}
+};
+
 static void
 _del_hook(Evas_Object *obj)
 {
@@ -117,7 +123,7 @@ _signal_toggle_off(void *data, Evas_Object *obj __UNUSED__, const char *emission
    if (!wd) return;
    wd->state = 0;
    if (wd->statep) *wd->statep = wd->state;
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 static void
@@ -127,7 +133,7 @@ _signal_toggle_on(void *data, Evas_Object *obj __UNUSED__, const char *emission
    if (!wd) return;
    wd->state = 1;
    if (wd->statep) *wd->statep = wd->state;
-   evas_object_smart_callback_call(data, "changed", NULL);
+   evas_object_smart_callback_call(data, SIG_CHANGED, NULL);
 }
 
 EAPI Evas_Object *
@@ -163,6 +169,10 @@ elm_toggle_add(Evas_Object *parent)
    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
 
    _sizing_eval(obj);
+
+   // TODO: convert Elementary to subclassing of Evas_Smart_Class
+   // TODO: and save some bytes, making descriptions per-class and not instance!
+   evas_object_smart_callbacks_descriptions_set(obj, _signals);
    return obj;
 }