From 508585c48b01fbd3b2dc986a2344a4a17fd4013e Mon Sep 17 00:00:00 2001 From: Rafael Antognolli Date: Wed, 7 Nov 2012 16:12:18 +0000 Subject: [PATCH] ecore/wayland: Consider the framespace offset for the pointer object. We have to subtract the framespace offset from the current set pointer object, otherwise it will have that offset added to it when evas_object_move() is done on it. This happens because the pointer object has no parent, and is not marked with the flag "is_frame". SVN revision: 78972 --- legacy/ecore/src/lib/ecore_evas/ecore_evas.c | 18 ++++++++++-------- .../lib/ecore_evas/ecore_evas_wayland_common.c | 7 ++++--- .../lib/ecore_evas/ecore_evas_wayland_shm.c | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas.c index cee3d8a58a..240127e718 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas.c @@ -2486,23 +2486,25 @@ _ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timest ee->mouse.y = y; if (ee->prop.cursor.object) { + int fx, fy; + evas_output_framespace_get(ee->evas, &fx, &fy, NULL, NULL); evas_object_show(ee->prop.cursor.object); if (ee->rotation == 0) evas_object_move(ee->prop.cursor.object, - x - ee->prop.cursor.hot.x, - y - ee->prop.cursor.hot.y); + x - fx - ee->prop.cursor.hot.x, + y - fy - ee->prop.cursor.hot.y); else if (ee->rotation == 90) evas_object_move(ee->prop.cursor.object, - ee->h - y - 1 - ee->prop.cursor.hot.x, - x - ee->prop.cursor.hot.y); + ee->h - y - fx - 1 - ee->prop.cursor.hot.x, + x - fy - ee->prop.cursor.hot.y); else if (ee->rotation == 180) evas_object_move(ee->prop.cursor.object, - ee->w - x - 1 - ee->prop.cursor.hot.x, - ee->h - y - 1 - ee->prop.cursor.hot.y); + ee->w - x - fx - 1 - ee->prop.cursor.hot.x, + ee->h - y - fy - 1 - ee->prop.cursor.hot.y); else if (ee->rotation == 270) evas_object_move(ee->prop.cursor.object, - y - ee->prop.cursor.hot.x, - ee->w - x - 1 - ee->prop.cursor.hot.y); + y - fx - ee->prop.cursor.hot.x, + ee->w - x - fy - 1 - ee->prop.cursor.hot.y); } if (ee->rotation == 0) evas_event_feed_mouse_move(ee->evas, x, y, timestamp, NULL); diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c index e1df083275..9260c18c60 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_common.c @@ -592,7 +592,7 @@ _ecore_evas_object_cursor_del(void *data, Evas *e __UNUSED__, Evas_Object *obj _ void _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) { - int x, y; + int x, y, fx, fy; if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object); @@ -614,10 +614,11 @@ _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int la ecore_wl_window_pointer_set(ee->engine.wl.win, NULL, 0, 0); evas_pointer_output_xy_get(ee->evas, &x, &y); + evas_output_framespace_get(ee->evas, &fx, &fy, NULL, NULL); evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer); evas_object_move(ee->prop.cursor.object, - x - ee->prop.cursor.hot.x, - y - ee->prop.cursor.hot.y); + x - fx - ee->prop.cursor.hot.x, + y - fy - ee->prop.cursor.hot.y); evas_object_pass_events_set(ee->prop.cursor.object, 1); if (evas_pointer_inside_get(ee->evas)) evas_object_show(ee->prop.cursor.object); diff --git a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c index 0a7584a795..f587e3da5c 100644 --- a/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c +++ b/legacy/ecore/src/lib/ecore_evas/ecore_evas_wayland_shm.c @@ -86,7 +86,7 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func = _ecore_evas_wl_common_size_max_set, _ecore_evas_wl_common_size_base_set, _ecore_evas_wl_common_size_step_set, - _ecore_evas_wl_common_object_cursor_set, // object_cursor_set + _ecore_evas_wl_common_object_cursor_set, _ecore_evas_wl_common_layer_set, NULL, // focus set _ecore_evas_wl_common_iconified_set,