diff --git a/src/lib/ecore_wl2/ecore_wl2_input.c b/src/lib/ecore_wl2/ecore_wl2_input.c index b4b1130a5f..f7db267a73 100644 --- a/src/lib/ecore_wl2/ecore_wl2_input.c +++ b/src/lib/ecore_wl2/ecore_wl2_input.c @@ -214,14 +214,14 @@ _ecore_wl2_input_mouse_up_send(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, ecore_event_add(ECORE_EVENT_MOUSE_BUTTON_UP, ev, NULL, NULL); } -static void +void _ecore_wl2_input_grab(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, unsigned int button) { input->grab.window = window; input->grab.button = button; } -static void +void _ecore_wl2_input_ungrab(Ecore_Wl2_Input *input) { if ((input->grab.window) && (input->grab.button)) diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h b/src/lib/ecore_wl2/ecore_wl2_private.h index 8cf8d2d638..0b7e042538 100644 --- a/src/lib/ecore_wl2/ecore_wl2_private.h +++ b/src/lib/ecore_wl2/ecore_wl2_private.h @@ -74,6 +74,7 @@ struct _Ecore_Wl2_Window EINA_INLIST; Ecore_Wl2_Display *display; + Ecore_Wl2_Input *input; Ecore_Wl2_Window *parent; @@ -203,4 +204,7 @@ void _ecore_wl2_output_del(Ecore_Wl2_Output *output); void _ecore_wl2_input_add(Ecore_Wl2_Display *display, unsigned int id); void _ecore_wl2_input_del(Ecore_Wl2_Input *input); +void _ecore_wl2_input_ungrab(Ecore_Wl2_Input *input); +void _ecore_wl2_input_grab(Ecore_Wl2_Input *input, Ecore_Wl2_Window *window, unsigned int button); + #endif diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c index 12c63f38d8..cbfb826bd6 100644 --- a/src/lib/ecore_wl2/ecore_wl2_window.c +++ b/src/lib/ecore_wl2/ecore_wl2_window.c @@ -28,7 +28,12 @@ _wl_shell_surface_cb_configure(void *data, struct wl_shell_surface *shell_surfac static void _wl_shell_surface_cb_popup_done(void *data EINA_UNUSED, struct wl_shell_surface *shell_surface EINA_UNUSED) { - /* TODO: input ungrab ? */ + Ecore_Wl2_Window *win; + + win = data; + if (!win) return; + + _ecore_wl2_input_ungrab(win->input); } static const struct wl_shell_surface_listener _wl_shell_surface_listener = @@ -322,7 +327,7 @@ ecore_wl2_window_move(Ecore_Wl2_Window *window, int x, int y) window->geometry.x = x; window->geometry.y = y; - /* TODO: input grab release ? */ + _ecore_wl2_input_ungrab(window->input); /* TODO: enable once input is done */ /* if (window->xdg_surface) */ @@ -344,7 +349,7 @@ ecore_wl2_window_resize(Ecore_Wl2_Window *window, int w, int h, int location) window->geometry.w = w; window->geometry.h = h; - /* TODO: input grab release ? */ + _ecore_wl2_input_ungrab(window->input); /* TODO: enable once input is done */ /* if (window->xdg_surface) */