forked from enlightenment/enlightenment
start making e_grabinput work for wayland (nb: not finished yet)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
b42e70c73a
commit
a889f55c34
|
@ -41,6 +41,9 @@ e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
ecore_x_pointer_ungrab();
|
ecore_x_pointer_ungrab();
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
ecore_wl_input_ungrab(ecore_wl_input_get());
|
||||||
#endif
|
#endif
|
||||||
grab_mouse_win = 0;
|
grab_mouse_win = 0;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +52,11 @@ e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
ecore_x_keyboard_ungrab();
|
ecore_x_keyboard_ungrab();
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
ecore_wl_input_ungrab(ecore_wl_input_get());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
grab_key_win = 0;
|
grab_key_win = 0;
|
||||||
focus_win = 0;
|
focus_win = 0;
|
||||||
}
|
}
|
||||||
|
@ -65,6 +72,14 @@ e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
|
||||||
ret = ecore_x_pointer_grab(mouse_win);
|
ret = ecore_x_pointer_grab(mouse_win);
|
||||||
if (!ret) return 0;
|
if (!ret) return 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
{
|
||||||
|
Ecore_Wl_Window *wl_win;
|
||||||
|
|
||||||
|
if ((wl_win = ecore_wl_window_find(mouse_win)))
|
||||||
|
ecore_wl_input_grab(ecore_wl_input_get(), mouse_win, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
grab_mouse_win = mouse_win;
|
grab_mouse_win = mouse_win;
|
||||||
}
|
}
|
||||||
|
@ -86,6 +101,14 @@ e_grabinput_get(Ecore_Window mouse_win, int confine_mouse, Ecore_Window key_win)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
{
|
||||||
|
Ecore_Wl_Window *wl_win;
|
||||||
|
|
||||||
|
if ((wl_win = ecore_wl_window_find(key_win)))
|
||||||
|
ecore_wl_input_grab(ecore_wl_input_get(), key_win, 0);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
grab_key_win = key_win;
|
grab_key_win = key_win;
|
||||||
}
|
}
|
||||||
|
@ -103,7 +126,11 @@ e_grabinput_release(Ecore_Window mouse_win, Ecore_Window key_win)
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
ecore_x_pointer_ungrab();
|
ecore_x_pointer_ungrab();
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
ecore_wl_input_ungrab(ecore_wl_input_get());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
grab_mouse_win = 0;
|
grab_mouse_win = 0;
|
||||||
}
|
}
|
||||||
if (key_win == grab_key_win)
|
if (key_win == grab_key_win)
|
||||||
|
@ -111,7 +138,11 @@ e_grabinput_release(Ecore_Window mouse_win, Ecore_Window key_win)
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
ecore_x_keyboard_ungrab();
|
ecore_x_keyboard_ungrab();
|
||||||
|
#else
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
ecore_wl_input_ungrab(ecore_wl_input_get());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
grab_key_win = 0;
|
grab_key_win = 0;
|
||||||
if (focus_win != 0)
|
if (focus_win != 0)
|
||||||
{
|
{
|
||||||
|
@ -126,7 +157,6 @@ e_grabinput_release(Ecore_Window mouse_win, Ecore_Window key_win)
|
||||||
EAPI void
|
EAPI void
|
||||||
e_grabinput_focus(Ecore_Window win, E_Focus_Method method)
|
e_grabinput_focus(Ecore_Window win, E_Focus_Method method)
|
||||||
{
|
{
|
||||||
if (e_comp->comp_type != E_PIXMAP_TYPE_X) return;
|
|
||||||
if (grab_key_win != 0)
|
if (grab_key_win != 0)
|
||||||
{
|
{
|
||||||
/* fprintf(stderr, "while grabbed focus changed to %x\n", win); */
|
/* fprintf(stderr, "while grabbed focus changed to %x\n", win); */
|
||||||
|
@ -175,6 +205,10 @@ _e_grabinput_focus_check(void *data __UNUSED__)
|
||||||
static void
|
static void
|
||||||
_e_grabinput_focus_do(Ecore_Window win, E_Focus_Method method)
|
_e_grabinput_focus_do(Ecore_Window win, E_Focus_Method method)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_WAYLAND_ONLY
|
||||||
|
Ecore_Wl_Window *wl_win;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* fprintf(stderr, "focus to %x method %i\n", win, method); */
|
/* fprintf(stderr, "focus to %x method %i\n", win, method); */
|
||||||
switch (method)
|
switch (method)
|
||||||
{
|
{
|
||||||
|
@ -185,27 +219,39 @@ _e_grabinput_focus_do(Ecore_Window win, E_Focus_Method method)
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
ecore_x_window_focus_at_time(win, ecore_x_current_time_get());
|
ecore_x_window_focus_at_time(win, ecore_x_current_time_get());
|
||||||
ecore_x_icccm_take_focus_send(win, ecore_x_current_time_get());
|
ecore_x_icccm_take_focus_send(win, ecore_x_current_time_get());
|
||||||
|
#else
|
||||||
|
if ((wl_win = ecore_wl_window_find(key_win)))
|
||||||
|
{
|
||||||
|
/* FIXME: Need to add an ecore_wl_window_focus function */
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_FOCUS_METHOD_GLOBALLY_ACTIVE:
|
case E_FOCUS_METHOD_GLOBALLY_ACTIVE:
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
ecore_x_icccm_take_focus_send(win, ecore_x_current_time_get());
|
ecore_x_icccm_take_focus_send(win, ecore_x_current_time_get());
|
||||||
|
#else
|
||||||
|
if ((wl_win = ecore_wl_window_find(key_win)))
|
||||||
|
{
|
||||||
|
/* FIXME: Need to add an ecore_wl_window_focus function */
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_FOCUS_METHOD_PASSIVE:
|
case E_FOCUS_METHOD_PASSIVE:
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
ecore_x_window_focus_at_time(win, ecore_x_current_time_get());
|
ecore_x_window_focus_at_time(win, ecore_x_current_time_get());
|
||||||
|
#else
|
||||||
|
if ((wl_win = ecore_wl_window_find(key_win)))
|
||||||
|
{
|
||||||
|
/* FIXME: Need to add an ecore_wl_window_focus function */
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_WAYLAND_ONLY
|
|
||||||
(void)win;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -222,4 +268,3 @@ _e_grabinput_focus(Ecore_Window win, E_Focus_Method method)
|
||||||
focus_fix_timer = ecore_timer_add(0.2, _e_grabinput_focus_check, NULL);
|
focus_fix_timer = ecore_timer_add(0.2, _e_grabinput_focus_check, NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue