struct wl_client *wc;
Eina_List *l;
uint32_t serial;
- int cx, cy;
+ int cx, cy, px, py;
if (e_comp->pointer->o_ptr && (!evas_object_visible_get(e_comp->pointer->o_ptr)))
e_pointer_object_set(e_comp->pointer, NULL, 0, 0);
if (e_object_is_del(E_OBJECT(ec))) return;
if (!ec->comp_data || !ec->comp_data->surface) return;
- cx = wl_fixed_to_int(e_comp_wl->ptr.x) - ec->client.x;
- cy = wl_fixed_to_int(e_comp_wl->ptr.y) - ec->client.y;
+ px = wl_fixed_to_int(e_comp_wl->ptr.x);
+ py = wl_fixed_to_int(e_comp_wl->ptr.y);
+
+ if (evas_object_map_enable_get(ec->frame))
+ {
+ double dx = 0.0, dy = 0.0;
+ evas_map_coords_get(evas_object_map_get(ec->frame), (double)px, (double)py, &dx, &dy, 0);
+ px = (int)dx;
+ py = (int)dy;
+ }
+
+ cx = px - ec->client.x;
+ cy = py - ec->client.y;
wc = wl_resource_get_client(ec->comp_data->surface);
serial = wl_display_next_serial(e_comp_wl->wl.disp);