aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/input-manager.c
diff options
context:
space:
mode:
authorLibravatar Andri Yngvason <andri@yngvason.is>2020-02-08 18:17:42 +0000
committerLibravatar Simon Ser <contact@emersion.fr>2024-03-18 09:07:21 +0100
commit5a7477cb8f568ce4aeb852215ad40899f18f3d91 (patch)
treeb080fbb1902c8ebab17c29a6ea44be670cc8b2af /sway/input/input-manager.c
parentman: document that the scale might be adjusted (diff)
downloadsway-5a7477cb8f568ce4aeb852215ad40899f18f3d91.tar.gz
sway-5a7477cb8f568ce4aeb852215ad40899f18f3d91.tar.zst
sway-5a7477cb8f568ce4aeb852215ad40899f18f3d91.zip
Implement transient seat management
Diffstat (limited to 'sway/input/input-manager.c')
-rw-r--r--sway/input/input-manager.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 089e1e71..248ca34e 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -2,7 +2,9 @@
2#include <stdio.h> 2#include <stdio.h>
3#include <string.h> 3#include <string.h>
4#include <math.h> 4#include <math.h>
5#include <assert.h>
5#include <wlr/config.h> 6#include <wlr/config.h>
7#include <wlr/backend/libinput.h>
6#include <wlr/types/wlr_cursor.h> 8#include <wlr/types/wlr_cursor.h>
7#include <wlr/types/wlr_keyboard_group.h> 9#include <wlr/types/wlr_keyboard_group.h>
8#include <wlr/types/wlr_virtual_keyboard_v1.h> 10#include <wlr/types/wlr_virtual_keyboard_v1.h>
@@ -431,6 +433,20 @@ void handle_virtual_pointer(struct wl_listener *listener, void *data) {
431 } 433 }
432} 434}
433 435
436static void handle_transient_seat_manager_create_seat(
437 struct wl_listener *listener, void *data) {
438 struct wlr_transient_seat_v1 *transient_seat = data;
439 static uint64_t i;
440 char name[256];
441 snprintf(name, sizeof(name), "transient-%"PRIx64, i++);
442 struct sway_seat *seat = seat_create(name);
443 if (seat && seat->wlr_seat) {
444 wlr_transient_seat_v1_ready(transient_seat, seat->wlr_seat);
445 } else {
446 wlr_transient_seat_v1_deny(transient_seat);
447 }
448}
449
434struct sway_input_manager *input_manager_create(struct sway_server *server) { 450struct sway_input_manager *input_manager_create(struct sway_server *server) {
435 struct sway_input_manager *input = 451 struct sway_input_manager *input =
436 calloc(1, sizeof(struct sway_input_manager)); 452 calloc(1, sizeof(struct sway_input_manager));
@@ -466,6 +482,15 @@ struct sway_input_manager *input_manager_create(struct sway_server *server) {
466 482
467 input->pointer_gestures = wlr_pointer_gestures_v1_create(server->wl_display); 483 input->pointer_gestures = wlr_pointer_gestures_v1_create(server->wl_display);
468 484
485 input->transient_seat_manager =
486 wlr_transient_seat_manager_v1_create(server->wl_display);
487 assert(input->transient_seat_manager);
488
489 input->transient_seat_create.notify =
490 handle_transient_seat_manager_create_seat;
491 wl_signal_add(&input->transient_seat_manager->events.create_seat,
492 &input->transient_seat_create);
493
469 return input; 494 return input;
470} 495}
471 496