Skip to content

Commit

Permalink
Implemented dragging on border in mouse example
Browse files Browse the repository at this point in the history
  • Loading branch information
Kavantix committed Dec 27, 2021
1 parent 9c194a9 commit c37c93d
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions _examples/mouse.go
Expand Up @@ -33,7 +33,7 @@ func main() {
}
}

var initialMouseX, initialMouseY, xOffset int
var initialMouseX, initialMouseY, xOffset, yOffset int
var globalMouseDown, msgMouseDown, movingMsg bool

func layout(g *gocui.Gui) error {
Expand Down Expand Up @@ -136,20 +136,27 @@ func moveMsg(g *gocui.Gui) {
if !movingMsg && (mx != initialMouseX || my != initialMouseY) {
movingMsg = true
}
g.SetView("msg", mx-xOffset, my-1, mx-xOffset+20, my+1, 0)
g.SetView("msg", mx-xOffset, my-yOffset, mx-xOffset+20, my-yOffset+2, 0)
}

func msgDown(g *gocui.Gui, v *gocui.View) error {
initialMouseX, initialMouseY = g.MousePosition()
xOffset, _ = v.Cursor()
xOffset += 1
msgMouseDown = true
if vx, vy, _, _, err := g.ViewPosition("msg"); err == nil {
xOffset = initialMouseX - vx
yOffset = initialMouseY - vy
msgMouseDown = true
}
return nil
}

func globalDown(g *gocui.Gui, v *gocui.View) error {
globalMouseDown = true
mx, my := g.MousePosition()
if vx0, vy0, vx1, vy1, err := g.ViewPosition("msg"); err == nil {
if mx >= vx0 && mx <= vx1 && my >= vy0 && my <= vy1 {
return msgDown(g, v)
}
}
globalMouseDown = true
maxX, _ := g.Size()
msg := fmt.Sprintf("Mouse down at: %d,%d", mx, my)
x := mx - len(msg)/2
Expand Down

0 comments on commit c37c93d

Please sign in to comment.