raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=64f87877a6294ab46684f0da36ef7bc6f1dabe59
commit 64f87877a6294ab46684f0da36ef7bc6f1dabe59 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Wed Apr 1 20:12:15 2020 +0100 fix pointer offset fpor older themes fixes T8622 so due rto optimizations in edje it no longer moves/resizes invsible parts, so swallow a rect and it wont have moved if it is not visible thus tracking its geometry by getting the geometry of the swallowed part only works if its visible, so get the part geom from edje instead which has to give the calculated geom. --- src/bin/e_pointer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c index 61743a2cf..eca3afb7d 100644 --- a/src/bin/e_pointer.c +++ b/src/bin/e_pointer.c @@ -225,8 +225,8 @@ _e_pointer_cb_hot_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA if (!ptr->e_cursor) return; if (!evas_object_visible_get(ptr->o_ptr)) return; - evas_object_geometry_get(ptr->buffer_o_hot, - &x, &y, NULL, NULL); + edje_object_part_geometry_get(ptr->o_ptr, "e.swallow.hotspot", + &x, &y, NULL, NULL); _e_pointer_hot_update(ptr, x, y); } @@ -237,8 +237,8 @@ _e_pointer_cb_hot_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA int x = 0, y = 0; if (!ptr->e_cursor) return; - evas_object_geometry_get(ptr->buffer_o_hot, - &x, &y, NULL, NULL); + edje_object_part_geometry_get(ptr->o_ptr, "e.swallow.hotspot", + &x, &y, NULL, NULL); _e_pointer_hot_update(ptr, x, y); } @@ -477,8 +477,8 @@ _e_pointer_type_set(E_Pointer *ptr, const char *type) _e_pointer_x11_setup(ptr, cursor); if (!cursor[0]) return; - evas_object_geometry_get(ptr->buffer_o_hot, - &x, &y, NULL, NULL); + edje_object_part_geometry_get(ptr->o_ptr, "e.swallow.hotspot", + &x, &y, NULL, NULL); _e_pointer_hot_update(ptr, x, y); if (ptr->canvas) @@ -783,6 +783,7 @@ e_pointer_idler_before(void) #ifndef HAVE_WAYLAND_ONLY Ecore_X_Cursor cur; + printf("update cursor hot %i %i\n", ptr->hot.x, ptr->hot.y); cur = ecore_x_cursor_new(ptr->win, ptr->pixels, ptr->w, ptr->h, ptr->hot.x, ptr->hot.y); ecore_x_window_cursor_set(ptr->win, cur); @@ -830,6 +831,7 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y) else if ((o != ptr->o_ptr) || (x != px) || (y != py)) { ecore_evas_cursor_unset(ptr->ee); + printf("ecore_evas_obj ptr hot %i %i\n", ptr->hot.x, ptr->hot.y); ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, E_LAYER_MAX - 1, ptr->hot.x, ptr->hot.y); evas_object_show(ptr->o_ptr); } --
