raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=22b4f766b5967eaf26174ef4260d4be4c8cca6af

commit 22b4f766b5967eaf26174ef4260d4be4c8cca6af
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sat Nov 28 19:24:46 2020 +0000

    e - pointer - fix hot point setting in wl mode
    
    fixes to x .. broke wl. this fixes this to work again.
---
 src/bin/e_client.c  |  2 +-
 src/bin/e_pointer.c | 31 ++++++++++++++++++++-----------
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index b467fe3c7..76a0a3ccc 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -3915,7 +3915,7 @@ e_client_activate(E_Client *ec, Eina_Bool just_do_it)
                  (!e_config->disable_all_pointer_warps) &&
                  (!e_util_strcmp(ec->icccm.name, "VCLSalFrame")))
                ecore_evas_pointer_warp(e_comp->ee,
-                                    ec->x + (ec->w / 2), ec->y + (ec->h / 2));
+                                       ec->x + (ec->w / 2), ec->y + (ec->h / 
2));
              evas_object_focus_set(ec->frame, 1);
           }
      }
diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c
index f0ce9adee..93865c3ea 100644
--- a/src/bin/e_pointer.c
+++ b/src/bin/e_pointer.c
@@ -217,27 +217,36 @@ _e_pointer_cb_mouse_wheel(void *data EINA_UNUSED, int 
type EINA_UNUSED, void *ev
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static void
+_hot_update(E_Pointer *ptr)
+{
+   int x = 0, y = 0, ox = 0, oy = 0;
+
+   if (ptr->e_cursor && (e_comp->comp_type != E_PIXMAP_TYPE_WL))
+     evas_object_geometry_get(ptr->buffer_o_ptr, &ox, &oy, NULL, NULL);
+   else
+     evas_object_geometry_get(ptr->o_ptr, &ox, &oy, NULL, NULL);
+   evas_object_geometry_get(ptr->o_hot, &x, &y, NULL, NULL);
+   _e_pointer_hot_update(ptr, x - ox, y - oy);
+}
+
 static void
 _e_pointer_cb_hot_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event EINA_UNUSED)
 {
    E_Pointer *ptr = data;
-   int x = 0, y = 0;
 
    if (!ptr->e_cursor) return;
    if (!evas_object_visible_get(ptr->o_ptr)) return;
-   evas_object_geometry_get(ptr->o_hot, &x, &y, NULL, NULL);
-   _e_pointer_hot_update(ptr, x, y);
+   _hot_update(ptr);
 }
 
 static void
 _e_pointer_cb_hot_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj 
EINA_UNUSED, void *event EINA_UNUSED)
 {
    E_Pointer *ptr = data;
-   int x = 0, y = 0;
 
    if (!ptr->e_cursor) return;
-   evas_object_geometry_get(ptr->o_hot, &x, &y, NULL, NULL);
-   _e_pointer_hot_update(ptr, x, y);
+   _hot_update(ptr);
 }
 
 static void
@@ -252,6 +261,8 @@ _e_pointer_pointer_canvas_init(E_Pointer *ptr, Evas *e, 
Evas_Object **o_ptr, Eva
 
    evas_object_event_callback_add(*o_hot, EVAS_CALLBACK_MOVE,
                                   _e_pointer_cb_hot_move, ptr);
+   evas_object_event_callback_add(*o_ptr, EVAS_CALLBACK_MOVE,
+                                  _e_pointer_cb_hot_move, ptr);
    evas_object_event_callback_add(*o_hot, EVAS_CALLBACK_SHOW,
                                   _e_pointer_cb_hot_show, ptr);
 
@@ -457,7 +468,6 @@ _e_pointer_type_set(E_Pointer *ptr, const char *type)
    if (ptr->e_cursor)
      {
         char cursor[1024];
-        int x = 0, y = 0;
 
         if ((!ptr->buffer_evas) && ptr->win) _e_pointer_canvas_add(ptr);
         _e_pointer_theme_buf(ptr, cursor);
@@ -475,9 +485,7 @@ _e_pointer_type_set(E_Pointer *ptr, const char *type)
         _e_pointer_x11_setup(ptr, cursor);
         if (!cursor[0]) return;
 
-        edje_object_part_geometry_get(ptr->o_ptr, "e.swallow.hotspot",
-                                      &x, &y, NULL, NULL);
-        _e_pointer_hot_update(ptr, x, y);
+        _hot_update(ptr);
 
         if (ptr->canvas)
           e_pointer_object_set(ptr, NULL, 0, 0);
@@ -844,7 +852,8 @@ 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);
-        ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, E_LAYER_MAX - 1, 
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);
      }
    ptr->client.ec = ec;

-- 


Reply via email to