diff options
author | Dominique Martinet <asmadeus@codewreck.org> | 2018-04-28 08:17:58 +0900 |
---|---|---|
committer | Dominique Martinet <asmadeus@codewreck.org> | 2018-04-29 20:50:55 +0900 |
commit | 992e5add42ddc126b7872c53b88fc3bff47fed3f (patch) | |
tree | 1bd8869edeebf0211188ef5423197367e2e622b2 /lib/renderers/wayland/window.c | |
parent | 610b30364e1d5206b43b873e3f11d5d66d2e28e5 (diff) | |
download | bemenu-992e5add42ddc126b7872c53b88fc3bff47fed3f.tar.gz bemenu-992e5add42ddc126b7872c53b88fc3bff47fed3f.tar.bz2 bemenu-992e5add42ddc126b7872c53b88fc3bff47fed3f.zip |
wayland renderer: Implement grab_keyboard
This avoids locking oneself out when running bemenu interactively,
as input would be grabbed too early without that and layer shell
does not allow to 'ungrab' focus by clicking on another window
Diffstat (limited to 'lib/renderers/wayland/window.c')
-rw-r--r-- | lib/renderers/wayland/window.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/renderers/wayland/window.c b/lib/renderers/wayland/window.c index 5ca4578..6cf0c52 100644 --- a/lib/renderers/wayland/window.c +++ b/lib/renderers/wayland/window.c @@ -295,6 +295,14 @@ bm_wl_window_set_bottom(struct window *window, struct wl_display *display, bool wl_display_roundtrip(display); } +void +bm_wl_window_grab_keyboard(struct window *window, struct wl_display *display, bool grab) +{ + zwlr_layer_surface_v1_set_keyboard_interactivity(window->layer_surface, grab); + wl_surface_commit(window->surface); + wl_display_roundtrip(display); +} + bool bm_wl_window_create(struct window *window, struct wl_display *display, struct wl_shm *shm, struct wl_output *output, struct zwlr_layer_shell_v1 *layer_shell, struct wl_surface *surface) { @@ -305,7 +313,6 @@ bm_wl_window_create(struct window *window, struct wl_display *display, struct wl zwlr_layer_surface_v1_set_exclusive_zone(window->layer_surface, -1); zwlr_layer_surface_v1_set_anchor(window->layer_surface, (window->bottom ? ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM : ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP) | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT); zwlr_layer_surface_v1_set_size(window->layer_surface, 0, 32); - zwlr_layer_surface_v1_set_keyboard_interactivity(window->layer_surface, true); wl_surface_commit(surface); wl_display_roundtrip(display); } else { |