evas: remove Evas_Canvas.object_top_at_xy_get

also implement Efl_Canvas method
This commit is contained in:
Mike Blumenkrantz 2018-02-14 21:14:52 -05:00
parent 420ba4691d
commit 7bfaf6b63d
3 changed files with 39 additions and 32 deletions

View File

@ -2317,6 +2317,32 @@ EAPI Evas *evas_object_evas_get(const Eo *obj);
*/
EAPI Eina_List *evas_objects_at_xy_get(Eo *eo_e, int x, int y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects);
/**
* @brief Retrieve the object stacked at the top of a given position in a
* canvas.
*
* This function will traverse all the layers of the given canvas, from top to
* bottom, querying for objects with areas covering the given position. The
* user can remove from the query objects which are hidden and/or which are set
* to pass events.
*
* @warning This function will skip objects parented by smart objects, acting
* only on the ones at the "top level", with regard to object parenting.
*
* @param[in] obj The object.
* @param[in] x The pixel position.
* @param[in] y The pixel position.
* @param[in] include_pass_events_objects Boolean flag to include or not
* objects which pass events in this calculation.
* @param[in] include_hidden_objects Boolean flag to include or not hidden
* objects in this calculation.
*
* @return The Evas object that is over all other objects at the given
* position.
*/
EAPI Evas_Object* evas_object_top_at_xy_get(Eo *eo_e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects);
/**
* @}
*/

View File

@ -536,33 +536,6 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
[[Force the given evas and associated engine to flush its font cache.]]
}
object_top_at_xy_get @const {
[[Retrieve the Evas object stacked at the top of a given position
in a canvas.
This function will traverse all the layers of the given canvas,
from top to bottom, querying for objects with areas covering the
given position. The user can remove from the query
objects which are hidden and/or which are set to pass events.
Warning: This function will skip objects parented by smart
objects, acting only on the ones at the "top level", with
regard to object parenting.
]]
return: Efl.Canvas.Object @warn_unused; [[The Evas object that is over all other objects at the given position.]]
params {
@in x: int; [[The horizontal coordinate of the position.]]
@in y: int; [[The vertical coordinate of the position.]]
@in include_pass_events_objects: bool; [[
Boolean flag to include or not objects which pass events
in this calculation.
]]
@in include_hidden_objects: bool; [[
Boolean flag to include or not hidden objects in this
calculation.
]]
}
}
key_modifier_on {
[[Enables or turns on programmatically the modifier key with name
$keyname for the default seat.
@ -1085,5 +1058,6 @@ class Evas.Canvas (Efl.Object, Efl.Canvas, Efl.Animator, Efl.Input.Interface,
Efl.Canvas.seat { get; }
Efl.Canvas.image_max_size { get; }
Efl.Canvas.objects_at_xy_get;
Efl.Canvas.object_top_at_xy_get;
}
}

View File

@ -1445,14 +1445,14 @@ efl_canvas_iterator_create(Eo *obj, Eina_Iterator *real_iterator, Eina_List *lis
return &it->iterator;
}
EOLIAN Evas_Object*
_evas_canvas_object_top_at_xy_get(const Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
EOLIAN static Evas_Object*
_evas_canvas_efl_canvas_object_top_at_xy_get(const Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Eina_Position2D pos, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
{
Evas_Layer *lay;
int xx, yy;
xx = x;
yy = y;
xx = pos.x;
yy = pos.y;
//// xx = evas_coord_world_x_to_screen(eo_e, x);
//// yy = evas_coord_world_y_to_screen(eo_e, y);
EINA_INLIST_REVERSE_FOREACH((EINA_INLIST_GET(e->layers)), lay)
@ -1480,6 +1480,13 @@ _evas_canvas_object_top_at_xy_get(const Eo *eo_e EINA_UNUSED, Evas_Public_Data *
return NULL;
}
EAPI Evas_Object*
evas_object_top_at_xy_get(Eo *eo_e, Evas_Coord x, Evas_Coord y, Eina_Bool include_pass_events_objects, Eina_Bool include_hidden_objects)
{
Eina_Position2D pos = {x, y};
return efl_canvas_object_top_at_xy_get(eo_e, pos, include_pass_events_objects, include_hidden_objects);
}
EAPI Evas_Object *
evas_object_top_at_pointer_get(const Evas *eo_e)
{
@ -1489,7 +1496,7 @@ evas_object_top_at_pointer_get(const Evas *eo_e)
Evas_Pointer_Data *pdata = _evas_pointer_data_by_device_get(e, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(pdata, NULL);
return evas_canvas_object_top_at_xy_get((Eo *)eo_e, pdata->seat->x, pdata->seat->y, EINA_TRUE, EINA_TRUE);
return efl_canvas_object_top_at_xy_get((Eo *)eo_e, EINA_POSITION2D(pdata->seat->x, pdata->seat->y), EINA_TRUE, EINA_TRUE);
}
EOLIAN Evas_Object*