mirror of
https://github.com/swaywm/sway.git
synced 2024-12-28 16:06:37 +01:00
Merge pull request #2696 from RyanDwyer/fix-gtkmenubar
Fix GtkMenuBar always opening first item
This commit is contained in:
commit
0bc9dc192f
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