summaryrefslogtreecommitdiffstats
path: root/pkg/gui/view_helpers.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2019-03-11 13:04:08 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-03-16 10:20:27 +1100
commit4f7f6a073ced1b31be6bbac119d1f0f4de229578 (patch)
tree492d67c4e51b4593c74d26e9a46c434f11c267f7 /pkg/gui/view_helpers.go
parent0e008cc15f8e7cbb6869151d48ae30403bf4dc70 (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.go52
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())
}