5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-11 22:49:29 +08:00

[V3 Linux] Fix Keybind remit (#3797)

debounce linux keypress events  remits if held past a certain value
This commit is contained in:
Atterpac 2024-10-01 16:21:14 -06:00 committed by GitHub
parent 77b8132591
commit f16d1be955
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -7,6 +7,7 @@ import (
"regexp"
"strings"
"sync"
"time"
"unsafe"
"github.com/wailsapp/wails/v3/internal/assetserver/webview"
@ -1480,8 +1481,22 @@ func onUriList(extracted **C.char, data unsafe.Pointer) {
}
}
var debounceTimer *time.Timer
var isDebouncing bool = false
//export onKeyPressEvent
func onKeyPressEvent(widget *C.GtkWidget, event *C.GdkEventKey, userData C.uintptr_t) C.gboolean {
func onKeyPressEvent(_ *C.GtkWidget, event *C.GdkEventKey, userData C.uintptr_t) C.gboolean {
// Keypress re-emits if the key is pressed over a certain threshold so we need a debounce
if isDebouncing {
debounceTimer.Reset(50 * time.Millisecond)
return C.gboolean(0)
}
// Start the debounce
isDebouncing = true
debounceTimer = time.AfterFunc(50*time.Millisecond, func() {
isDebouncing = false
})
windowID := uint(C.uint(userData))
if accelerator, ok := getKeyboardState(event); ok {
windowKeyEvents <- &windowKeyEvent{