JBR-7675: Respect disabling key repeat [WLToolkit]

(cherry picked from commit 723f45aca7)
This commit is contained in:
Nikita Tsarev
2024-09-26 18:01:07 +02:00
committed by jbrbot
parent 97f93e4203
commit b1685d050c
2 changed files with 16 additions and 7 deletions

View File

@@ -40,12 +40,23 @@ class WLKeyboard {
private class KeyRepeatManager {
private final Timer timer = new Timer("WLKeyboard.KeyRepeatManager", true);
private TimerTask currentRepeatTask;
private int delayBeforeRepeatMillis = 500;
private int delayBetweenRepeatMillis = 50;
private int delayBeforeRepeatMillis;
private int delayBetweenRepeatMillis;
void setRepeatInfo(int charsPerSecond, int delayMillis) {
// this function receives (0, 0) when key repeat is disabled
this.delayBeforeRepeatMillis = delayMillis;
this.delayBetweenRepeatMillis = (int) (1000.0 / charsPerSecond);
if (charsPerSecond > 0) {
this.delayBetweenRepeatMillis = (int) (1000.0 / charsPerSecond);
} else {
this.delayBetweenRepeatMillis = 0;
}
cancelRepeat();
}
boolean isRepeatEnabled() {
return this.delayBeforeRepeatMillis > 0 || this.delayBetweenRepeatMillis > 0;
}
void cancelRepeat() {
@@ -57,7 +68,7 @@ class WLKeyboard {
void startRepeat(long timestamp, int keycode) {
cancelRepeat();
if (keycode == 0) {
if (keycode == 0 || !isRepeatEnabled()) {
return;
}

View File

@@ -441,9 +441,7 @@ static void
wl_keyboard_repeat_info(void *data, struct wl_keyboard *wl_keyboard,
int32_t rate, int32_t delay)
{
if (rate > 0 && delay > 0) {
wlSetRepeatInfo(rate, delay);
}
wlSetRepeatInfo(rate, delay);
}
void