aboutsummaryrefslogtreecommitdiff
path: root/rootston/seat.c
diff options
context:
space:
mode:
Diffstat (limited to 'rootston/seat.c')
-rw-r--r--rootston/seat.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/rootston/seat.c b/rootston/seat.c
index 737bbd67..8a581157 100644
--- a/rootston/seat.c
+++ b/rootston/seat.c
@@ -442,14 +442,19 @@ void roots_seat_configure_xcursor(struct roots_seat *seat) {
roots_config_get_cursor(seat->input->config, seat->seat->name);
if (cc != NULL) {
cursor_theme = cc->theme;
+ if (cc->default_image != NULL) {
+ seat->cursor->default_xcursor = cc->default_image;
+ }
}
- seat->cursor->xcursor_manager =
- wlr_xcursor_manager_create(cursor_theme, ROOTS_XCURSOR_SIZE);
- if (seat->cursor->xcursor_manager == NULL) {
- wlr_log(L_ERROR, "Cannot create XCursor manager for theme %s",
- cursor_theme);
- return;
+ if (!seat->cursor->xcursor_manager) {
+ seat->cursor->xcursor_manager =
+ wlr_xcursor_manager_create(cursor_theme, ROOTS_XCURSOR_SIZE);
+ if (seat->cursor->xcursor_manager == NULL) {
+ wlr_log(L_ERROR, "Cannot create XCursor manager for theme %s",
+ cursor_theme);
+ return;
+ }
}
struct roots_output *output;
@@ -463,7 +468,7 @@ void roots_seat_configure_xcursor(struct roots_seat *seat) {
}
wlr_xcursor_manager_set_cursor_image(seat->cursor->xcursor_manager,
- ROOTS_XCURSOR_DEFAULT, seat->cursor->cursor);
+ seat->cursor->default_xcursor, seat->cursor->cursor);
wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
seat->cursor->cursor->y);
}
@@ -661,8 +666,9 @@ void roots_seat_begin_resize(struct roots_seat *seat, struct roots_view *view,
view_maximize(view, false);
wlr_seat_pointer_clear_focus(seat->seat);
+ const char *resize_name = wlr_xcursor_get_resize_name(edges);
wlr_xcursor_manager_set_cursor_image(seat->cursor->xcursor_manager,
- roots_xcursor_get_resize_name(edges), seat->cursor->cursor);
+ resize_name, seat->cursor->cursor);
}
void roots_seat_begin_rotate(struct roots_seat *seat, struct roots_view *view) {