diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 18786ce37..18a231a45 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -212,7 +212,6 @@ _e_comp_wl_evas_cb_mouse_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob E_Client *pec; pec = e_comp_object_client_get(o); - if (pec) pec->hidden = 1; e_pointer_object_set(e_comp->pointer, NULL, 0, 0); } } diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index 56ec39014..51f124851 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -54,7 +54,6 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou } /* ignore cursor changes during resize/move I guess */ if (e_client_action_get()) return; - ec->hidden = 0; e_pointer_object_set(e_comp->pointer, ec->frame, x, y); } diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c index bbc475a60..a0d3de2ed 100644 --- a/src/bin/e_pointer.c +++ b/src/bin/e_pointer.c @@ -750,9 +750,25 @@ e_pointer_idler_before(void) EAPI void e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y) { + Evas_Object *o; + E_Client *ec; + + ecore_evas_cursor_get(ptr->ee, &o, NULL, NULL, NULL); + if (o) + { + ec = e_comp_object_client_get(o); + if (ec) + ec->hidden = 1; + } ecore_evas_cursor_unset(ptr->ee); + if (obj) - ecore_evas_object_cursor_set(ptr->ee, obj, EVAS_LAYER_MAX, x, y); + { + ec = e_comp_object_client_get(obj); + if (ec) + ec->hidden = 1; + ecore_evas_object_cursor_set(ptr->ee, obj, EVAS_LAYER_MAX, x, y); + } else ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, EVAS_LAYER_MAX, ptr->hot.x, ptr->hot.y); }