Переглянути джерело

patch for scroll dumping characters into input buffer

Dax Raad 8 місяців тому
батько
коміт
322385f6b1
1 змінених файлів з 22 додано та 0 видалено
  1. 22 0
      packages/tui/internal/tui/tui.go

+ 22 - 0
packages/tui/internal/tui/tui.go

@@ -56,6 +56,7 @@ type appModel struct {
 	isLeaderSequence     bool
 	toastManager         *toast.ToastManager
 	interruptKeyState    InterruptKeyState
+	lastScroll           time.Time
 }
 
 func (a appModel) Init() tea.Cmd {
@@ -81,12 +82,32 @@ func (a appModel) Init() tea.Cmd {
 	return tea.Batch(cmds...)
 }
 
+var BUGGED_SCROLL_KEYS = map[string]bool{
+	"0": true,
+	"1": true,
+	"2": true,
+	"3": true,
+	"4": true,
+	"5": true,
+	"6": true,
+	"7": true,
+	"8": true,
+	"9": true,
+	"M": true,
+	"m": true,
+	"[": true,
+	";": true,
+}
+
 func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 	var cmds []tea.Cmd
 
 	switch msg := msg.(type) {
 	case tea.KeyPressMsg:
 		keyString := msg.String()
+		if time.Since(a.lastScroll) < time.Millisecond*100 && BUGGED_SCROLL_KEYS[keyString] {
+			return a, nil
+		}
 
 		// 1. Handle active modal
 		if a.modal != nil {
@@ -222,6 +243,7 @@ func (a appModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 		a.editor = updatedEditor.(chat.EditorComponent)
 		return a, cmd
 	case tea.MouseWheelMsg:
+		a.lastScroll = time.Now()
 		if a.modal != nil {
 			return a, nil
 		}