move more grabinput code to not fail in wl

#barrel
This commit is contained in:
Mike Blumenkrantz 2015-01-22 15:45:16 -05:00
parent 5e5a533a6d
commit 3e5b2ba96a
1 changed files with 28 additions and 21 deletions

View File

@ -36,49 +36,55 @@ e_grabinput_shutdown(void)
EAPI int EAPI int
e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win) e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
{ {
if (e_comp->comp_type != E_PIXMAP_TYPE_X) return 1;
if (grab_mouse_win) if (grab_mouse_win)
{ {
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
ecore_x_pointer_ungrab(); if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ecore_x_pointer_ungrab();
#endif #endif
grab_mouse_win = 0; grab_mouse_win = 0;
} }
if (grab_key_win) if (grab_key_win)
{ {
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
ecore_x_keyboard_ungrab(); if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ecore_x_keyboard_ungrab();
#endif #endif
grab_key_win = 0; grab_key_win = 0;
focus_win = 0; focus_win = 0;
} }
if (mouse_win) if (mouse_win)
{ {
int ret = 0;
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
if (confine_mouse) if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ret = ecore_x_pointer_confine_grab(mouse_win); {
else int ret = 0;
ret = ecore_x_pointer_grab(mouse_win); if (confine_mouse)
ret = ecore_x_pointer_confine_grab(mouse_win);
else
ret = ecore_x_pointer_grab(mouse_win);
if (!ret) return 0;
}
#endif #endif
if (!ret) return 0;
grab_mouse_win = mouse_win; grab_mouse_win = mouse_win;
} }
if (key_win) if (key_win)
{ {
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
int ret = 0; if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ret = ecore_x_keyboard_grab(key_win);
if (!ret)
{ {
if (grab_mouse_win) int ret = 0;
ret = ecore_x_keyboard_grab(key_win);
if (!ret)
{ {
ecore_x_pointer_ungrab(); if (grab_mouse_win)
grab_mouse_win = 0; {
ecore_x_pointer_ungrab();
grab_mouse_win = 0;
}
return 0;
} }
return 0;
} }
#endif #endif
grab_key_win = key_win; grab_key_win = key_win;
@ -92,18 +98,19 @@ e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
EAPI void EAPI void
e_grabinput_release(Ecore_Window mouse_win, Ecore_Window key_win) e_grabinput_release(Ecore_Window mouse_win, Ecore_Window key_win)
{ {
if (e_comp->comp_type != E_PIXMAP_TYPE_X) return;
if (mouse_win == grab_mouse_win) if (mouse_win == grab_mouse_win)
{ {
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
ecore_x_pointer_ungrab(); if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ecore_x_pointer_ungrab();
#endif #endif
grab_mouse_win = 0; grab_mouse_win = 0;
} }
if (key_win == grab_key_win) if (key_win == grab_key_win)
{ {
#ifndef HAVE_WAYLAND_ONLY #ifndef HAVE_WAYLAND_ONLY
ecore_x_keyboard_ungrab(); if (e_comp->comp_type == E_PIXMAP_TYPE_X)
ecore_x_keyboard_ungrab();
#endif #endif
grab_key_win = 0; grab_key_win = 0;
if (focus_win != 0) if (focus_win != 0)