fix: sluggish mouse scroll
This commit is contained in:
73
tui_test.go
73
tui_test.go
@@ -1267,6 +1267,79 @@ func TestLongThreadReplyComposerIsVisibleWithDifflet(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestMouseWheelScrollsFocusedPaneByThree(t *testing.T) {
|
||||
m := NewApp(nil, "o", "r", false, 50, time.Second)
|
||||
m.screen, m.loading, m.width, m.height = threadScreen, false, 60, 12
|
||||
m.listHidden, m.focus = true, threadDetailPane
|
||||
m.details = PRDetails{
|
||||
PullRequest: PullRequest{RepoWithOwner: "o/r", Number: 1, Title: "Title"},
|
||||
Threads: []ReviewThread{{
|
||||
ID: "thread", Path: "main.go",
|
||||
Comments: []ReviewComment{{
|
||||
ID: "comment", Author: "reviewer",
|
||||
Body: strings.Repeat("A long discussion line. ", 80),
|
||||
}},
|
||||
}},
|
||||
}
|
||||
|
||||
updated, _ := m.Update(tea.MouseMsg{
|
||||
Button: tea.MouseButtonWheelDown,
|
||||
Action: tea.MouseActionPress,
|
||||
})
|
||||
m = updated.(App)
|
||||
if m.scroll != mouseWheelScrollStep {
|
||||
t.Fatalf("wheel down scrolled %d lines, want %d", m.scroll, mouseWheelScrollStep)
|
||||
}
|
||||
|
||||
updated, _ = m.Update(tea.MouseMsg{
|
||||
Button: tea.MouseButtonWheelUp,
|
||||
Action: tea.MouseActionPress,
|
||||
})
|
||||
m = updated.(App)
|
||||
if m.scroll != 0 {
|
||||
t.Fatalf("wheel up did not return to the top: %d", m.scroll)
|
||||
}
|
||||
|
||||
m.writeMode, m.writeThreadID = writeReply, "thread"
|
||||
updated, _ = m.Update(tea.MouseMsg{
|
||||
Button: tea.MouseButtonWheelDown,
|
||||
Action: tea.MouseActionPress,
|
||||
})
|
||||
m = updated.(App)
|
||||
if m.scroll != mouseWheelScrollStep {
|
||||
t.Fatalf("reply-mode wheel down scrolled %d lines, want %d",
|
||||
m.scroll, mouseWheelScrollStep)
|
||||
}
|
||||
|
||||
m.scroll = max(0, m.detailMaxScroll()-1)
|
||||
updated, _ = m.Update(tea.MouseMsg{
|
||||
Button: tea.MouseButtonWheelDown,
|
||||
Action: tea.MouseActionPress,
|
||||
})
|
||||
m = updated.(App)
|
||||
if m.scroll != m.detailMaxScroll() {
|
||||
t.Fatalf("wheel scrolling exceeded or missed the lower bound: %d/%d",
|
||||
m.scroll, m.detailMaxScroll())
|
||||
}
|
||||
|
||||
m.writeMode, m.writeThreadID = writeNone, ""
|
||||
m.focus, m.threadIndex = threadListPane, 0
|
||||
for index := 1; index < 8; index++ {
|
||||
m.details.Threads = append(m.details.Threads, ReviewThread{
|
||||
ID: fmt.Sprintf("thread-%d", index),
|
||||
})
|
||||
}
|
||||
updated, _ = m.Update(tea.MouseMsg{
|
||||
Button: tea.MouseButtonWheelDown,
|
||||
Action: tea.MouseActionPress,
|
||||
})
|
||||
m = updated.(App)
|
||||
if m.threadIndex != mouseWheelScrollStep {
|
||||
t.Fatalf("thread-list wheel moved %d items, want %d",
|
||||
m.threadIndex, mouseWheelScrollStep)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveToggleConfirmsAndUsesCurrentThreadState(t *testing.T) {
|
||||
service := &recordingService{}
|
||||
m := NewApp(service, "o", "r", false, 50, time.Second)
|
||||
|
||||
Reference in New Issue
Block a user