1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-31 14:24:25 +03:00

Extract a function HandleGenericClick

This commit is contained in:
Stefan Haller
2024-03-27 18:37:30 +01:00
parent c59e6b6451
commit 6396d1ce03
4 changed files with 25 additions and 12 deletions

View File

@ -79,18 +79,7 @@ func (self *StatusController) GetMouseKeybindings(opts types.KeybindingsOpts) []
} }
func (self *StatusController) onClickMain(opts gocui.ViewMouseBindingOpts) error { func (self *StatusController) onClickMain(opts gocui.ViewMouseBindingOpts) error {
view := self.c.Views().Main return self.c.HandleGenericClick(self.c.Views().Main)
cx, cy := view.Cursor()
url, err := view.Word(cx, cy)
if err == nil && strings.HasPrefix(url, "https://") {
// Ignore errors (opening the link via the OS can fail if the
// `os.openLink` config key references a command that doesn't exist, or
// that errors when called.)
_ = self.c.OS().OpenLink(url)
}
return nil
} }
func (self *StatusController) GetOnRenderToMain() func() error { func (self *StatusController) GetOnRenderToMain() func() error {

View File

@ -33,6 +33,10 @@ func (self *guiCommon) PostRefreshUpdate(context types.Context) error {
return self.gui.postRefreshUpdate(context) return self.gui.postRefreshUpdate(context)
} }
func (self *guiCommon) HandleGenericClick(view *gocui.View) error {
return self.gui.handleGenericClick(view)
}
func (self *guiCommon) RunSubprocessAndRefresh(cmdObj oscommands.ICmdObj) error { func (self *guiCommon) RunSubprocessAndRefresh(cmdObj oscommands.ICmdObj) error {
return self.gui.runSubprocessWithSuspenseAndRefresh(cmdObj) return self.gui.runSubprocessWithSuspenseAndRefresh(cmdObj)
} }

View File

@ -35,6 +35,10 @@ type IGuiCommon interface {
// case would be overkill, although refresh will internally call 'PostRefreshUpdate' // case would be overkill, although refresh will internally call 'PostRefreshUpdate'
PostRefreshUpdate(Context) error PostRefreshUpdate(Context) error
// a generic click handler that can be used for any view; it handles opening
// URLs in the browser when the user clicks on one
HandleGenericClick(view *gocui.View) error
// renders string to a view without resetting its origin // renders string to a view without resetting its origin
SetViewContent(view *gocui.View, content string) SetViewContent(view *gocui.View, content string)
// resets cursor and origin of view. Often used before calling SetViewContent // resets cursor and origin of view. Often used before calling SetViewContent

View File

@ -1,6 +1,7 @@
package gui package gui
import ( import (
"strings"
"time" "time"
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
@ -148,3 +149,18 @@ func (gui *Gui) postRefreshUpdate(c types.Context) error {
return nil return nil
} }
// handleGenericClick is a generic click handler that can be used for any view.
// It handles opening URLs in the browser when the user clicks on one.
func (gui *Gui) handleGenericClick(view *gocui.View) error {
cx, cy := view.Cursor()
url, err := view.Word(cx, cy)
if err == nil && strings.HasPrefix(url, "https://") {
// Ignore errors (opening the link via the OS can fail if the
// `os.openLink` config key references a command that doesn't exist, or
// that errors when called.)
_ = gui.c.OS().OpenLink(url)
}
return nil
}