summaryrefslogtreecommitdiffstats
path: root/pkg/gui/staging_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2019-11-10 16:20:35 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-11-10 22:32:13 +1100
commite85310c0a92a89167530241bdc3fc5f66a48706d (patch)
treef7989a8b002d2d5aa847460cae112aac9f64b669 /pkg/gui/staging_panel.go
parentcd17b46b55e312b3ba4e3ab9d3d96a8eeb20fded (diff)
add mouse support
Diffstat (limited to 'pkg/gui/staging_panel.go')
-rw-r--r--pkg/gui/staging_panel.go40
1 files changed, 34 insertions, 6 deletions
diff --git a/pkg/gui/staging_panel.go b/pkg/gui/staging_panel.go
index 35692757c..02fab93b1 100644
--- a/pkg/gui/staging_panel.go
+++ b/pkg/gui/staging_panel.go
@@ -7,7 +7,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands"
)
-func (gui *Gui) refreshStagingPanel() error {
+func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx int) error {
gui.State.SplitMainPanel = true
state := gui.State.Panels.LineByLine
@@ -25,14 +25,26 @@ func (gui *Gui) refreshStagingPanel() error {
}
secondaryFocused := false
- if state != nil {
- secondaryFocused = state.SecondaryFocused
+ if forceSecondaryFocused {
+ secondaryFocused = true
+ } else {
+ if state != nil {
+ secondaryFocused = state.SecondaryFocused
+ }
}
if (secondaryFocused && !file.HasStagedChanges) || (!secondaryFocused && !file.HasUnstagedChanges) {
secondaryFocused = !secondaryFocused
}
+ if secondaryFocused {
+ gui.getMainView().Title = gui.Tr.SLocalize("StagedChanges")
+ gui.getSecondaryView().Title = gui.Tr.SLocalize("UnstagedChanges")
+ } else {
+ gui.getMainView().Title = gui.Tr.SLocalize("UnstagedChanges")
+ gui.getSecondaryView().Title = gui.Tr.SLocalize("StagedChanges")
+ }
+
// note for custom diffs, we'll need to send a flag here saying not to use the custom diff
diff := gui.GitCommand.Diff(file, true, secondaryFocused)
secondaryDiff := gui.GitCommand.Diff(file, true, !secondaryFocused)
@@ -47,7 +59,7 @@ func (gui *Gui) refreshStagingPanel() error {
diff, secondaryDiff = secondaryDiff, diff
}
- empty, err := gui.refreshLineByLinePanel(diff, secondaryDiff, secondaryFocused)
+ empty, err := gui.refreshLineByLinePanel(diff, secondaryDiff, secondaryFocused, selectedLineIdx)
if err != nil {
return err
}
@@ -59,11 +71,19 @@ func (gui *Gui) refreshStagingPanel() error {
return nil
}
+func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error {
+ state := gui.State.Panels.LineByLine
+
+ state.SecondaryFocused = !state.SecondaryFocused
+
+ return gui.refreshStagingPanel(false, v.SelectedLineIdx())
+}
+
func (gui *Gui) handleTogglePanel(g *gocui.Gui, v *gocui.View) error {
state := gui.State.Panels.LineByLine
state.SecondaryFocused = !state.SecondaryFocused
- return gui.refreshStagingPanel()
+ return gui.refreshStagingPanel(false, -1)
}
func (gui *Gui) handleStagingEscape(g *gocui.Gui, v *gocui.View) error {
@@ -116,8 +136,16 @@ func (gui *Gui) applySelection(reverse bool) error {
if err := gui.refreshFiles(); err != nil {
return err
}
- if err := gui.refreshStagingPanel(); err != nil {
+ if err := gui.refreshStagingPanel(false, -1); err != nil {
return err
}
return nil
}
+
+func (gui *Gui) handleMouseDownSecondaryWhileStaging(g *gocui.Gui, v *gocui.View) error {
+ state := gui.State.Panels.LineByLine
+
+ state.SecondaryFocused = !state.SecondaryFocused
+
+ return gui.refreshStagingPanel(false, -1)
+}