static void _signal_unpressed(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _on_focus_hook(void *data, Evas_Object *obj);
static void _selection_done(void *data, Evas_Object *obj, void *event_info);
+static void _activate(Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
static const char SIG_CLICKED[] = "clicked";
static const char SIG_UNPRESSED[] = "unpressed";
}
static void
-_signal_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+_activate(Evas_Object *obj)
{
- Widget_Data *wd = elm_widget_data_get(data);
+ Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
- evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
+ evas_object_smart_callback_call(obj, SIG_CLICKED, NULL);
/* safe guard when the theme does not emit the 'unpress' signal */
- _signal_unpressed(data, obj, emission, source);
+ _signal_unpressed(obj, wd->btn, NULL, NULL);
+}
+
+static void
+_activate_hook(Evas_Object *obj)
+{
+ _activate(obj);
+}
+
+static void
+_signal_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ _activate(data);
}
static Evas_Object *
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
elm_widget_can_focus_set(obj, 1);
+ elm_widget_activate_hook_set(obj, _activate_hook);
wd->btn = edje_object_add(e);
_elm_theme_object_set(obj, wd->btn, "button", "base", "default");
static const char *widtype = NULL;
static void _del_pre_hook(Evas_Object *obj);
static void _del_hook(Evas_Object *obj);
+static void _activate(Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
static void _disable_hook(Evas_Object *obj);
static void _sizing_eval(Evas_Object *obj);
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
}
static void
+_activate_hook(Evas_Object *obj)
+{
+ _activate(obj);
+}
+
+static void
_button_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{
_activate(data);
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
+ elm_widget_activate_hook_set(obj, _activate_hook);
wd->btn = elm_button_add(parent);
if (wd->horizontal)
static void _signal_pressed(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _signal_unpressed(void *data, Evas_Object *obj, const char *emission, const char *source);
static void _on_focus_hook(void *data, Evas_Object *obj);
+static void _activate(Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
static const char SIG_CLICKED[] = "clicked";
static const char SIG_REPEATED[] = "repeated";
}
static void
-_signal_clicked(void *data, Evas_Object *obj, const char *emission, const char *source)
+_activate(Evas_Object *obj)
{
- Widget_Data *wd = elm_widget_data_get(data);
+ Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->timer)
{
wd->timer = NULL;
}
wd->repeating = EINA_FALSE;
- evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
- _signal_unpressed(data, obj, emission, source); /* safe guard when the theme does not emit the 'unpress' signal */
+ evas_object_smart_callback_call(obj, SIG_CLICKED, NULL);
+ _signal_unpressed(obj, wd->btn, NULL, NULL); /* safe guard when the theme does not emit the 'unpress' signal */
+}
+
+static void
+_activate_hook(Evas_Object *obj)
+{
+ _activate(obj);
+}
+
+static void
+_signal_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ _activate(data);
}
static Eina_Bool
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
elm_widget_can_focus_set(obj, 1);
+ elm_widget_activate_hook_set(obj, _activate_hook);
wd->btn = edje_object_add(e);
_elm_theme_object_set(obj, wd->btn, "button", "base", "default");
static void _signal_check_off(void *data, Evas_Object *obj, const char *emission, const char *source);
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 void _on_focus_hook(void *data, Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
+static void _activate(Evas_Object *obj);
static const char SIG_CHANGED[] = "changed";
static const Evas_Smart_Cb_Description _signals[] = {
static void
_signal_check_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
{
- Widget_Data *wd = elm_widget_data_get(data);
+ _activate(data);
+}
+
+static void
+_activate_hook(Evas_Object *obj)
+{
+ _activate(obj);
+}
+
+static void
+_activate(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
wd->state = !wd->state;
if (wd->statep) *wd->statep = wd->state;
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, SIG_CHANGED, NULL);
+ evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
}
/**
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
+ elm_widget_can_focus_set(obj, 1);
+ elm_widget_activate_hook_set(obj, _activate_hook);
wd->chk = edje_object_add(e);
_elm_theme_object_set(obj, wd->chk, "check", "base", "default");
static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
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 void _on_focus_hook(void *data, Evas_Object *obj);
+static void _activate(Evas_Object *obj);
+static void _activate_hook(Evas_Object *obj);
static const char SIG_CHANGED[] = "changed";
static const Evas_Smart_Cb_Description _signals[] = {
}
static void
-_signal_radio_on(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+_activate(Evas_Object *obj)
{
- Widget_Data *wd = elm_widget_data_get(data);
+ Widget_Data *wd = elm_widget_data_get(obj);
if (!wd) return;
if (wd->group->value == wd->value) return;
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, SIG_CHANGED, NULL);
+ evas_object_smart_callback_call(obj, SIG_CHANGED, NULL);
+}
+
+static void
+_activate_hook(Evas_Object *obj)
+{
+ _activate(obj);
+}
+
+static void
+_signal_radio_on(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+ _activate(data);
}
/**
elm_widget_del_hook_set(obj, _del_hook);
elm_widget_theme_hook_set(obj, _theme_hook);
elm_widget_disable_hook_set(obj, _disable_hook);
+ elm_widget_can_focus_set(obj, 1);
+ elm_widget_activate_hook_set(obj, _activate_hook);
wd->radio = edje_object_add(e);
_elm_theme_object_set(obj, wd->radio, "radio", "base", "default");