diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2019-03-11 13:04:08 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2019-03-16 10:20:27 +1100 |
commit | 4f7f6a073ced1b31be6bbac119d1f0f4de229578 (patch) | |
tree | 492d67c4e51b4593c74d26e9a46c434f11c267f7 /pkg/gui/view_helpers.go | |
parent | 0e008cc15f8e7cbb6869151d48ae30403bf4dc70 (diff) |
allow user to discard old file changes for a given commit
Diffstat (limited to 'pkg/gui/view_helpers.go')
-rw-r--r-- | pkg/gui/view_helpers.go | 52 |
1 files changed, 29 insertions, 23 deletions
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index eb46a7f8b..372c5d43e 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -22,6 +22,11 @@ func (gui *Gui) refreshSidePanels(g *gocui.Gui) error { if err := gui.refreshCommits(g); err != nil { return err } + + if err := gui.refreshCommitFilesView(); err != nil { + return err + } + return gui.refreshStashEntries(g) } @@ -30,8 +35,13 @@ func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error { if v == nil || v.Name() == cyclableViews[len(cyclableViews)-1] { focusedViewName = cyclableViews[0] } else { + // if we're in the commitFiles view we'll act like we're in the commits view + viewName := v.Name() + if viewName == "commitFiles" { + viewName = "commits" + } for i := range cyclableViews { - if v.Name() == cyclableViews[i] { + if viewName == cyclableViews[i] { focusedViewName = cyclableViews[i+1] break } @@ -39,7 +49,7 @@ func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error { message := gui.Tr.TemplateLocalize( "IssntListOfViews", Teml{ - "name": v.Name(), + "name": viewName, }, ) gui.Log.Info(message) @@ -59,8 +69,13 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { if v == nil || v.Name() == cyclableViews[0] { focusedViewName = cyclableViews[len(cyclableViews)-1] } else { + // if we're in the commitFiles view we'll act like we're in the commits view + viewName := v.Name() + if viewName == "commitFiles" { + viewName = "commits" + } for i := range cyclableViews { - if v.Name() == cyclableViews[i] { + if viewName == cyclableViews[i] { focusedViewName = cyclableViews[i-1] // TODO: make this work properly break } @@ -68,7 +83,7 @@ func (gui *Gui) previousView(g *gocui.Gui, v *gocui.View) error { message := gui.Tr.TemplateLocalize( "IssntListOfViews", Teml{ - "name": v.Name(), + "name": viewName, }, ) gui.Log.Info(message) @@ -131,15 +146,10 @@ func (gui *Gui) returnFocus(g *gocui.Gui, v *gocui.View) error { // pass in oldView = nil if you don't want to be able to return to your old view // TODO: move some of this logic into our onFocusLost and onFocus hooks func (gui *Gui) switchFocus(g *gocui.Gui, oldView, newView *gocui.View) error { - // we assume we'll never want to return focus to a confirmation panel i.e. - // we should never stack confirmation panels - if oldView != nil && oldView.Name() != "confirmation" { - // second class panels should never have focus restored to them because - // once they lose focus they are effectively 'destroyed' - secondClassPanels := []string{"confirmation", "menu"} - if !utils.IncludesString(secondClassPanels, oldView.Name()) { - gui.State.PreviousView = oldView.Name() - } + // we assume we'll never want to return focus to a popup panel i.e. + // we should never stack popup panels + if oldView != nil && !gui.isPopupPanel(oldView.Name()) { + gui.State.PreviousView = oldView.Name() } gui.Log.Info("setting highlight to true for view" + newView.Name()) @@ -301,7 +311,7 @@ func (gui *Gui) currentViewName() string { func (gui *Gui) resizeCurrentPopupPanel(g *gocui.Gui) error { v := g.CurrentView() - if v.Name() == "commitMessage" || v.Name() == "credentials" || v.Name() == "confirmation" { + if gui.isPopupPanel(v.Name()) { return gui.resizePopupPanel(g, v) } return nil @@ -393,14 +403,10 @@ func (gui *Gui) handleFocusView(g *gocui.Gui, v *gocui.View) error { return err } +func (gui *Gui) isPopupPanel(viewName string) bool { + return viewName == "commitMessage" || viewName == "credentials" || viewName == "confirmation" || viewName == "menu" +} + func (gui *Gui) popupPanelFocused() bool { - viewNames := []string{"commitMessage", - "credentials", - "menu"} - for _, viewName := range viewNames { - if gui.currentViewName() == viewName { - return true - } - } - return false + return gui.isPopupPanel(gui.currentViewName()) } |