1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-01-26 05:37:18 +02:00

Make range selections created with the mouse non-sticky (#3234)

- **PR Description**

I prefer this because I almost never use sticky range selections, but
I'm not sure everybody agrees. Also, this fixes the issue that just
clicking a line in a diff (without dragging) already creates a range
selection. It still does, technically, but it's no longer a problem
because a non-sticky one-line range selection behaves the same as a
non-range selection.

See #3233.
This commit is contained in:
Stefan Haller 2024-01-24 08:26:33 +01:00 committed by GitHub
commit 74d937881e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 5 deletions

View File

@ -274,7 +274,7 @@ func (self *PatchExplorerController) HandleMouseDown() error {
}
func (self *PatchExplorerController) HandleMouseDrag() error {
self.context.GetState().SelectLine(self.context.GetViewTrait().SelectedLineIdx())
self.context.GetState().DragSelectLine(self.context.GetViewTrait().SelectedLineIdx())
return nil
}

View File

@ -49,12 +49,10 @@ func NewState(diff string, selectedLineIdx int, oldState *State, log *logrus.Ent
}
selectMode := LINE
rangeIsSticky := false
// if we have clicked from the outside to focus the main view we'll pass in a non-negative line index so that we can instantly select that line
if selectedLineIdx >= 0 {
selectMode = RANGE
rangeStartLineIdx = selectedLineIdx
rangeIsSticky = true
} else if oldState != nil {
// if we previously had a selectMode of RANGE, we want that to now be line again
if oldState.selectMode == HUNK {
@ -70,7 +68,7 @@ func NewState(diff string, selectedLineIdx int, oldState *State, log *logrus.Ent
selectedLineIdx: selectedLineIdx,
selectMode: selectMode,
rangeStartLineIdx: rangeStartLineIdx,
rangeIsSticky: rangeIsSticky,
rangeIsSticky: false,
diff: diff,
}
}
@ -150,7 +148,12 @@ func (s *State) SelectNewLineForRange(newSelectedLineIdx int) {
s.rangeStartLineIdx = newSelectedLineIdx
s.selectMode = RANGE
s.rangeIsSticky = true
s.selectLineWithoutRangeCheck(newSelectedLineIdx)
}
func (s *State) DragSelectLine(newSelectedLineIdx int) {
s.selectMode = RANGE
s.selectLineWithoutRangeCheck(newSelectedLineIdx)
}