summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Hollerbach <mail@marcel-hollerbach.de>2019-08-20 20:09:16 +0200
committerMarcel Hollerbach <mail@marcel-hollerbach.de>2019-08-26 14:42:52 +0200
commitfea6dc6a55af37d9a2ba468a22d72d8b0b2f5006 (patch)
treefdd628ebd0be42e969fee77e19607173d6749b81
parent43edd17f41308ba3bf42b38f727aad76db87aa72 (diff)
downloadefl-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.c13
-rw-r--r--src/lib/evas/canvas/efl_input_clickable.eo9
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]]