Merge pull request #2696 from RyanDwyer/fix-gtkmenubar

Fix GtkMenuBar always opening first item
This commit is contained in:
Drew DeVault 2018-09-23 07:18:09 -05:00 committed by GitHub
commit 0bc9dc192f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -348,17 +348,33 @@ struct sway_seat *seat_create(struct sway_input_manager *input,
seat->input = input; seat->input = input;
wl_list_init(&seat->devices); 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); wl_list_insert(&input->seats, &seat->link);
return seat; 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, static void seat_apply_input_config(struct sway_seat *seat,
struct sway_seat_device *sway_device) { struct sway_seat_device *sway_device) {
const char *mapped_to_output = NULL; 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); wl_list_insert(&seat->devices, &seat_device->link);
seat_configure_device(seat, input_device); seat_configure_device(seat, input_device);
seat_update_capabilities(seat);
} }
void seat_remove_device(struct sway_seat *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); input_device->identifier, seat->wlr_seat->name);
seat_device_destroy(seat_device); seat_device_destroy(seat_device);
seat_update_capabilities(seat);
} }
void seat_configure_xcursor(struct sway_seat *seat) { void seat_configure_xcursor(struct sway_seat *seat) {