forked from enlightenment/efl
input: Move pointer props to Canvas
efl_input_pointer_position is defined by two classes... bad! Fixes T6066
This commit is contained in:
parent
b3ffd78237
commit
8557fe818f
|
@ -180,6 +180,65 @@ interface Efl.Canvas ()
|
|||
seat: Efl.Input.Device; [[The seat or $null if not found.]]
|
||||
}
|
||||
}
|
||||
@property pointer_position {
|
||||
get {
|
||||
[[This function returns the current known pointer coordinates
|
||||
|
||||
This function returns the current position of the main input
|
||||
pointer (mouse, pen, etc...).
|
||||
]]
|
||||
}
|
||||
/* FIXME: missing keys { seat } */
|
||||
values {
|
||||
pos: Eina.Position2D; [[The pointer position in pixels.]]
|
||||
}
|
||||
}
|
||||
@property pointer_inside {
|
||||
get {
|
||||
[[Returns whether the mouse pointer is logically inside the
|
||||
canvas.
|
||||
|
||||
When this function is called it will return a value of either
|
||||
$false or $true, depending on whether a pointer,in or pointer,out
|
||||
event has been called previously.
|
||||
|
||||
A return value of $true indicates the mouse is logically
|
||||
inside the canvas, and $false implies it is logically
|
||||
outside the canvas.
|
||||
|
||||
A canvas begins with the mouse being assumed outside ($false).
|
||||
]]
|
||||
}
|
||||
/* FIXME: missing keys { seat } */
|
||||
values {
|
||||
inside: bool; [[$true if the mouse pointer is inside the canvas,
|
||||
$false otherwise]]
|
||||
}
|
||||
}
|
||||
/* FIXME: maybe not necessary if gesture supports this */
|
||||
pointer_iterate @const {
|
||||
[[Returns an iterator over the current known pointer positions.
|
||||
|
||||
This is used to iterate over the current known multi-touch positions,
|
||||
including the first finger. Each pointer position is represented by
|
||||
an object of type @Efl.Input.Pointer.
|
||||
|
||||
Each finger in a multi touch environment can then be identified
|
||||
by the @Efl.Input.Pointer.tool property. The order of the pointers
|
||||
in this iterator is not defined.
|
||||
|
||||
Note: If the input surface supports hovering input, some pointers
|
||||
may not be in a "down" state. To retrieve the list of such pointers,
|
||||
set the $hover value to $true. Remember though that most devices
|
||||
currently don't support this.
|
||||
]]
|
||||
params {
|
||||
/* FIXME: missing seat. hover is not useful */
|
||||
hover: bool @optional; [[$false by default, $true means to include
|
||||
fingers that are currently hovering.]]
|
||||
}
|
||||
return: iterator<const(Efl.Input.Pointer)>; [[Iterator to pointer positions]]
|
||||
}
|
||||
}
|
||||
events {
|
||||
focus,in: Efl.Input.Focus; [[Called when canvas got focus]]
|
||||
|
|
|
@ -2423,7 +2423,7 @@ _efl_ui_win_efl_gfx_visible_set(Eo *obj, Efl_Ui_Win_Data *sd, Eina_Bool vis)
|
|||
}
|
||||
|
||||
EOLIAN static Eina_Position2D
|
||||
_efl_ui_win_efl_input_interface_pointer_position_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
|
||||
_efl_ui_win_efl_canvas_pointer_position_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
|
||||
{
|
||||
Eina_Position2D pos;
|
||||
evas_pointer_canvas_xy_get(sd->evas, &pos.x, &pos.y);
|
||||
|
@ -2431,7 +2431,7 @@ _efl_ui_win_efl_input_interface_pointer_position_get(Eo *obj EINA_UNUSED, Efl_Ui
|
|||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_win_efl_input_interface_pointer_inside_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
|
||||
_efl_ui_win_efl_canvas_pointer_inside_get(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *sd)
|
||||
{
|
||||
return evas_pointer_inside_get(sd->evas);
|
||||
}
|
||||
|
@ -2467,8 +2467,8 @@ _input_pointer_iterator_free(Input_Pointer_Iterator *it)
|
|||
}
|
||||
|
||||
EOLIAN static Eina_Iterator *
|
||||
_efl_ui_win_efl_input_interface_pointer_iterate(const Eo *obj, Efl_Ui_Win_Data *sd,
|
||||
Eina_Bool hover EINA_UNUSED)
|
||||
_efl_ui_win_efl_canvas_pointer_iterate(const Eo *obj, Efl_Ui_Win_Data *sd,
|
||||
Eina_Bool hover EINA_UNUSED)
|
||||
{
|
||||
Input_Pointer_Iterator *it;
|
||||
Eina_List *list = NULL;
|
||||
|
|
|
@ -849,9 +849,9 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Efl.Access.Window,
|
|||
Efl.Gfx.Size.Hint.hint_aspect { set; }
|
||||
Efl.Gfx.Size.Hint.hint_max { set; }
|
||||
Efl.Text.text { get; set; }
|
||||
Efl.Input.Interface.pointer_position { get; }
|
||||
Efl.Input.Interface.pointer_inside { get; }
|
||||
Efl.Input.Interface.pointer_iterate;
|
||||
Efl.Canvas.pointer_position { get; }
|
||||
Efl.Canvas.pointer_inside { get; }
|
||||
Efl.Canvas.pointer_iterate;
|
||||
Efl.Canvas.image_max_size { get; }
|
||||
Efl.Canvas.smart_objects_calculate;
|
||||
Efl.Canvas.objects_at_xy_get;
|
||||
|
|
|
@ -26,58 +26,6 @@ interface Efl.Input.Interface ()
|
|||
eo_prefix: efl_input;
|
||||
event_prefix: efl;
|
||||
methods {
|
||||
@property pointer_position {
|
||||
get {
|
||||
[[This function returns the current known pointer coordinates
|
||||
|
||||
This function returns the current position of the main input
|
||||
pointer (mouse, pen, etc...).
|
||||
]]
|
||||
}
|
||||
values {
|
||||
pos: Eina.Position2D; [[The pointer position in pixels.]]
|
||||
}
|
||||
}
|
||||
@property pointer_inside {
|
||||
get {
|
||||
[[Returns whether the mouse pointer is logically inside the
|
||||
canvas.
|
||||
|
||||
When this function is called it will return a value of either
|
||||
$false or $true, depending on whether a pointer,in or pointer,out
|
||||
event has been called previously.
|
||||
|
||||
A return value of $true indicates the mouse is logically
|
||||
inside the canvas, and $false implies it is logically
|
||||
outside the canvas.
|
||||
|
||||
A canvas begins with the mouse being assumed outside ($false).
|
||||
]]
|
||||
return: bool; [[$true if the mouse pointer is inside the canvas, $false otherwise]]
|
||||
}
|
||||
}
|
||||
pointer_iterate @const {
|
||||
[[Returns an iterator over the current known pointer positions.
|
||||
|
||||
This is used to iterate over the current known multi-touch positions,
|
||||
including the first finger. Each pointer position is represented by
|
||||
an object of type @Efl.Input.Pointer.
|
||||
|
||||
Each finger in a multi touch environment can then be identified
|
||||
by the @Efl.Input.Pointer.tool property. The order of the pointers
|
||||
in this iterator is not defined.
|
||||
|
||||
Note: If the input surface supports hovering input, some pointers
|
||||
may not be in a "down" state. To retrieve the list of such pointers,
|
||||
set the $hover value to $true. Remember though that most devices
|
||||
currently don't support this.
|
||||
]]
|
||||
params {
|
||||
hover: bool @optional; [[$false by default, $true means to include
|
||||
fingers that are currently hovering.]]
|
||||
}
|
||||
return: iterator<const(Efl.Input.Pointer)>; [[Iterator to pointer positions]]
|
||||
}
|
||||
@property seat_event_filter {
|
||||
set {
|
||||
[[Add or remove a given seat to the filter list. If the filter list is empty this object
|
||||
|
|
|
@ -256,7 +256,7 @@ _inputs_timer2_cb(void *data)
|
|||
size_t cnt = 0;
|
||||
int i = 0;
|
||||
|
||||
it = efl_input_pointer_iterate(win, 0);
|
||||
it = efl_canvas_pointer_iterate(win, 0);
|
||||
EINA_ITERATOR_FOREACH(it, ptr)
|
||||
{
|
||||
double x, y;
|
||||
|
@ -313,12 +313,13 @@ static Eina_Bool
|
|||
_inputs_timer3_cb(void *data)
|
||||
{
|
||||
Efl_Input_Pointer *ptr;
|
||||
Eina_Position2D pos;
|
||||
Eina_Iterator *it;
|
||||
Eo *win = data;
|
||||
size_t cnt = 0;
|
||||
int i = 0;
|
||||
|
||||
it = efl_input_pointer_iterate(win, 0);
|
||||
it = efl_canvas_pointer_iterate(win, 0);
|
||||
EINA_ITERATOR_FOREACH(it, ptr)
|
||||
{
|
||||
int tool, ok = 0;
|
||||
|
@ -348,6 +349,11 @@ _inputs_timer3_cb(void *data)
|
|||
eina_iterator_free(it);
|
||||
fail_if(cnt != 2); // 2 moves (in the list), 2 ups (gone)
|
||||
|
||||
fail_if(!efl_canvas_pointer_inside_get(win));
|
||||
pos = efl_canvas_pointer_position_get(win);
|
||||
ck_assert_int_eq(pos.x, points[1][0].x);
|
||||
ck_assert_int_eq(pos.y, points[1][0].y);
|
||||
|
||||
elm_exit();
|
||||
|
||||
return ECORE_CALLBACK_DONE;
|
||||
|
|
Loading…
Reference in New Issue