forked from enlightenment/enlightenment
manage client pointer client hidden states when changing pointer cursor objects
fixes sticky cursors
This commit is contained in:
parent
9a6cddf91f
commit
67bbd1fe03
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue