};
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)
{
_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
_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;
}
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)
{
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
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
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);
}
/**
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;
}
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
{
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
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;
}
_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
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));
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));
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)
{
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
{
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
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);
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)
}
}
if (!wd->disabled)
- evas_object_smart_callback_call(data, "anchor,clicked", &ei);
+ evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, &ei);
}
}
{
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
{
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
{
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
{
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
// 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;
}
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)
{
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);
}
/**
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;
}
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)
{
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);
}
/**
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;
}
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)
{
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;
}
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);
}
_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);
}
_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);
}
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;
}
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)
{
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
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 *
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;
}