mirror of
https://github.com/swaywm/sway.git
synced 2024-12-30 17:06:40 +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;
|
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) {
|
||||||
|
|
Loading…
Reference in a new issue