summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorandrewxt <[email protected]>2025-07-02 23:26:09 -0400
committerGitHub <[email protected]>2025-07-02 23:26:09 -0400
commit67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38 (patch)
tree4067500f0e13b1e3b083871f11ad9a7b41e0c0dc /packages
parentc663fbc3eee2ab38617445098a9acd19ef45a9c1 (diff)
downloadopencode-67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38.tar.gz
opencode-67aa7ce04d7c81bc1bf8dee3ac7af8b97b950a38.zip
fix mouse scroll events being interpreted as keyboard input (#628)
Diffstat (limited to 'packages')
-rw-r--r--packages/tui/internal/tui/tui.go21
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
}