mirror of
https://github.com/swaywm/sway.git
synced 2024-12-30 17:06:40 +01:00
Fix GtkMenuBar always opening first item
It seems like advertising that we support touch when we don't, while using SSD, makes GtkMenuBar misbehave. Please don't ask me why...
This commit is contained in:
parent
c2c257b884
commit
271b24ddfb
1 changed files with 26 additions and 6 deletions
|
@ -348,17 +348,33 @@ struct sway_seat *seat_create(struct sway_input_manager *input,
|
|||
seat->input = input;
|
||||
wl_list_init(&seat->devices);
|
||||
|
||||
wlr_seat_set_capabilities(seat->wlr_seat,
|
||||
WL_SEAT_CAPABILITY_KEYBOARD |
|
||||
WL_SEAT_CAPABILITY_POINTER |
|
||||
WL_SEAT_CAPABILITY_TOUCH);
|
||||
|
||||
|
||||
wl_list_insert(&input->seats, &seat->link);
|
||||
|
||||
return seat;
|
||||
}
|
||||
|
||||
static void seat_update_capabilities(struct sway_seat *seat) {
|
||||
uint32_t caps = 0;
|
||||
struct sway_seat_device *seat_device;
|
||||
wl_list_for_each(seat_device, &seat->devices, link) {
|
||||
switch (seat_device->input_device->wlr_device->type) {
|
||||
case WLR_INPUT_DEVICE_KEYBOARD:
|
||||
caps |= WL_SEAT_CAPABILITY_KEYBOARD;
|
||||
break;
|
||||
case WLR_INPUT_DEVICE_POINTER:
|
||||
caps |= WL_SEAT_CAPABILITY_POINTER;
|
||||
break;
|
||||
case WLR_INPUT_DEVICE_TOUCH:
|
||||
caps |= WL_SEAT_CAPABILITY_TOUCH;
|
||||
break;
|
||||
case WLR_INPUT_DEVICE_TABLET_TOOL:
|
||||
case WLR_INPUT_DEVICE_TABLET_PAD:
|
||||
break;
|
||||
}
|
||||
}
|
||||
wlr_seat_set_capabilities(seat->wlr_seat, caps);
|
||||
}
|
||||
|
||||
static void seat_apply_input_config(struct sway_seat *seat,
|
||||
struct sway_seat_device *sway_device) {
|
||||
const char *mapped_to_output = NULL;
|
||||
|
@ -489,6 +505,8 @@ void seat_add_device(struct sway_seat *seat,
|
|||
wl_list_insert(&seat->devices, &seat_device->link);
|
||||
|
||||
seat_configure_device(seat, input_device);
|
||||
|
||||
seat_update_capabilities(seat);
|
||||
}
|
||||
|
||||
void seat_remove_device(struct sway_seat *seat,
|
||||
|
@ -503,6 +521,8 @@ void seat_remove_device(struct sway_seat *seat,
|
|||
input_device->identifier, seat->wlr_seat->name);
|
||||
|
||||
seat_device_destroy(seat_device);
|
||||
|
||||
seat_update_capabilities(seat);
|
||||
}
|
||||
|
||||
void seat_configure_xcursor(struct sway_seat *seat) {
|
||||
|
|
Loading…
Reference in a new issue