mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-23 10:29:49 +01:00
Merge pull request #569 from emersion/hide-seat-cursor
rootston: hide cursor if seat has only keyboards
This commit is contained in:
commit
f2698a8960
1 changed files with 26 additions and 5 deletions
|
@ -293,11 +293,6 @@ struct roots_seat *roots_seat_create(struct roots_input *input, char *name) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlr_seat_set_capabilities(seat->seat,
|
|
||||||
WL_SEAT_CAPABILITY_KEYBOARD |
|
|
||||||
WL_SEAT_CAPABILITY_POINTER |
|
|
||||||
WL_SEAT_CAPABILITY_TOUCH);
|
|
||||||
|
|
||||||
wl_list_insert(&input->seats, &seat->link);
|
wl_list_insert(&input->seats, &seat->link);
|
||||||
|
|
||||||
seat->seat_destroy.notify = roots_seat_handle_seat_destroy;
|
seat->seat_destroy.notify = roots_seat_handle_seat_destroy;
|
||||||
|
@ -306,6 +301,28 @@ struct roots_seat *roots_seat_create(struct roots_input *input, char *name) {
|
||||||
return seat;
|
return seat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void seat_update_capabilities(struct roots_seat *seat) {
|
||||||
|
uint32_t caps = 0;
|
||||||
|
if (!wl_list_empty(&seat->keyboards)) {
|
||||||
|
caps |= WL_SEAT_CAPABILITY_KEYBOARD;
|
||||||
|
}
|
||||||
|
if (!wl_list_empty(&seat->pointers) || !wl_list_empty(&seat->tablet_tools)) {
|
||||||
|
caps |= WL_SEAT_CAPABILITY_POINTER;
|
||||||
|
}
|
||||||
|
if (!wl_list_empty(&seat->touch)) {
|
||||||
|
caps |= WL_SEAT_CAPABILITY_TOUCH;
|
||||||
|
}
|
||||||
|
wlr_seat_set_capabilities(seat->seat, caps);
|
||||||
|
|
||||||
|
// Hide cursor if seat doesn't have pointer capability
|
||||||
|
if ((caps & WL_SEAT_CAPABILITY_POINTER) == 0) {
|
||||||
|
wlr_cursor_set_image(seat->cursor->cursor, NULL, 0, 0, 0, 0, 0, 0);
|
||||||
|
} else {
|
||||||
|
wlr_xcursor_manager_set_cursor_image(seat->cursor->xcursor_manager,
|
||||||
|
seat->cursor->default_xcursor, seat->cursor->cursor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void seat_add_keyboard(struct roots_seat *seat,
|
static void seat_add_keyboard(struct roots_seat *seat,
|
||||||
struct wlr_input_device *device) {
|
struct wlr_input_device *device) {
|
||||||
assert(device->type == WLR_INPUT_DEVICE_KEYBOARD);
|
assert(device->type == WLR_INPUT_DEVICE_KEYBOARD);
|
||||||
|
@ -404,6 +421,8 @@ void roots_seat_add_device(struct roots_seat *seat,
|
||||||
seat_add_tablet_tool(seat, device);
|
seat_add_tablet_tool(seat, device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
seat_update_capabilities(seat);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void seat_remove_keyboard(struct roots_seat *seat,
|
static void seat_remove_keyboard(struct roots_seat *seat,
|
||||||
|
@ -480,6 +499,8 @@ void roots_seat_remove_device(struct roots_seat *seat,
|
||||||
seat_remove_tablet_tool(seat, device);
|
seat_remove_tablet_tool(seat, device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
seat_update_capabilities(seat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void roots_seat_configure_xcursor(struct roots_seat *seat) {
|
void roots_seat_configure_xcursor(struct roots_seat *seat) {
|
||||||
|
|
Loading…
Reference in a new issue