summaryrefslogtreecommitdiff
path: root/src/lib/elementary/efl_ui_clickable_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elementary/efl_ui_clickable_util.c')
-rw-r--r--src/lib/elementary/efl_ui_clickable_util.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/lib/elementary/efl_ui_clickable_util.c b/src/lib/elementary/efl_ui_clickable_util.c
index b11e0c50e2..3243b725bb 100644
--- a/src/lib/elementary/efl_ui_clickable_util.c
+++ b/src/lib/elementary/efl_ui_clickable_util.c
@@ -38,9 +38,24 @@ _on_mouse_out(void *data,
efl_ui_clickable_button_state_reset(data, 1);
}
+static void
+_theme_move_cb(void *data, const Efl_Event *ev EINA_UNUSED)
+{
+ Efl_Input_Pointer *pointer = ev->info;
+
+ if (efl_input_processed_get(pointer))
+ efl_ui_clickable_button_state_reset(data, 1);
+}
+
+EFL_CALLBACKS_ARRAY_DEFINE(bind_to_theme_callbacks,
+ {EFL_EVENT_POINTER_MOVE, _theme_move_cb},
+)
+
EOLIAN static void
_efl_ui_clickable_util_bind_to_theme(Efl_Canvas_Layout *object, Efl_Ui_Clickable *clickable)
{
+ efl_event_callback_array_add(object, bind_to_theme_callbacks(), clickable);
+
efl_layout_signal_callback_add(object, "efl,action,press", "*", clickable, _on_press_cb, NULL);
efl_layout_signal_callback_add(object, "efl,action,unpress", "*", clickable, _on_unpress_cb, NULL);
efl_layout_signal_callback_add(object, "efl,action,mouse_out", "*", clickable, _on_mouse_out, NULL);
@@ -84,7 +99,7 @@ _unpress_cb(void *data, const Efl_Event *ev EINA_UNUSED)
}
}
-EFL_CALLBACKS_ARRAY_DEFINE(bind_to_theme_callbacks,
+EFL_CALLBACKS_ARRAY_DEFINE(bind_to_object_callbacks,
{EFL_EVENT_POINTER_DOWN, _press_cb},
{EFL_EVENT_POINTER_UP, _unpress_cb},
)
@@ -92,7 +107,7 @@ EFL_CALLBACKS_ARRAY_DEFINE(bind_to_theme_callbacks,
EOLIAN static void
_efl_ui_clickable_util_bind_to_object(Efl_Input_Interface *object, Efl_Ui_Clickable *clickable)
{
- efl_event_callback_array_add(object, bind_to_theme_callbacks(), clickable);
+ efl_event_callback_array_add(object, bind_to_object_callbacks(), clickable);
}