1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-04-27 12:32:37 +02:00

more mutex safety with staging panel

This commit is contained in:
Jesse Duffield 2020-10-07 17:54:45 +11:00
parent a9049b4a82
commit bb081ca764
4 changed files with 101 additions and 99 deletions

View File

@ -1275,7 +1275,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
ViewName: "main", ViewName: "main",
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY}, Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY},
Key: gui.getKey(config.Universal.Select), Key: gui.getKey(config.Universal.Select),
Handler: gui.handleToggleSelectionForPatch, Handler: gui.wrappedHandler(gui.handleToggleSelectionForPatch),
Description: gui.Tr.ToggleSelectionForPatch, Description: gui.Tr.ToggleSelectionForPatch,
}, },
{ {

View File

@ -341,7 +341,7 @@ func (gui *Gui) handleToggleSelectHunk() error {
} }
func (gui *Gui) escapeLineByLinePanel() { func (gui *Gui) escapeLineByLinePanel() {
gui.withLBLActiveCheck(func(*lineByLinePanelState) error { _ = gui.withLBLActiveCheck(func(*lineByLinePanelState) error {
gui.State.Panels.LineByLine = nil gui.State.Panels.LineByLine = nil
return nil return nil
}) })

View File

@ -1,7 +1,6 @@
package gui package gui
import ( import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/utils" "github.com/jesseduffield/lazygit/pkg/utils"
) )
@ -58,9 +57,8 @@ func (gui *Gui) refreshPatchBuildingPanel(selectedLineIdx int) error {
return nil return nil
} }
func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleToggleSelectionForPatch() error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
toggleFunc := gui.GitCommand.PatchManager.AddFileLineRange toggleFunc := gui.GitCommand.PatchManager.AddFileLineRange
filename := gui.getSelectedCommitFileName() filename := gui.getSelectedCommitFileName()
includedLineIndices, err := gui.GitCommand.PatchManager.GetFileIncLineIndices(filename) includedLineIndices, err := gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
@ -78,7 +76,10 @@ func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error
return nil return nil
} }
toggleFunc(commitFile.Name, state.FirstLineIdx, state.LastLineIdx) if err := toggleFunc(commitFile.Name, state.FirstLineIdx, state.LastLineIdx); err != nil {
// might actually want to return an error here
gui.Log.Error(err)
}
if err := gui.refreshCommitFilesView(); err != nil { if err := gui.refreshCommitFilesView(); err != nil {
return err return err
@ -89,6 +90,7 @@ func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error
} }
return nil return nil
})
} }
func (gui *Gui) handleEscapePatchBuildingPanel() error { func (gui *Gui) handleEscapePatchBuildingPanel() error {

View File

@ -69,18 +69,18 @@ func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx
} }
func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
state.SecondaryFocused = !state.SecondaryFocused state.SecondaryFocused = !state.SecondaryFocused
return gui.refreshStagingPanel(false, v.SelectedLineIdx()) return gui.refreshStagingPanel(false, v.SelectedLineIdx())
})
} }
func (gui *Gui) handleTogglePanel(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleTogglePanel(g *gocui.Gui, v *gocui.View) error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
state.SecondaryFocused = !state.SecondaryFocused state.SecondaryFocused = !state.SecondaryFocused
return gui.refreshStagingPanel(false, -1) return gui.refreshStagingPanel(false, -1)
})
} }
func (gui *Gui) handleStagingEscape() error { func (gui *Gui) handleStagingEscape() error {
@ -90,14 +90,13 @@ func (gui *Gui) handleStagingEscape() error {
} }
func (gui *Gui) handleToggleStagedSelection(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleToggleStagedSelection(g *gocui.Gui, v *gocui.View) error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
return gui.applySelection(state.SecondaryFocused) return gui.applySelection(state.SecondaryFocused)
})
} }
func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
if state.SecondaryFocused { if state.SecondaryFocused {
// for backwards compatibility // for backwards compatibility
return gui.applySelection(true) return gui.applySelection(true)
@ -122,11 +121,11 @@ func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
} else { } else {
return gui.applySelection(true) return gui.applySelection(true)
} }
})
} }
func (gui *Gui) applySelection(reverse bool) error { func (gui *Gui) applySelection(reverse bool) error {
state := gui.State.Panels.LineByLine return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
file := gui.getSelectedFile() file := gui.getSelectedFile()
if file == nil { if file == nil {
return nil return nil
@ -160,4 +159,5 @@ func (gui *Gui) applySelection(reverse bool) error {
return err return err
} }
return nil return nil
})
} }