input/keyboard: respect solo repeat_{rate,delay}

If `repeat_rate` or `repeat_delay` is set without the other being set,
the default was being used for both. This changes the logic to respect
the value given and use the default for the other when only one is set.
This commit is contained in:
Brian Ashworth 2019-02-10 12:36:30 -05:00 committed by Drew DeVault
parent 95e16bb744
commit 062da8eae7

View file

@ -549,13 +549,17 @@ void sway_keyboard_configure(struct sway_keyboard *keyboard) {
wlr_keyboard_led_update(wlr_device->keyboard, leds); wlr_keyboard_led_update(wlr_device->keyboard, leds);
} }
if (input_config && input_config->repeat_delay != INT_MIN int repeat_rate = 25;
&& input_config->repeat_rate != INT_MIN) { if (input_config && input_config->repeat_rate != INT_MIN) {
wlr_keyboard_set_repeat_info(wlr_device->keyboard, repeat_rate = input_config->repeat_rate;
input_config->repeat_rate, input_config->repeat_delay);
} else {
wlr_keyboard_set_repeat_info(wlr_device->keyboard, 25, 600);
} }
int repeat_delay = 600;
if (input_config && input_config->repeat_delay != INT_MIN) {
repeat_delay = input_config->repeat_delay;
}
wlr_keyboard_set_repeat_info(wlr_device->keyboard, repeat_rate,
repeat_delay);
xkb_context_unref(context); xkb_context_unref(context);
struct wlr_seat *seat = keyboard->seat_device->sway_seat->wlr_seat; struct wlr_seat *seat = keyboard->seat_device->sway_seat->wlr_seat;
wlr_seat_set_keyboard(seat, wlr_device); wlr_seat_set_keyboard(seat, wlr_device);