mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-06 23:46:13 +02:00
Select line that is in the middle of the screen
This commit is contained in:
parent
e11e2214aa
commit
f827945cab
@ -86,6 +86,14 @@ func (self *MainViewController) Context() types.Context {
|
|||||||
return self.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 {
|
func (self *MainViewController) togglePanel() error {
|
||||||
if self.otherContext.GetView().Visible {
|
if self.otherContext.GetView().Visible {
|
||||||
self.c.Context().Push(self.otherContext, types.OnFocusOpts{})
|
self.c.Context().Push(self.otherContext, types.OnFocusOpts{})
|
||||||
|
@ -3,6 +3,7 @@ package controllers
|
|||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||||
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
// This controller is for all contexts that can focus their main view.
|
// 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 {
|
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 {
|
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 {
|
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 {
|
if context, ok := mainViewContext.(types.ISearchableContext); ok {
|
||||||
context.ClearSearchString()
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user