forked from enlightenment/efl
elementary: Don't set wayland window pointer if pointer ee not visible
This small patch avoids resetting ecore_wl2_window_pointer (and thus wl_pointer_set_cursor) if the actual pointer canvas is not visible. Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
07b6699293
commit
bfd221e610
|
@ -125,6 +125,7 @@ struct _Efl_Ui_Win_Data
|
||||||
Ecore_Evas *ee;
|
Ecore_Evas *ee;
|
||||||
Evas_Object *obj, *hot_obj;
|
Evas_Object *obj, *hot_obj;
|
||||||
int hot_x, hot_y;
|
int hot_x, hot_y;
|
||||||
|
Eina_Bool visible : 1;
|
||||||
} pointer;
|
} pointer;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
|
@ -951,6 +952,7 @@ _elm_win_mouse_in(Ecore_Evas *ee)
|
||||||
#ifdef HAVE_ELEMENTARY_WL2
|
#ifdef HAVE_ELEMENTARY_WL2
|
||||||
if ((sd->wl.win) && (sd->pointer.ee))
|
if ((sd->wl.win) && (sd->pointer.ee))
|
||||||
{
|
{
|
||||||
|
sd->pointer.visible = EINA_TRUE;
|
||||||
ecore_evas_show(sd->pointer.ee);
|
ecore_evas_show(sd->pointer.ee);
|
||||||
sd->pointer.surf = ecore_wl2_window_surface_get(sd->pointer.win);
|
sd->pointer.surf = ecore_wl2_window_surface_get(sd->pointer.win);
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
||||||
|
@ -968,6 +970,7 @@ _elm_win_mouse_out(Ecore_Evas *ee)
|
||||||
#ifdef HAVE_ELEMENTARY_WL2
|
#ifdef HAVE_ELEMENTARY_WL2
|
||||||
if ((sd->wl.win) && (sd->pointer.ee))
|
if ((sd->wl.win) && (sd->pointer.ee))
|
||||||
{
|
{
|
||||||
|
sd->pointer.visible = EINA_FALSE;
|
||||||
ecore_evas_hide(sd->pointer.ee);
|
ecore_evas_hide(sd->pointer.ee);
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, NULL,
|
ecore_wl2_window_pointer_set(sd->wl.win, NULL,
|
||||||
sd->pointer.hot_x, sd->pointer.hot_y);
|
sd->pointer.hot_x, sd->pointer.hot_y);
|
||||||
|
@ -3080,7 +3083,7 @@ _elm_win_wl_cursor_set(Evas_Object *obj, const char *cursor)
|
||||||
sd->pointer.hot_y = hy;
|
sd->pointer.hot_y = hy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sd->wl.win) && (sd->pointer.surf))
|
if ((sd->wl.win) && (sd->pointer.surf) && (sd->pointer.visible))
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
||||||
sd->pointer.hot_x, sd->pointer.hot_y);
|
sd->pointer.hot_x, sd->pointer.hot_y);
|
||||||
}
|
}
|
||||||
|
@ -3817,7 +3820,7 @@ _elm_win_frame_cb_resize_show(void *data,
|
||||||
if (ri) _elm_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", ri->cursor);
|
if (ri) _elm_theme_object_set(sd->obj, sd->pointer.obj, "pointer", "base", ri->cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((sd->wl.win) && (sd->pointer.surf))
|
if ((sd->wl.win) && (sd->pointer.surf) && (sd->pointer.visible))
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
||||||
sd->pointer.hot_x, sd->pointer.hot_y);
|
sd->pointer.hot_x, sd->pointer.hot_y);
|
||||||
#else
|
#else
|
||||||
|
@ -3841,7 +3844,7 @@ _elm_win_frame_cb_resize_hide(void *data,
|
||||||
_elm_theme_object_set(sd->obj, sd->pointer.obj,
|
_elm_theme_object_set(sd->obj, sd->pointer.obj,
|
||||||
"pointer", "base", "default");
|
"pointer", "base", "default");
|
||||||
|
|
||||||
if ((sd->wl.win) && (sd->pointer.surf))
|
if ((sd->wl.win) && (sd->pointer.surf) && (sd->pointer.visible))
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
||||||
sd->pointer.hot_x, sd->pointer.hot_y);
|
sd->pointer.hot_x, sd->pointer.hot_y);
|
||||||
#endif
|
#endif
|
||||||
|
@ -3960,7 +3963,7 @@ _elm_win_frame_cb_move_stop(void *data,
|
||||||
_elm_theme_object_set(sd->obj, sd->pointer.obj,
|
_elm_theme_object_set(sd->obj, sd->pointer.obj,
|
||||||
"pointer", "base", "default");
|
"pointer", "base", "default");
|
||||||
|
|
||||||
if ((sd->wl.win) && (sd->pointer.surf))
|
if ((sd->wl.win) && (sd->pointer.surf) && (sd->pointer.visible))
|
||||||
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
ecore_wl2_window_pointer_set(sd->wl.win, sd->pointer.surf,
|
||||||
sd->pointer.hot_x, sd->pointer.hot_y);
|
sd->pointer.hot_x, sd->pointer.hot_y);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue