aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
authorLina Banik <l.banik@stud.uni-hannover.de>2022-06-06 17:16:29 +0200
committerSimon Ser <contact@emersion.fr>2023-11-21 11:35:49 +0100
commitf7a40cfa2fd89d41afd596e7bbfbdd66a4a0e4da (patch)
tree8b5ac4ac2e2effac14e3c23e511aae13087704ed /sway
parent5c99b98805e8171d590d466b2eb21402aaf8de6b (diff)
seat: Fix reloading cursor theme after change
This reverts commit afde6369 "seat: avoid unneeded reloading xcursor theme". Always avoiding to reload the xcursor theme prevents reloading the cursor even when this is desired. Instead seat_configure_xcursor can determine whether a full reload is necessary. To stay with the spirit of the reverted change, cursors are only fully reloaded, if the theme has changed. Fixes #6931
Diffstat (limited to 'sway')
-rw-r--r--sway/input/seat.c39
1 files changed, 19 insertions, 20 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index f73946b1..0fd0e8e6 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -803,9 +803,7 @@ static void seat_apply_input_mapping(struct sway_seat *seat,
static void seat_configure_pointer(struct sway_seat *seat,
struct sway_seat_device *sway_device) {
- if ((seat->wlr_seat->capabilities & WL_SEAT_CAPABILITY_POINTER) == 0) {
- seat_configure_xcursor(seat);
- }
+ seat_configure_xcursor(seat);
wlr_cursor_attach_input_device(seat->cursor->cursor,
sway_device->input_device->wlr_device);
wl_event_source_timer_update(
@@ -1069,26 +1067,27 @@ void seat_configure_xcursor(struct sway_seat *seat) {
sway_log(SWAY_ERROR,
"Cannot create XCursor manager for theme '%s'", cursor_theme);
}
- }
- for (int i = 0; i < root->outputs->length; ++i) {
- struct sway_output *sway_output = root->outputs->items[i];
- struct wlr_output *output = sway_output->wlr_output;
- bool result =
- wlr_xcursor_manager_load(seat->cursor->xcursor_manager,
- output->scale);
- if (!result) {
- sway_log(SWAY_ERROR,
- "Cannot load xcursor theme for output '%s' with scale %f",
- output->name, output->scale);
+
+ for (int i = 0; i < root->outputs->length; ++i) {
+ struct sway_output *sway_output = root->outputs->items[i];
+ struct wlr_output *output = sway_output->wlr_output;
+ bool result =
+ wlr_xcursor_manager_load(seat->cursor->xcursor_manager,
+ output->scale);
+ if (!result) {
+ sway_log(SWAY_ERROR,
+ "Cannot load xcursor theme for output '%s' with scale %f",
+ output->name, output->scale);
+ }
}
- }
- // Reset the cursor so that we apply it to outputs that just appeared
- cursor_set_image(seat->cursor, NULL, NULL);
- cursor_set_image(seat->cursor, "default", NULL);
- wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
- seat->cursor->cursor->y);
+ // Reset the cursor so that we apply it to outputs that just appeared
+ cursor_set_image(seat->cursor, NULL, NULL);
+ cursor_set_image(seat->cursor, "default", NULL);
+ wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
+ seat->cursor->cursor->y);
+ }
}
bool seat_is_input_allowed(struct sway_seat *seat,