summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_object_polygon.c
diff options
context:
space:
mode:
authorGuilherme Iscaro <iscaro@profusion.mobi>2016-10-21 10:25:41 -0200
committerBruno Dilly <bdilly@profusion.mobi>2016-12-02 09:57:50 -0200
commit484dae76e675318a579e90ac05d4371acc1f8891 (patch)
treeec41e13d5fc110083a7c37bd75258b1227aab61f /src/lib/evas/canvas/evas_object_polygon.c
parent5442e9c908f3a846aab9758cfb905234e8686e53 (diff)
downloadefl-484dae76e675318a579e90ac05d4371acc1f8891.tar.gz
Evas: Add support for per mouse pointer mode/properties.
This patch introduces the possibility to set the pointer mode and query other properties like current position per pointer device. The old API will still works, however it will only act on the default seat.
Diffstat (limited to 'src/lib/evas/canvas/evas_object_polygon.c')
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c51
1 files changed, 16 insertions, 35 deletions
diff --git a/src/lib/evas/canvas/evas_object_polygon.c b/src/lib/evas/canvas/evas_object_polygon.c
index 355f6ea378..29f7ca14a2 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -105,7 +105,7 @@ _efl_canvas_polygon_point_add(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd, Evas_Coo
Efl_Canvas_Polygon_Data *o = _pd;
Efl_Canvas_Polygon_Point *p;
Evas_Coord min_x, max_x, min_y, max_y;
- int is, was = 0;
+ Eina_List *was = NULL;
evas_object_async_block(obj);
if (!obj->layer->evas->is_frozen)
@@ -113,10 +113,8 @@ _efl_canvas_polygon_point_add(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd, Evas_Coo
if (!evas_event_passes_through(eo_obj, obj) &&
!evas_event_freezes_through(eo_obj, obj) &&
!evas_object_is_source_invisible(eo_obj, obj))
- was = evas_object_is_in_output_rect(eo_obj, obj,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y,
- 1, 1);
+ was = _evas_pointer_list_in_rect_get(obj->layer->evas, eo_obj, obj,
+ 1, 1);
}
if (!o->points)
{
@@ -184,23 +182,13 @@ _efl_canvas_polygon_point_add(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd, Evas_Coo
evas_object_change(eo_obj, obj);
evas_object_clip_dirty(eo_obj, obj);
evas_object_coords_recalc(eo_obj, obj);
- if (!obj->layer->evas->is_frozen)
- {
- is = evas_object_is_in_output_rect(eo_obj, obj,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y, 1, 1);
- if (!evas_event_passes_through(eo_obj, obj) &&
- !evas_event_freezes_through(eo_obj, obj) &&
- !evas_object_is_source_invisible(eo_obj, obj))
- {
- if ((is ^ was) && obj->cur->visible)
- evas_event_feed_mouse_move(obj->layer->evas->evas,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y,
- obj->layer->evas->last_timestamp,
- NULL);
- }
- }
+ if (!obj->layer->evas->is_frozen &&
+ !evas_event_passes_through(eo_obj, obj) &&
+ !evas_event_freezes_through(eo_obj, obj) &&
+ !evas_object_is_source_invisible(eo_obj, obj) &&
+ obj->cur->visible)
+ _evas_canvas_event_pointer_in_list_mouse_move_feed(obj->layer->evas, was, eo_obj, obj, 1, 1, EINA_TRUE, NULL);
+ eina_list_free(was);
evas_object_inform_call_move(eo_obj, obj);
evas_object_inform_call_resize(eo_obj);
}
@@ -211,12 +199,11 @@ _efl_canvas_polygon_points_clear(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd)
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Efl_Canvas_Polygon_Data *o = _pd;
void *list_data;
- int is, was;
+ Eina_List *was;
evas_object_async_block(obj);
- was = evas_object_is_in_output_rect(eo_obj, obj,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y, 1, 1);
+ was = _evas_pointer_list_in_rect_get(obj->layer->evas, eo_obj, obj, 1, 1);
+
EINA_LIST_FREE(o->points, list_data)
{
free(list_data);
@@ -236,15 +223,9 @@ _efl_canvas_polygon_points_clear(Eo *eo_obj, Efl_Canvas_Polygon_Data *_pd)
evas_object_change(eo_obj, obj);
evas_object_clip_dirty(eo_obj, obj);
evas_object_coords_recalc(eo_obj, obj);
- is = evas_object_is_in_output_rect(eo_obj, obj,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y, 1, 1);
- if ((is || was) && obj->cur->visible)
- evas_event_feed_mouse_move(obj->layer->evas->evas,
- obj->layer->evas->pointer.x,
- obj->layer->evas->pointer.y,
- obj->layer->evas->last_timestamp,
- NULL);
+ if (obj->cur->visible)
+ _evas_canvas_event_pointer_in_list_mouse_move_feed(obj->layer->evas, was, eo_obj, obj, 1, 1, EINA_FALSE, NULL);
+ eina_list_free(was);
evas_object_inform_call_move(eo_obj, obj);
evas_object_inform_call_resize(eo_obj);
}