From 216b5341ae1a5244449bdb5d93aea9581def2b68 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Fri, 2 Apr 2021 01:11:54 +1100 Subject: [PATCH] better handling of scrolling for conflicted files --- pkg/gui/files_panel.go | 1 + pkg/gui/merge_panel.go | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index b3c180407..f872b8ab2 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -70,6 +70,7 @@ func (gui *Gui) selectFile(alreadySelected bool) error { if err := gui.resetOrigin(gui.getSecondaryView()); err != nil { return err } + gui.takeOverMergeConflictScrolling() } if node.File != nil && node.File.HasInlineMergeConflicts { diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go index a73ec1727..37ad6725a 100644 --- a/pkg/gui/merge_panel.go +++ b/pkg/gui/merge_panel.go @@ -18,7 +18,7 @@ import ( func (gui *Gui) handleSelectTop() error { return gui.withMergeConflictLock(func() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() gui.State.Panels.Merging.ConflictTop = true return gui.refreshMergePanel() }) @@ -26,7 +26,7 @@ func (gui *Gui) handleSelectTop() error { func (gui *Gui) handleSelectBottom() error { return gui.withMergeConflictLock(func() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() gui.State.Panels.Merging.ConflictTop = false return gui.refreshMergePanel() }) @@ -34,7 +34,7 @@ func (gui *Gui) handleSelectBottom() error { func (gui *Gui) handleSelectNextConflict() error { return gui.withMergeConflictLock(func() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() if gui.State.Panels.Merging.ConflictIndex >= len(gui.State.Panels.Merging.Conflicts)-1 { return nil } @@ -45,7 +45,7 @@ func (gui *Gui) handleSelectNextConflict() error { func (gui *Gui) handleSelectPrevConflict() error { return gui.withMergeConflictLock(func() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() if gui.State.Panels.Merging.ConflictIndex <= 0 { return nil } @@ -90,7 +90,7 @@ func (gui *Gui) handlePickHunk() error { return nil } - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() if err := gui.pushFileSnapshot(); err != nil { return err @@ -122,7 +122,7 @@ func (gui *Gui) handlePickBothHunks() error { return nil } - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() if err := gui.pushFileSnapshot(); err != nil { return err @@ -261,7 +261,7 @@ func (gui *Gui) getMergingOptions() map[string]string { } func (gui *Gui) handleEscapeMerge() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() gui.State.Panels.Merging.EditHistory = stack.New() if err := gui.refreshSidePanels(refreshOptions{scope: []RefreshableView{FILES}}); err != nil { @@ -296,7 +296,7 @@ func (gui *Gui) handleCompleteMerge() error { // promptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress func (gui *Gui) promptToContinueRebase() error { - gui.takeOverScrolling() + gui.takeOverMergeConflictScrolling() return gui.ask(askOpts{ title: "continue", @@ -317,7 +317,7 @@ func (gui *Gui) promptToContinueRebase() error { func (gui *Gui) canScrollMergePanel() bool { currentViewName := gui.currentViewName() - if currentViewName != "main" { + if currentViewName != "main" && currentViewName != "files" { return false } @@ -336,6 +336,6 @@ func (gui *Gui) withMergeConflictLock(f func() error) error { return f() } -func (gui *Gui) takeOverScrolling() { +func (gui *Gui) takeOverMergeConflictScrolling() { gui.State.Panels.Merging.UserScrolling = false }