mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-03-03 15:02:52 +02:00
If a given menu item has an associated keybinding of 'enter', hitting enter won't actually execute that item unless your cursor is on it. This creates confusion, and so we're going to use a strikethrough style to communicate that the keybinding is reserved for something else.
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/gui/context"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
type MenuController struct {
|
|
baseController
|
|
c *ControllerCommon
|
|
}
|
|
|
|
var _ types.IController = &MenuController{}
|
|
|
|
func NewMenuController(
|
|
common *ControllerCommon,
|
|
) *MenuController {
|
|
return &MenuController{
|
|
baseController: baseController{},
|
|
c: common,
|
|
}
|
|
}
|
|
|
|
// NOTE: if you add a new keybinding here, you'll also need to add it to
|
|
// `reservedKeys` in `pkg/gui/context/menu_context.go`
|
|
func (self *MenuController) GetKeybindings(opts types.KeybindingsOpts) []*types.Binding {
|
|
bindings := []*types.Binding{
|
|
{
|
|
Key: opts.GetKey(opts.Config.Universal.Select),
|
|
Handler: self.press,
|
|
},
|
|
{
|
|
Key: opts.GetKey(opts.Config.Universal.Confirm),
|
|
Handler: self.press,
|
|
Description: self.c.Tr.LcExecute,
|
|
Display: true,
|
|
},
|
|
{
|
|
Key: opts.GetKey(opts.Config.Universal.Return),
|
|
Handler: self.close,
|
|
Description: self.c.Tr.LcClose,
|
|
Display: true,
|
|
},
|
|
}
|
|
|
|
return bindings
|
|
}
|
|
|
|
func (self *MenuController) GetOnClick() func() error {
|
|
return self.press
|
|
}
|
|
|
|
func (self *MenuController) GetOnFocus() func(types.OnFocusOpts) error {
|
|
return func(types.OnFocusOpts) error {
|
|
selectedMenuItem := self.context().GetSelected()
|
|
self.c.Views().Tooltip.SetContent(selectedMenuItem.Tooltip)
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func (self *MenuController) press() error {
|
|
return self.context().OnMenuPress(self.context().GetSelected())
|
|
}
|
|
|
|
func (self *MenuController) close() error {
|
|
return self.c.PopContext()
|
|
}
|
|
|
|
func (self *MenuController) Context() types.Context {
|
|
return self.context()
|
|
}
|
|
|
|
func (self *MenuController) context() *context.MenuContext {
|
|
return self.c.Contexts().Menu
|
|
}
|