forked from enlightenment/efl
evas events: Rename properties and introduce generic value
This paves the way to a merge of pointer and axis events into the class Efl.Event.Pointer.
This commit is contained in:
parent
ef4859d5bd
commit
8938d8d557
|
@ -4376,7 +4376,7 @@ _direct_mouse_updown(Ecore_Evas *ee, const Ecore_Event_Mouse_Button *info, Efl_P
|
|||
if (info->double_click) ev->button_flags |= EFL_POINTER_FLAGS_DOUBLE_CLICK;
|
||||
if (info->triple_click) ev->button_flags |= EFL_POINTER_FLAGS_TRIPLE_CLICK;
|
||||
ev->timestamp = info->timestamp;
|
||||
ev->finger = info->multi.device;
|
||||
ev->tool = info->multi.device;
|
||||
_pointer_position_set(ev, ee, info->x, info->y, info->multi.x, info->multi.y);
|
||||
ev->radius = info->multi.radius;
|
||||
ev->radius_x = info->multi.radius_x;
|
||||
|
@ -4433,7 +4433,7 @@ _direct_mouse_move_cb(Ecore_Evas *ee, const Ecore_Event_Mouse_Move *info)
|
|||
|
||||
ev->action = EFL_POINTER_ACTION_MOVE;
|
||||
ev->timestamp = info->timestamp;
|
||||
ev->finger = info->multi.device;
|
||||
ev->tool = info->multi.device;
|
||||
_pointer_position_set(ev, ee, info->x, info->y, info->multi.x, info->multi.y);
|
||||
|
||||
ev->radius = info->multi.radius;
|
||||
|
|
|
@ -29,7 +29,7 @@ struct _Efl_Event_Pointer_Data
|
|||
unsigned int timestamp; /* FIXME: store as double? */
|
||||
int button;
|
||||
unsigned int pressed_buttons;
|
||||
int finger;
|
||||
int tool; /* finger or tool ID */
|
||||
double radius, radius_x, radius_y;
|
||||
double pressure;
|
||||
double angle;
|
||||
|
@ -49,6 +49,7 @@ struct _Efl_Event_Pointer_Data
|
|||
Evas_Modifier *modifiers;
|
||||
Evas_Lock *locks;
|
||||
void *legacy; /* DO NOT TOUCH THIS */
|
||||
uint32_t value_flags;
|
||||
Eina_Bool evas_done : 1; /* set by evas */
|
||||
Eina_Bool fake : 1;
|
||||
Eina_Bool win_fed : 1;
|
||||
|
|
|
@ -65,3 +65,57 @@ enum Efl.Event.Object_Pointer_Mode {
|
|||
@since 1.2
|
||||
]]
|
||||
}
|
||||
|
||||
enum Efl.Input.Value {
|
||||
[[Keys for the generic values of all events.
|
||||
|
||||
@since 1.19
|
||||
]]
|
||||
none, [[Not a valid value type.]]
|
||||
timestamp, [[Timestamp of this event in seconds.]]
|
||||
button, [[ID of the button that triggered this event (unsigned int).
|
||||
Prefer the method $button to read this value. Default: 0.]]
|
||||
buttons_pressed, [[32-bit bit mask (unsigned int). Prefer the
|
||||
method $buttons_pressed to read this value. Default: 0.]]
|
||||
tool, [[ID of the finger or tool (eg. pen) that triggered this event.
|
||||
Prefer the property $tool to read this value. Default: 0.]]
|
||||
x, [[Absolute X position where this event occurred, in pixels.
|
||||
Relative to the window. Default: last known position.]]
|
||||
y, [[Absolute Y position where this event occurred, in pixels.
|
||||
Relative to the window. Default: last known position.]]
|
||||
dx, [[Relative X movement, in pixels. Range: unbounded. Default: 0.]]
|
||||
dy, [[Relative Y movement, in pixels. Range: unbounded. Default: 0.]]
|
||||
previous_x, [[Previous X position of the pointer, in pixels.
|
||||
Default: last known position, may be equal to x.]]
|
||||
previous_y, [[Previous Y position of the pointer, in pixels.
|
||||
Default: last known position, may be equal to y.]]
|
||||
radius, [[Average radius of the pressed area under a finger or tool,
|
||||
in pixels. Default is 1.]]
|
||||
radius_x, [[Spread over X of the pressed area under a finger or tool,
|
||||
in pixels. Default is 1.]]
|
||||
radius_y, [[Spread over Y of the pressed area under a finger or tool,
|
||||
in pixels. Default is 1.]]
|
||||
pressure, [[Pressure applied to the button, touch or pen tip.
|
||||
Range: [0, 1]. Default is 1.]]
|
||||
distance, [[Relative distance along physical Z axis. Range: [0, 1].
|
||||
Default is 0.]]
|
||||
azimuth, [[Angle of tool about the Z axis from positive X axis.
|
||||
Range: [-PI, PI]. Unit: Radians.]]
|
||||
tilt, [[Angle of tool about plane of sensor from positive Z axis.
|
||||
Range: [0.0, PI]. Unit: Radians.]]
|
||||
tilt_x, [[Current tilt along the X axis of the tablet's current logical
|
||||
orientation, in radians off the tablet's Z axis.
|
||||
Range: [-PI, PI]. Unit: Radians.]]
|
||||
tilt_y, [[Current tilt along the Y axis of the tablet's current logical
|
||||
orientation, in radians off the tablet's Z axis.
|
||||
Range: [-PI, PI]. Unit: Radians.]]
|
||||
twist, [[Rotation of tool about its major axis from its "natural"
|
||||
position. Range: [-PI, PI] Unit: Radians.]]
|
||||
wheel_delta, [[Delta movement of the wheel in discrete steps (int).
|
||||
Default: 0.]]
|
||||
wheel_angle, [[Delta movement of the wheel in radians. Default: 0.]]
|
||||
wheel_direction, [[Direction of the wheel (horizontal = 1 or vertical = 0).
|
||||
Default: 0. Prefer the property $wheel_direction to read.]]
|
||||
slider, [[Current position of the slider on the tool. Range: [-1, 1].
|
||||
Default: 0.]]
|
||||
}
|
||||
|
|
|
@ -189,20 +189,6 @@ _efl_event_pointer_position_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd,
|
|||
if (y) *y = (int) pd->cur.y;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_position_precise_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double x, double y)
|
||||
{
|
||||
pd->cur.x = x;
|
||||
pd->cur.y = y;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_position_precise_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double *x, double *y)
|
||||
{
|
||||
if (x) *x = pd->cur.x;
|
||||
if (y) *y = pd->cur.y;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_previous_position_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int x, int y)
|
||||
{
|
||||
|
@ -218,17 +204,11 @@ _efl_event_pointer_previous_position_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_previous_position_precise_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double x, double y)
|
||||
_efl_event_pointer_delta_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int *dx, int *dy)
|
||||
{
|
||||
pd->prev.x = x;
|
||||
pd->prev.y = y;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_previous_position_precise_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double *x, double *y)
|
||||
{
|
||||
if (x) *x = pd->prev.x;
|
||||
if (y) *y = pd->prev.y;
|
||||
// Using (int) twice to return the same as previous_position - position
|
||||
if (dx) *dx = (int) pd->prev.x - (int) pd->cur.x;
|
||||
if (dy) *dy = (int) pd->prev.y - (int) pd->cur.y;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
@ -306,47 +286,27 @@ _efl_event_pointer_wheel_direction_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Da
|
|||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_wheel_distance_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int dist)
|
||||
_efl_event_pointer_wheel_delta_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int dist)
|
||||
{
|
||||
pd->wheel.z = dist;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_event_pointer_wheel_distance_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_wheel_delta_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return pd->wheel.z;
|
||||
}
|
||||
|
||||
EOLIAN static int
|
||||
_efl_event_pointer_finger_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
_efl_event_pointer_tool_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd)
|
||||
{
|
||||
return pd->finger;
|
||||
return pd->tool;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_finger_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int id)
|
||||
_efl_event_pointer_tool_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, int id)
|
||||
{
|
||||
pd->finger = id;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_touch_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double *r, double *rx, double *ry, double *press, double *angle)
|
||||
{
|
||||
if (r) *r = pd->radius;
|
||||
if (rx) *rx = pd->radius_x;
|
||||
if (ry) *ry = pd->radius_y;
|
||||
if (press) *press = pd->pressure;
|
||||
if (angle) *angle = pd->angle;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
_efl_event_pointer_touch_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, double r, double rx, double ry, double press, double angle)
|
||||
{
|
||||
pd->radius = r;
|
||||
pd->radius_x = rx;
|
||||
pd->radius_y = ry;
|
||||
pd->pressure = press;
|
||||
pd->angle = angle;
|
||||
pd->tool = id;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
|
@ -400,4 +360,196 @@ _efl_event_pointer_efl_event_input_fake_get(Eo *obj EINA_UNUSED, Efl_Event_Point
|
|||
return pd->fake;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_pointer_value_has_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Input_Value key)
|
||||
{
|
||||
// read-only
|
||||
if ((key <= EFL_INPUT_VALUE_NONE) || (key > EFL_INPUT_VALUE_SLIDER))
|
||||
return EINA_FALSE;
|
||||
return (pd->value_flags & (1 << (int) key)) != 0;
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_event_pointer_value_set(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Input_Value key, double val)
|
||||
{
|
||||
if ((key <= EFL_INPUT_VALUE_NONE) || (key > EFL_INPUT_VALUE_SLIDER))
|
||||
return EINA_FALSE;
|
||||
|
||||
// note: not a fan of setting ints based on a double...
|
||||
switch (key)
|
||||
{
|
||||
case EFL_INPUT_VALUE_TIMESTAMP:
|
||||
pd->timestamp = (unsigned int) (val * 1000.0);
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_BUTTON:
|
||||
pd->button = (int) val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_BUTTONS_PRESSED:
|
||||
pd->pressed_buttons = (int) val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_TOOL:
|
||||
pd->tool = (int) val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_X:
|
||||
pd->cur.x = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_Y:
|
||||
pd->cur.y = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_DX:
|
||||
case EFL_INPUT_VALUE_DY:
|
||||
return EINA_FALSE;
|
||||
|
||||
case EFL_INPUT_VALUE_PREVIOUS_X:
|
||||
pd->prev.x = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_PREVIOUS_Y:
|
||||
pd->prev.y = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS:
|
||||
pd->radius = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS_X:
|
||||
pd->radius_x = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS_Y:
|
||||
pd->radius_y = val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_PRESSURE:
|
||||
return pd->pressure;
|
||||
|
||||
case EFL_INPUT_VALUE_DISTANCE:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_AZIMUTH:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT_X:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT_Y:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TWIST:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_DELTA:
|
||||
pd->wheel.z = (int) val;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_ANGLE:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_DIRECTION:
|
||||
pd->wheel.dir = val ? EFL_ORIENT_HORIZONTAL : EFL_ORIENT_VERTICAL;
|
||||
break;
|
||||
|
||||
case EFL_INPUT_VALUE_SLIDER:
|
||||
return EINA_FALSE; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_NONE:
|
||||
default:
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EOLIAN static double
|
||||
_efl_event_pointer_value_get(Eo *obj EINA_UNUSED, Efl_Event_Pointer_Data *pd, Efl_Input_Value key)
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
case EFL_INPUT_VALUE_TIMESTAMP:
|
||||
return (double) pd->timestamp / 1000.0;
|
||||
|
||||
case EFL_INPUT_VALUE_BUTTON:
|
||||
return (double) pd->button;
|
||||
|
||||
case EFL_INPUT_VALUE_BUTTONS_PRESSED:
|
||||
return (double) pd->pressed_buttons;
|
||||
|
||||
case EFL_INPUT_VALUE_TOOL:
|
||||
return (double) pd->tool;
|
||||
|
||||
case EFL_INPUT_VALUE_X:
|
||||
return pd->cur.x;
|
||||
|
||||
case EFL_INPUT_VALUE_Y:
|
||||
return pd->cur.y;
|
||||
|
||||
case EFL_INPUT_VALUE_DX:
|
||||
return pd->cur.x - pd->prev.x;
|
||||
|
||||
case EFL_INPUT_VALUE_DY:
|
||||
return pd->cur.y - pd->prev.y;
|
||||
|
||||
case EFL_INPUT_VALUE_PREVIOUS_X:
|
||||
return pd->prev.x;
|
||||
|
||||
case EFL_INPUT_VALUE_PREVIOUS_Y:
|
||||
return pd->prev.y;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS:
|
||||
return pd->radius;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS_X:
|
||||
return pd->radius_x;
|
||||
|
||||
case EFL_INPUT_VALUE_RADIUS_Y:
|
||||
return pd->radius_y;
|
||||
|
||||
case EFL_INPUT_VALUE_PRESSURE:
|
||||
return pd->pressure;
|
||||
|
||||
case EFL_INPUT_VALUE_DISTANCE:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_AZIMUTH:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT_X:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TILT_Y:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_TWIST:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_DELTA:
|
||||
return (double) pd->wheel.z;
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_ANGLE:
|
||||
return 0.0; // TODO (emulate??)
|
||||
|
||||
case EFL_INPUT_VALUE_WHEEL_DIRECTION:
|
||||
return (pd->wheel.dir == EFL_ORIENT_HORIZONTAL) ? 1.0 : 0.0;
|
||||
|
||||
case EFL_INPUT_VALUE_SLIDER:
|
||||
return 0.0; // TODO
|
||||
|
||||
case EFL_INPUT_VALUE_NONE:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#include "efl_event_pointer.eo.c"
|
||||
|
|
|
@ -3,7 +3,7 @@ import efl_event_types;
|
|||
|
||||
class Efl.Event.Pointer (Efl.Object, Efl.Event, Efl.Input.State, Efl.Event.Input)
|
||||
{
|
||||
[[Event data carried over with any pointer event (mouse, touch, ...)
|
||||
[[Event data carried over with any pointer event (mouse, touch, pen, ...)
|
||||
|
||||
@since 1.18
|
||||
]]
|
||||
|
@ -14,14 +14,52 @@ class Efl.Event.Pointer (Efl.Object, Efl.Event, Efl.Input.State, Efl.Event.Input
|
|||
act: Efl.Pointer.Action;
|
||||
}
|
||||
}
|
||||
@property value_has {
|
||||
[[$true if this event carries a valid value for the specified $key.]]
|
||||
get {}
|
||||
keys {
|
||||
key: Efl.Input.Value;
|
||||
}
|
||||
values {
|
||||
has: bool;
|
||||
}
|
||||
}
|
||||
@property value {
|
||||
[[Represents a generic value for this event.
|
||||
|
||||
Refer to the documentation of @Efl.Input.Value for each value's
|
||||
meaning, type and range. Call @.value_has.get to determine whether
|
||||
the returned value is valid or not for this event.
|
||||
|
||||
Most values are precise floating point values, usually in pixels,
|
||||
radians, or in a range of [-1, 1] or [0, 1]. Some values are
|
||||
discrete values (integers) and thus should preferably be queried
|
||||
with the other methods of this class.
|
||||
]]
|
||||
set {
|
||||
return: bool; [[$false if the value could not be set (eg. delta).]]
|
||||
}
|
||||
get {}
|
||||
keys {
|
||||
key: Efl.Input.Value;
|
||||
}
|
||||
values {
|
||||
val: double;
|
||||
}
|
||||
}
|
||||
@property button {
|
||||
[[The mouse button that triggered the event.]]
|
||||
[[The mouse button that triggered the event.
|
||||
|
||||
Valid if and only if @.value_has($button) is $true.
|
||||
]]
|
||||
values {
|
||||
but: int; [[1 to 32, 0 if not a button event.]]
|
||||
}
|
||||
}
|
||||
@property button_pressed {
|
||||
[[Whether a mouse button is pressed at the moment of the event.]]
|
||||
[[Whether a mouse button is pressed at the moment of the event.
|
||||
|
||||
Valid if and only if @.value_has($button_pressed) is $true.]]
|
||||
keys {
|
||||
button: int;
|
||||
}
|
||||
|
@ -30,59 +68,53 @@ class Efl.Event.Pointer (Efl.Object, Efl.Event, Efl.Input.State, Efl.Event.Input
|
|||
}
|
||||
}
|
||||
@property position {
|
||||
[[Position where the event happened, relative to the window.]]
|
||||
[[Position where the event happened, relative to the window.
|
||||
|
||||
This position, in integers, is an approximation of
|
||||
@.value.get($x), @.value.get($y). Use @.position if you need
|
||||
simple pixel positions, but prefer the generic interface
|
||||
if you need precise coordinates.
|
||||
]]
|
||||
values {
|
||||
x: int;
|
||||
y: int;
|
||||
}
|
||||
}
|
||||
@property position_precise {
|
||||
[[Position where the event happened, with subpixel precision
|
||||
|
||||
Note: Same value as @.position, relative to the window.
|
||||
]]
|
||||
values {
|
||||
x: double;
|
||||
y: double;
|
||||
}
|
||||
}
|
||||
@property previous_position {
|
||||
[[Position of the previous event, valid for move events.
|
||||
|
||||
Relative to the window. May be equal to @.position.
|
||||
Relative to the window. May be equal to @.position (by default).
|
||||
|
||||
This position, in integers, is an approximation of
|
||||
@.value.get($previous_x), @.value.get($previous_y).
|
||||
Use @.previous_position if you need simple pixel positions,
|
||||
but prefer the generic interface if you need precise coordinates.
|
||||
]]
|
||||
values {
|
||||
x: int;
|
||||
y: int;
|
||||
}
|
||||
}
|
||||
@property previous_position_precise {
|
||||
[[Position of the previous event, with subpixel precision.
|
||||
@property delta {
|
||||
[[Position delta, or movement, since the last event.
|
||||
|
||||
Valid for move events, may not be valid for other events.
|
||||
Relative to the window. May be equal to @.position_precise.
|
||||
This position, in integers, is an approximation of
|
||||
@.value.get($dx), @.value.get($dy). Use @.delta if you need
|
||||
simple pixel positions, but prefer the generic interface
|
||||
if you need precise coordinates.
|
||||
]]
|
||||
get {}
|
||||
values {
|
||||
x: double;
|
||||
y: double;
|
||||
dx: int;
|
||||
dy: int;
|
||||
}
|
||||
}
|
||||
@property finger {
|
||||
[[Finger ID in case of a multi touch event.]]
|
||||
@property tool {
|
||||
[[ID of the tool (eg. pen) that triggered this event.]]
|
||||
values {
|
||||
id: int;
|
||||
}
|
||||
}
|
||||
@property touch {
|
||||
[[Touch information about a specific finger or pointer.]]
|
||||
values {
|
||||
radius: double;
|
||||
rad_x: double;
|
||||
rad_y: double;
|
||||
pressure: double;
|
||||
angle: double;
|
||||
}
|
||||
}
|
||||
@property source {
|
||||
[[The object where this event first originated, in case of
|
||||
propagation or repetition of the event.
|
||||
|
@ -116,11 +148,13 @@ class Efl.Event.Pointer (Efl.Object, Efl.Event, Efl.Input.State, Efl.Event.Input
|
|||
}
|
||||
}
|
||||
@property wheel_direction {
|
||||
[[Direction of the wheel.]]
|
||||
values {
|
||||
dir: Efl.Orient; [[Horizontal or Vertical only.]]
|
||||
}
|
||||
}
|
||||
@property wheel_distance {
|
||||
@property wheel_delta {
|
||||
[[Delta movement of the wheel in discrete steps.]]
|
||||
values {
|
||||
dist: int;
|
||||
}
|
||||
|
|
|
@ -395,7 +395,7 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e,
|
|||
_transform_to_src_space_f(obj, src, &ev->cur);
|
||||
point = ev->cur;
|
||||
ev->source = eo_obj;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
|
||||
EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src->proxy, Evas_Object_Proxy_Data, proxy_write)
|
||||
{
|
||||
|
@ -480,7 +480,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e,
|
|||
curpt = ev->cur;
|
||||
prevpt = ev->prev;
|
||||
ev->source = eo_obj;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
|
||||
if (e->pointer.mouse_grabbed)
|
||||
{
|
||||
|
@ -650,7 +650,7 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e,
|
|||
_transform_to_src_space_f(obj, src, &ev->cur);
|
||||
point = ev->cur;
|
||||
ev->source = eo_obj;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
|
||||
copy = evas_event_list_copy(src->proxy->src_event_in);
|
||||
EINA_LIST_FOREACH(copy, l, eo_child)
|
||||
|
@ -1242,7 +1242,7 @@ _canvas_event_feed_mouse_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
ev->modifiers = &(e->modifiers);
|
||||
ev->locks = &(e->locks);
|
||||
ev->event_flags = e->default_event_flags;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
if (ev->device) efl_ref(ev->device);
|
||||
|
||||
_evas_walk(e);
|
||||
|
@ -1440,7 +1440,7 @@ _canvas_event_feed_mouse_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
|
|||
ev->modifiers = &(e->modifiers);
|
||||
ev->locks = &(e->locks);
|
||||
ev->event_flags = e->default_event_flags;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
if (ev->device) efl_ref(ev->device);
|
||||
|
||||
_evas_walk(e);
|
||||
|
@ -1721,7 +1721,7 @@ _canvas_event_feed_mouse_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
ev->locks = &(e->locks);
|
||||
ev->event_flags = e->default_event_flags;
|
||||
ev->pressed_buttons = e->pointer.button;
|
||||
ev->finger = 0;
|
||||
ev->tool = 0;
|
||||
if (ev->device) efl_ref(ev->device);
|
||||
|
||||
_evas_walk(e);
|
||||
|
@ -2236,7 +2236,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
|
||||
eo_e = e->evas;
|
||||
DBG("ButtonEvent:multi down time=%u x=%.1f y=%.1f button=%d downs=%d",
|
||||
ev->timestamp, ev->cur.x, ev->cur.y, ev->finger, e->pointer.downs);
|
||||
ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, e->pointer.downs);
|
||||
e->pointer.downs++;
|
||||
if (e->is_frozen) return;
|
||||
e->last_timestamp = ev->timestamp;
|
||||
|
@ -2252,7 +2252,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
|
||||
_evas_walk(e);
|
||||
/* append new touch point to the touch point list */
|
||||
_evas_touch_point_append(eo_e, ev->finger, ev->cur.x, ev->cur.y);
|
||||
_evas_touch_point_append(eo_e, ev->tool, ev->cur.x, ev->cur.y);
|
||||
if (e->pointer.mouse_grabbed == 0)
|
||||
{
|
||||
if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
|
||||
|
@ -2282,7 +2282,7 @@ _canvas_event_feed_multi_down_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
|
||||
_evas_post_event_callback_call(eo_e, e);
|
||||
/* update touch point's state to EVAS_TOUCH_POINT_STILL */
|
||||
_evas_touch_point_update(eo_e, ev->finger, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_STILL);
|
||||
_evas_touch_point_update(eo_e, ev->tool, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_STILL);
|
||||
_evas_unwalk(e);
|
||||
|
||||
if (ev->device) efl_unref(ev->device);
|
||||
|
@ -2301,7 +2301,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
|
|||
|
||||
eo_e = e->evas;
|
||||
DBG("ButtonEvent:multi up time=%u x=%.1f y=%.1f device=%d downs=%d",
|
||||
ev->timestamp, ev->cur.x, ev->cur.y, ev->finger, e->pointer.downs);
|
||||
ev->timestamp, ev->cur.x, ev->cur.y, ev->tool, e->pointer.downs);
|
||||
if (e->pointer.downs <= 0) return;
|
||||
e->pointer.downs--;
|
||||
if (e->is_frozen) return;
|
||||
|
@ -2318,7 +2318,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
|
|||
|
||||
_evas_walk(e);
|
||||
/* update released touch point */
|
||||
_evas_touch_point_update(eo_e, ev->finger, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_UP);
|
||||
_evas_touch_point_update(eo_e, ev->tool, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_UP);
|
||||
copy = evas_event_list_copy(e->pointer.object.in);
|
||||
EINA_LIST_FOREACH(copy, l, eo_obj)
|
||||
{
|
||||
|
@ -2342,7 +2342,7 @@ _canvas_event_feed_multi_up_internal(Evas_Public_Data *e, Efl_Event_Pointer_Data
|
|||
if ((e->pointer.mouse_grabbed == 0) && !_post_up_handle(e, ev->eo))
|
||||
_evas_post_event_callback_call(eo_e, e);
|
||||
/* remove released touch point from the touch point list */
|
||||
_evas_touch_point_remove(eo_e, ev->finger);
|
||||
_evas_touch_point_remove(eo_e, ev->tool);
|
||||
_evas_unwalk(e);
|
||||
|
||||
if (ev->device) efl_unref(ev->device);
|
||||
|
@ -2368,7 +2368,7 @@ _canvas_event_feed_multi_internal(Evas *eo_e, Evas_Public_Data *e,
|
|||
if (!fy) fy = y;
|
||||
|
||||
ev->action = action;
|
||||
ev->finger = d;
|
||||
ev->tool = d;
|
||||
ev->cur.x = fx;
|
||||
ev->cur.y = fy;
|
||||
ev->pressure = pres;
|
||||
|
@ -2468,7 +2468,7 @@ _canvas_event_feed_multi_move_internal(Evas_Public_Data *e, Efl_Event_Pointer_Da
|
|||
|
||||
_evas_walk(e);
|
||||
/* update moved touch point */
|
||||
_evas_touch_point_update(eo_e, ev->finger, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_MOVE);
|
||||
_evas_touch_point_update(eo_e, ev->tool, ev->cur.x, ev->cur.y, EVAS_TOUCH_POINT_MOVE);
|
||||
/* if our mouse button is grabbed to any objects */
|
||||
if (e->pointer.mouse_grabbed > 0)
|
||||
{
|
||||
|
@ -3179,21 +3179,21 @@ _evas_canvas_event_pointer_cb(void *data, const Eo_Event *event)
|
|||
switch (ev->action)
|
||||
{
|
||||
case EFL_POINTER_ACTION_MOVE:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
_canvas_event_feed_mouse_move_internal(e, ev);
|
||||
else
|
||||
_canvas_event_feed_multi_move_internal(e, ev);
|
||||
break;
|
||||
|
||||
case EFL_POINTER_ACTION_DOWN:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
_canvas_event_feed_mouse_down_internal(e, ev);
|
||||
else
|
||||
_canvas_event_feed_multi_down_internal(e, ev);
|
||||
break;
|
||||
|
||||
case EFL_POINTER_ACTION_UP:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
_canvas_event_feed_mouse_up_internal(e, ev);
|
||||
else
|
||||
_canvas_event_feed_multi_up_internal(e, ev);
|
||||
|
|
|
@ -82,7 +82,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
}
|
||||
|
||||
case EFL_POINTER_ACTION_DOWN:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
{
|
||||
// filter out MULTI with finger 0, valid for eo, invalid for legacy
|
||||
if (type == EVAS_CALLBACK_MULTI_DOWN)
|
||||
|
@ -109,7 +109,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
{
|
||||
TYPE_CHK(MULTI_DOWN);
|
||||
Evas_Event_Multi_Down *e = _event_alloc(ev->legacy);
|
||||
e->device = ev->finger;
|
||||
e->device = ev->tool;
|
||||
e->radius = ev->radius;
|
||||
e->radius_x = ev->radius_x;
|
||||
e->radius_y = ev->radius_y;
|
||||
|
@ -133,7 +133,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
}
|
||||
|
||||
case EFL_POINTER_ACTION_UP:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
{
|
||||
// filter out MULTI with finger 0, valid for eo, invalid for legacy
|
||||
if (type == EVAS_CALLBACK_MULTI_UP)
|
||||
|
@ -160,7 +160,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
{
|
||||
TYPE_CHK(MULTI_UP);
|
||||
Evas_Event_Multi_Up *e = _event_alloc(ev->legacy);
|
||||
e->device = ev->finger;
|
||||
e->device = ev->tool;
|
||||
e->radius = ev->radius;
|
||||
e->radius_x = ev->radius_x;
|
||||
e->radius_y = ev->radius_y;
|
||||
|
@ -184,7 +184,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
}
|
||||
|
||||
case EFL_POINTER_ACTION_MOVE:
|
||||
if (ev->finger == 0)
|
||||
if (ev->tool == 0)
|
||||
{
|
||||
// filter out MULTI with finger 0, valid for eo, invalid for legacy
|
||||
if (type == EVAS_CALLBACK_MULTI_MOVE)
|
||||
|
@ -213,7 +213,7 @@ efl_event_pointer_legacy_info_fill(Efl_Event_Key *evt, Evas_Callback_Type type,
|
|||
{
|
||||
TYPE_CHK(MULTI_MOVE);
|
||||
Evas_Event_Multi_Move *e = _event_alloc(ev->legacy);
|
||||
e->device = ev->finger;
|
||||
e->device = ev->tool;
|
||||
e->radius = ev->radius;
|
||||
e->radius_x = ev->radius_x;
|
||||
e->radius_y = ev->radius_y;
|
||||
|
|
Loading…
Reference in New Issue