diff options
| author | andrewxt <[email protected]> | 2025-07-02 23:26:09 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-02 23:26:09 -0400 |
| commit | 67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38 (patch) | |
| tree | 4067500f0e13b1e3b083871f11ad9a7b41e0c0dc | |
| parent | c663fbc3eee2ab38617445098a9acd19ef45a9c1 (diff) | |
| download | opencode-67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38.tar.gz opencode-67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38.zip | |
fix mouse scroll events being interpreted as keyboard input (#628)
| -rw-r--r-- | packages/tui/internal/tui/tui.go | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index f28d145dc..531782942 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -107,6 +107,25 @@ var BUGGED_SCROLL_KEYS = map[string]bool{ ";": true, } +func isScrollRelatedInput(keyString string) bool { + if len(keyString) == 0 { + return false + } + + for _, char := range keyString { + charStr := string(char) + if !BUGGED_SCROLL_KEYS[charStr] { + return false + } + } + + if len(keyString) > 3 && (keyString[len(keyString)-1] == 'M' || keyString[len(keyString)-1] == 'm') { + return true + } + + return len(keyString) > 1 +} + func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { var cmd tea.Cmd var cmds []tea.Cmd @@ -114,7 +133,7 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { switch msg := msg.(type) { case tea.KeyPressMsg: keyString := msg.String() - if time.Since(a.lastScroll) < time.Millisecond*100 && BUGGED_SCROLL_KEYS[keyString] { + if time.Since(a.lastScroll) < time.Millisecond*100 && (BUGGED_SCROLL_KEYS[keyString] || isScrollRelatedInput(keyString)) { return a, nil } |
