From 06fbd51ff5563f548599615a6baf5a1854bf9983 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 3 Apr 2018 16:16:42 -0400 Subject: Add input inhibitor to input manager --- include/sway/input/input-manager.h | 5 +++++ include/sway/input/seat.h | 3 +++ 2 files changed, 8 insertions(+) (limited to 'include/sway/input') diff --git a/include/sway/input/input-manager.h b/include/sway/input/input-manager.h index 8e39a4a7..89a3ac71 100644 --- a/include/sway/input/input-manager.h +++ b/include/sway/input/input-manager.h @@ -1,6 +1,7 @@ #ifndef _SWAY_INPUT_INPUT_MANAGER_H #define _SWAY_INPUT_INPUT_MANAGER_H #include +#include #include "sway/server.h" #include "sway/config.h" #include "list.h" @@ -23,7 +24,11 @@ struct sway_input_manager { struct wl_list devices; struct wl_list seats; + struct wlr_input_inhibit_manager *inhibit; + struct wl_listener new_input; + struct wl_listener inhibit_activate; + struct wl_listener inhibit_deactivate; }; struct sway_input_manager *input_manager_create(struct sway_server *server); diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index 137fcd22..53031d70 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -64,6 +64,9 @@ void seat_set_focus_warp(struct sway_seat *seat, void seat_set_focus_layer(struct sway_seat *seat, struct wlr_layer_surface *layer); +void seat_set_exclusive_client(struct sway_seat *seat, + struct wl_client *client); + struct sway_container *seat_get_focus(struct sway_seat *seat); /** -- cgit v1.2.3 From b7e779491232b825f6edc0b199e7564e93f1e332 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 3 Apr 2018 17:03:29 -0400 Subject: Implement input-inhibit in sway, swaylock --- include/sway/input/seat.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'include/sway/input') diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index 53031d70..4b0fc3c1 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -32,6 +32,9 @@ struct sway_seat { // If the focused layer is set, views cannot receive keyboard focus struct wlr_layer_surface *focused_layer; + // If exclusive_client is set, no other clients will receive input events + struct wl_client *exclusive_client; + struct wl_listener focus_destroy; struct wl_listener new_container; @@ -88,4 +91,6 @@ void seat_apply_config(struct sway_seat *seat, struct seat_config *seat_config); struct seat_config *seat_get_config(struct sway_seat *seat); +bool seat_allow_input(struct sway_seat *seat, struct wlr_surface *surface); + #endif -- cgit v1.2.3 From d2d050d59cf19c583b100e6e3637ed9a06a8863f Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Tue, 3 Apr 2018 21:25:42 -0400 Subject: Address review feedback --- include/sway/input/seat.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/sway/input') diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index 4b0fc3c1..d1cfbe4c 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -91,6 +91,6 @@ void seat_apply_config(struct sway_seat *seat, struct seat_config *seat_config); struct seat_config *seat_get_config(struct sway_seat *seat); -bool seat_allow_input(struct sway_seat *seat, struct wlr_surface *surface); +bool seat_is_input_allowed(struct sway_seat *seat, struct wlr_surface *surface); #endif -- cgit v1.2.3