diff --git a/src/lib/efl/interfaces/efl_event_types.eot b/src/lib/efl/interfaces/efl_event_types.eot index 41a399a81e..2cb1fa7761 100644 --- a/src/lib/efl/interfaces/efl_event_types.eot +++ b/src/lib/efl/interfaces/efl_event_types.eot @@ -15,7 +15,7 @@ enum Efl.Pointer.Action in, [[Mouse or pointer entered the object.]] out, [[Mouse or pointer exited the object.]] wheel, [[Mouse wheel scroll, horizontally or vertically.]] - axis, [[Joystick event.]] + axis, [[Axis event (pen, stick, ...).]] } enum Efl.Pointer.Flags @@ -41,3 +41,27 @@ enum Efl.Event.Flags purposes and maybe some indications visually, but not actually perform anything.]] } + +enum Efl.Event.Object_Pointer_Mode { + [[How the mouse pointer should be handled by EFL. + + In the mode $autograb, when a mouse button is pressed down over an + object and held down, with the mouse pointer being moved outside of it, + the pointer still behaves as being bound to that object, albeit out + of its drawing region. When the button is released, the event will + be fed to the object, that may check if the final position is over it + or not and do something about it. + + In the mode $nograb, the pointer will always be bound to the object + right below it. + ]] + auto_grab, [[Default, X11-like.]] + no_grab, [[Pointer always bound to the object right below it.]] + no_grab_no_repeat_updown [[Useful on object with "repeat events" enabled, + where mouse/touch up and down events WON'T be + repeated to objects and these objects wont be + auto-grabbed. + + @since 1.2 + ]] +} diff --git a/src/lib/evas/Evas_Common.h b/src/lib/evas/Evas_Common.h index a6ccb3f116..296f49f8fa 100644 --- a/src/lib/evas/Evas_Common.h +++ b/src/lib/evas/Evas_Common.h @@ -371,6 +371,12 @@ typedef Efl_Text_Bidirectional_Type Evas_BiDi_Direction; #define EVAS_BIDI_DIRECTION_RTL EFL_TEXT_BIDIRECTIONAL_TYPE_RTL #define EVAS_BIDI_DIRECTION_INHERIT EFL_TEXT_BIDIRECTIONAL_TYPE_INHERIT +typedef Efl_Event_Object_Pointer_Mode Evas_Object_Pointer_Mode; + +#define EVAS_OBJECT_POINTER_MODE_AUTOGRAB EFL_EVENT_OBJECT_POINTER_MODE_AUTO_GRAB +#define EVAS_OBJECT_POINTER_MODE_NOGRAB EFL_EVENT_OBJECT_POINTER_MODE_NO_GRAB +#define EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN EFL_EVENT_OBJECT_POINTER_MODE_NO_GRAB_NO_REPEAT_UPDOWN + struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */ { int magic; /**< Magic number */ diff --git a/src/lib/evas/canvas/evas_object.eo b/src/lib/evas/canvas/evas_object.eo index 6d3fb54d9f..c362bb3920 100644 --- a/src/lib/evas/canvas/evas_object.eo +++ b/src/lib/evas/canvas/evas_object.eo @@ -22,28 +22,24 @@ abstract Evas.Object (Eo.Base, Evas.Common_Interface, Efl.Gfx, Efl.Gfx.Stack, } } @property pointer_mode { - set { - [[Set pointer behavior. + [[Low-level pointer behaviour. - This function has direct effect on event callbacks related to - mouse. + This function has a direct effect on event callbacks related to + pointers (mouse, ...). - If $setting is EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when - mouse is down at this object, events will be restricted to - it as source, mouse moves, for example, will be emitted even - if outside this object area. + If the value is @Efl.Event.Object_Pointer_Mode.auto_grab (default), + then when mouse is pressed down over this object, events will be + restricted to it as source, mouse moves, for example, will be + emitted even when the pointer goes outside this objects + geometry. - If $setting is EVAS_OBJECT_POINTER_MODE_NOGRAB, then events - will be emitted just when inside this object area. + If the value is @Efl.Event.Object_Pointer_Mode.no_grab, then events + will be emitted just when inside this object area. - The default value is EVAS_OBJECT_POINTER_MODE_AUTOGRAB. - ]] - } - get { - [[Determine how pointer will behave.]] - } + The default value is @Efl.Event.Object_Pointer_Mode.auto_grab. + ]] values { - pointer_mode: Evas.Object_Pointer_Mode; [[Desired behavior.]] + pointer_mode: Efl.Event.Object_Pointer_Mode; } } @property render_op { diff --git a/src/lib/evas/canvas/evas_types.eot b/src/lib/evas/canvas/evas_types.eot index 9f0db32d6b..ee3cdcc5d7 100644 --- a/src/lib/evas/canvas/evas_types.eot +++ b/src/lib/evas/canvas/evas_types.eot @@ -4,30 +4,6 @@ struct @extern Evas.Video_Surface; /* FIXME: The structure is full of the unsupp type Evas.Modifier_Mask: ullong; [[An Evas modifier mask type]] type Evas.Coord: int; [[A type for coordinates]] -enum Evas.Object_Pointer_Mode { - [[How the mouse pointer should be handled by Evas. - - In the mode #EVAS_OBJECT_POINTER_MODE_AUTOGRAB, when a mouse button - is pressed down over an object and held, with the mouse pointer - being moved outside of it, the pointer still behaves as being bound - to that object, albeit out of its drawing region. When the button - is released, the event will be fed to the object, that may check if - the final position is over it or not and do something about it. - - In the mode #EVAS_OBJECT_POINTER_MODE_NOGRAB, the pointer will - always be bound to the object right below it. - ]] - autograb, [[default, X11-like]] - nograb, [[pointer always bound to the object right below it]] - nograb_no_repeat_updown [[useful on object with "repeat events" enabled, - where mouse/touch up and down events WONT be - repeated to objects and these objects wont be - auto-grabbed. - - @since 1.2 - ]] -} - enum Evas.Display_Mode { none = 0, [[Default mode]] compress = 1, [[Use this mode when you want to give compress display mode