sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 862a4f69bed4ef32a67798f04a73d7006a67160a
parent e33671fd9a478a917250b2e3b889c9ee0e49c65c
Author: Drew DeVault <sir@cmpwn.com>
Date:   Tue, 23 Oct 2018 14:18:58 +0200

Merge pull request #2944 from RyanDwyer/fix-multiseat-dormant-cursor

Fix dormant cursor when using multiple seats
Diffstat:
Msway/input/cursor.c | 3+++
Msway/input/seat.c | 7+++++--
2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/sway/input/cursor.c b/sway/input/cursor.c @@ -1220,6 +1220,9 @@ static void handle_request_set_cursor(struct wl_listener *listener, void cursor_set_image(struct sway_cursor *cursor, const char *image, struct wl_client *client) { + if (!(cursor->seat->wlr_seat->capabilities & WL_SEAT_CAPABILITY_POINTER)) { + return; + } if (!image) { wlr_cursor_set_image(cursor->cursor, NULL, 0, 0, 0, 0, 0, 0); } else if (!cursor->image || strcmp(cursor->image, image) != 0) { diff --git a/sway/input/seat.c b/sway/input/seat.c @@ -389,12 +389,15 @@ static void seat_update_capabilities(struct sway_seat *seat) { break; } } - wlr_seat_set_capabilities(seat->wlr_seat, caps); - // Hide cursor if seat doesn't have pointer capability + // Hide cursor if seat doesn't have pointer capability. + // We must call cursor_set_image while the wlr_seat has the capabilities + // otherwise it's a no op. if ((caps & WL_SEAT_CAPABILITY_POINTER) == 0) { cursor_set_image(seat->cursor, NULL, NULL); + wlr_seat_set_capabilities(seat->wlr_seat, caps); } else { + wlr_seat_set_capabilities(seat->wlr_seat, caps); cursor_set_image(seat->cursor, "left_ptr", NULL); } }