diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2019-01-15 20:12:31 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2019-01-18 09:32:15 +1100 |
commit | 3a607061a2303d9f45d308de652fbebe7300b43c (patch) | |
tree | 594c779bda9c1b9e078ff12f710c6daf5db78e45 /pkg/gui/files_panel.go | |
parent | 695b092c4120d41c15ad969a6ea472e38379ebbd (diff) |
Only reset origin in main view when handling the selection of a new filev0.6
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r-- | pkg/gui/files_panel.go | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index a89138161..f66cabe4a 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -26,7 +26,7 @@ func (gui *Gui) getSelectedFile(g *gocui.Gui) (*commands.File, error) { return gui.State.Files[selectedLine], nil } -func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View) error { +func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View, alreadySelected bool) error { file, err := gui.getSelectedFile(g) if err != nil { if err != gui.Errors.ErrNoFiles { @@ -44,10 +44,18 @@ func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View) error { } content := gui.GitCommand.Diff(file, false) + if alreadySelected { + g.Update(func(*gocui.Gui) error { + return gui.setViewContent(gui.g, gui.getMainView(gui.g), content) + }) + return nil + } return gui.renderString(g, "main", content) } func (gui *Gui) refreshFiles(g *gocui.Gui) error { + selectedFile, _ := gui.getSelectedFile(gui.g) + filesView, err := g.View("files") if err != nil { return err @@ -64,7 +72,9 @@ func (gui *Gui) refreshFiles(g *gocui.Gui) error { fmt.Fprint(filesView, list) if filesView == g.CurrentView() { - return gui.handleFileSelect(g, filesView) + newSelectedFile, _ := gui.getSelectedFile(gui.g) + alreadySelected := newSelectedFile.Name == selectedFile.Name + return gui.handleFileSelect(g, filesView, alreadySelected) } return nil }) @@ -76,14 +86,14 @@ func (gui *Gui) handleFilesNextLine(g *gocui.Gui, v *gocui.View) error { panelState := gui.State.Panels.Files gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Files), false) - return gui.handleFileSelect(gui.g, v) + return gui.handleFileSelect(gui.g, v, false) } func (gui *Gui) handleFilesPrevLine(g *gocui.Gui, v *gocui.View) error { panelState := gui.State.Panels.Files gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Files), true) - return gui.handleFileSelect(gui.g, v) + return gui.handleFileSelect(gui.g, v, false) } // specific functions @@ -163,7 +173,7 @@ func (gui *Gui) handleFilePress(g *gocui.Gui, v *gocui.View) error { return err } - return gui.handleFileSelect(g, v) + return gui.handleFileSelect(g, v, true) } func (gui *Gui) allFilesStaged() bool { @@ -186,11 +196,7 @@ func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error { _ = gui.createErrorPanel(g, err.Error()) } - if err := gui.refreshFiles(g); err != nil { - return err - } - - return gui.handleFileSelect(g, v) + return gui.refreshFiles(g) } func (gui *Gui) handleAddPatch(g *gocui.Gui, v *gocui.View) error { |