1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-05-27 23:08:02 +02:00

Select line that is in the middle of the screen

This commit is contained in:
Stefan Haller 2025-03-25 15:01:16 +01:00
parent e11e2214aa
commit f827945cab
2 changed files with 22 additions and 5 deletions

View File

@ -86,6 +86,14 @@ func (self *MainViewController) Context() types.Context {
return self.context
}
func (self *MainViewController) GetOnFocus() func(types.OnFocusOpts) {
return func(opts types.OnFocusOpts) {
if opts.ClickedWindowName != "" {
self.context.GetView().FocusPoint(0, opts.ClickedViewLineIdx)
}
}
}
func (self *MainViewController) togglePanel() error {
if self.otherContext.GetView().Visible {
self.c.Context().Push(self.otherContext, types.OnFocusOpts{})

View File

@ -3,6 +3,7 @@ package controllers
import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
)
// This controller is for all contexts that can focus their main view.
@ -60,21 +61,29 @@ func (self *SwitchToFocusedMainViewController) Context() types.Context {
}
func (self *SwitchToFocusedMainViewController) onClickMain(opts gocui.ViewMouseBindingOpts) error {
return self.focusMainView(self.c.Contexts().Normal)
return self.focusMainView(self.c.Contexts().Normal, opts.Y)
}
func (self *SwitchToFocusedMainViewController) onClickSecondary(opts gocui.ViewMouseBindingOpts) error {
return self.focusMainView(self.c.Contexts().NormalSecondary)
return self.focusMainView(self.c.Contexts().NormalSecondary, opts.Y)
}
func (self *SwitchToFocusedMainViewController) handleFocusMainView() error {
return self.focusMainView(self.c.Contexts().Normal)
return self.focusMainView(self.c.Contexts().Normal, -1)
}
func (self *SwitchToFocusedMainViewController) focusMainView(mainViewContext types.Context) error {
func (self *SwitchToFocusedMainViewController) focusMainView(mainViewContext types.Context, clickedViewLineIdx int) error {
if context, ok := mainViewContext.(types.ISearchableContext); ok {
context.ClearSearchString()
}
self.c.Context().Push(mainViewContext, types.OnFocusOpts{})
onFocusOpts := types.OnFocusOpts{ClickedWindowName: mainViewContext.GetWindowName()}
if clickedViewLineIdx >= 0 {
onFocusOpts.ClickedViewLineIdx = clickedViewLineIdx
} else {
mainView := mainViewContext.GetView()
lineIdx := mainView.OriginY() + mainView.Height()/2
onFocusOpts.ClickedViewLineIdx = lo.Clamp(lineIdx, 0, mainView.LinesHeight()-1)
}
self.c.Context().Push(mainViewContext, onFocusOpts)
return nil
}