efl_input_focus: add event_flags

Summary:
It appears that it could be interesting to know if a focus event has
already been procecced or not. However, a focus event based on scrolling
activity is not possible, therefore, error about that.

ref T7652

Reviewers: cedric, zmike, stefan_schmidt

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7652

Differential Revision: https://phab.enlightenment.org/D7732
This commit is contained in:
Marcel Hollerbach 2019-01-23 14:54:58 -05:00 committed by Mike Blumenkrantz
parent a50edaf17b
commit 5253229aa1
3 changed files with 18 additions and 0 deletions

View File

@ -116,6 +116,7 @@ struct _Efl_Input_Focus_Data
Efl_Input_Device *device; //The seat
Eo *object_wref; // wref on the focused object - Efl.Canvas.Object or Efl.Canvas.
double timestamp;
Efl_Input_Flags event_flags;
};
/* Internal helpers */

View File

@ -130,6 +130,22 @@ _efl_input_focus_efl_input_event_reset(Eo *obj, Efl_Input_Focus_Data *pd)
pd->eo = obj;
}
EOLIAN static void
_efl_input_focus_efl_input_event_event_flags_set(Eo *obj EINA_UNUSED, Efl_Input_Focus_Data *pd, Efl_Input_Flags flags)
{
if (flags == EFL_INPUT_FLAGS_SCROLLING)
ERR("A focus event cannot be created based on scrolling");
else
pd->event_flags |= flags;
}
EOLIAN static Efl_Input_Flags
_efl_input_focus_efl_input_event_event_flags_get(const Eo *obj EINA_UNUSED, Efl_Input_Focus_Data *pd)
{
return pd->event_flags;
}
/* Internal EO APIs */
#define EFL_INPUT_FOCUS_EXTRA_CLASS_OPS \

View File

@ -17,6 +17,7 @@ class Efl.Input.Focus extends Efl.Object implements Efl.Input.Event
Efl.Object.destructor;
Efl.Input.Event.device { get; set; }
Efl.Input.Event.reset;
Efl.Input.Event.event_flags { get; set;}
Efl.Duplicate.duplicate;
[[Creates a copy of this event. @Efl.Input.Event.fake is $true.