allow clicking on frame edges

This commit is contained in:
Jesse Duffield 2019-06-29 10:40:24 +10:00
parent c3ec4b15ad
commit 7025468f43
4 changed files with 12 additions and 4 deletions

4
Gopkg.lock generated
View file

@ -131,11 +131,11 @@
[[projects]]
branch = "master"
digest = "1:29be572efa73e123cace81233a9140c038c6fb70d4240502464796d6e4eff668"
digest = "1:44d8be68f77843be5c779fcaf4793693a40ec96b83b5080a18bfd80123a4b2b2"
name = "github.com/jesseduffield/gocui"
packages = ["."]
pruneopts = "NUT"
revision = "e030e03faca4edb742120c0b739cb2114a4b3358"
revision = "d99ac1a5a23de099e34cb8723e51114bb2b44d23"
[[projects]]
branch = "master"

View file

@ -394,6 +394,10 @@ func (gui *Gui) handleClick(v *gocui.View, itemCount int, selectedLine *int, han
newSelectedLine := cy - oy
if newSelectedLine < 0 {
newSelectedLine = 0
}
if newSelectedLine > itemCount-1 {
newSelectedLine = itemCount - 1
}

View file

@ -233,7 +233,11 @@ func (g *Gui) ViewByPosition(x, y int) (*View, error) {
// traverse views in reverse order checking top views first
for i := len(g.views); i > 0; i-- {
v := g.views[i-1]
if x > v.x0 && x < v.x1 && y > v.y0 && y < v.y1 {
frameOffset := 0
if v.Frame {
frameOffset = 1
}
if x > v.x0-frameOffset && x < v.x1+frameOffset && y > v.y0-frameOffset && y < v.y1+frameOffset {
return v, nil
}
}

View file

@ -196,7 +196,7 @@ func (v *View) setRune(x, y int, ch rune, fgColor, bgColor Attribute) error {
func (v *View) SetCursor(x, y int) error {
maxX, maxY := v.Size()
if x < 0 || x >= maxX || y < 0 || y >= maxY {
return errors.New("invalid point")
return nil
}
v.cx = x
v.cy = y