{
[E_POINTER_HOOK_TOUCH_MOVE] = NULL,
[E_POINTER_HOOK_MOUSE_MOVE] = NULL,
+ [E_POINTER_HOOK_SHOW] = NULL,
+ [E_POINTER_HOOK_HIDE] = NULL,
};
/* move the cursor image with the calcaultion of the hot spot */
e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y)
{
E_Client *ec;
+ Eina_Bool need_call_hide = EINA_FALSE;
EINA_SAFETY_ON_NULL_RETURN(ptr);
/* don't show cursor if in hidden mode */
if ((!e_config->show_cursor) || (!e_comp_wl->ptr.enabled))
{
- e_pointer_hide(ptr);
+ if (ptr->o_ptr && evas_object_visible_get(ptr->o_ptr))
+ {
+ _e_pointer_hook_call(E_POINTER_HOOK_HIDE, ptr);
+ e_pointer_hide(ptr);
+ }
_e_pointer_object_set(ptr, NULL);
ptr->device = E_POINTER_NONE;
return;
ptr->hwc = EINA_FALSE;
/* hide cursor object */
- evas_object_hide(ptr->o_ptr);
+ if (evas_object_visible_get(ptr->o_ptr))
+ {
+ need_call_hide = EINA_TRUE;
+ e_pointer_hide(ptr);
+ }
_e_pointer_object_set(ptr, NULL);
ptr->device = E_POINTER_NONE;
}
_e_pointer_rotation_apply(ptr);
/* show cursor object */
- evas_object_show(obj);
+ if (!evas_object_visible_get(ptr->o_ptr))
+ {
+ need_call_hide = EINA_FALSE;
+ _e_pointer_hook_call(E_POINTER_HOOK_SHOW, ptr);
+ evas_object_show(ptr->o_ptr);
+ }
}
+ if (need_call_hide)
+ _e_pointer_hook_call(E_POINTER_HOOK_HIDE, ptr);
}
E_API void