diff options
author | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2019-08-20 20:09:16 +0200 |
---|---|---|
committer | Marcel Hollerbach <mail@marcel-hollerbach.de> | 2019-08-26 14:42:52 +0200 |
commit | fea6dc6a55af37d9a2ba468a22d72d8b0b2f5006 (patch) | |
tree | fdd628ebd0be42e969fee77e19607173d6749b81 | |
parent | 43edd17f41308ba3bf42b38f727aad76db87aa72 (diff) | |
download | efl-fea6dc6a55af37d9a2ba468a22d72d8b0b2f5006.tar.gz |
efl_input_clickable: add a flag for showing user interaction
this flag can be used to indicate that a user activly interacted with
this widget.
ref T7893
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9663
-rw-r--r-- | src/lib/evas/canvas/efl_input_clickable.c | 13 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_input_clickable.eo | 9 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/efl_input_clickable.c b/src/lib/evas/canvas/efl_input_clickable.c index fc91803655..81ef8d8644 100644 --- a/src/lib/evas/canvas/efl_input_clickable.c +++ b/src/lib/evas/canvas/efl_input_clickable.c @@ -17,6 +17,7 @@ typedef struct { typedef struct { Button_State state[3]; + Eina_Bool interaction; } Efl_Input_Clickable_Data; #define MY_CLASS EFL_INPUT_CLICKABLE_MIXIN @@ -48,6 +49,7 @@ _efl_input_clickable_press(Eo *obj EINA_UNUSED, Efl_Input_Clickable_Data *pd, un Button_State *state; EINA_SAFETY_ON_FALSE_RETURN(button < 3); + pd->interaction = EINA_TRUE; INF("Widget %s,%p is pressed(%d)", efl_class_name_get(obj), obj, button); state = &pd->state[button]; @@ -60,6 +62,7 @@ _efl_input_clickable_press(Eo *obj EINA_UNUSED, Efl_Input_Clickable_Data *pd, un efl_event_callback_add(efl_added, EFL_LOOP_TIMER_EVENT_TIMER_TICK, _timer_longpress, obj)); efl_event_callback_call(obj, EFL_INPUT_EVENT_PRESSED, &button); + pd->interaction = EINA_FALSE; } EOLIAN static void @@ -70,6 +73,8 @@ _efl_input_clickable_unpress(Eo *obj EINA_UNUSED, Efl_Input_Clickable_Data *pd, Eina_Bool pressed; EINA_SAFETY_ON_FALSE_RETURN(button < 3); + pd->interaction = EINA_TRUE; + state = &pd->state[button]; EINA_SAFETY_ON_NULL_RETURN(state); @@ -99,6 +104,7 @@ _efl_input_clickable_unpress(Eo *obj EINA_UNUSED, Efl_Input_Clickable_Data *pd, efl_event_callback_call(obj, EFL_INPUT_EVENT_CLICKED, &clicked); efl_event_callback_call(obj, EFL_INPUT_EVENT_CLICKED_ANY, &clicked); } + pd->interaction = EINA_FALSE; } EOLIAN static void @@ -133,4 +139,11 @@ _efl_input_clickable_longpress_abort(Eo *obj EINA_UNUSED, Efl_Input_Clickable_Da efl_del(state->timer); state->timer = NULL; } + +EOLIAN static Eina_Bool +_efl_input_clickable_interaction_get(const Eo *obj EINA_UNUSED, Efl_Input_Clickable_Data *pd) +{ + return pd->interaction; +} + #include "efl_input_clickable.eo.c" diff --git a/src/lib/evas/canvas/efl_input_clickable.eo b/src/lib/evas/canvas/efl_input_clickable.eo index bd0be0cfdd..680c0fbdb7 100644 --- a/src/lib/evas/canvas/efl_input_clickable.eo +++ b/src/lib/evas/canvas/efl_input_clickable.eo @@ -45,6 +45,15 @@ mixin @beta Efl.Input.Clickable button : uint; } } + @property interaction { + [[This returns true if the given object is currently in event emission]] + get { + + } + values { + interaction : bool; + } + } } events { clicked: Efl.Input.Clickable_Clicked; [[Called when object is in sequence pressed and unpressed, by the primary button]] |