From bf786b101040309542328bd5b86b7729e24df016 Mon Sep 17 00:00:00 2001 From: olebeck <31539311+olebeck@users.noreply.github.com> Date: Tue, 4 Apr 2023 03:27:55 +0200 Subject: [PATCH] add grab cursor --- ui/gui/pages/worlds/map.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ui/gui/pages/worlds/map.go b/ui/gui/pages/worlds/map.go index b24bb62..527275d 100644 --- a/ui/gui/pages/worlds/map.go +++ b/ui/gui/pages/worlds/map.go @@ -23,6 +23,7 @@ type Map struct { center f32.Point transform f32.Affine2D grabbed bool + cursor image.Point MapImage *image.RGBA BoundsMin protocol.ChunkPos @@ -40,7 +41,7 @@ func (m *Map) HandlePointerEvent(e pointer.Event) { case pointer.Release: m.grabbed = false case pointer.Scroll: - scaleFactor := float32(math.Pow(1.01, float64(e.Scroll.Y))) + scaleFactor := -float32(math.Pow(1.01, float64(e.Scroll.Y))) m.transform = m.transform.Scale(e.Position.Sub(m.center), f32.Pt(scaleFactor, scaleFactor)) m.scaleFactor *= scaleFactor } @@ -66,6 +67,13 @@ func (m *Map) Layout(gtx layout.Context) layout.Dimensions { op.Affine(m.transform.Offset(m.center.Sub(size.Div(2)))).Add(gtx.Ops) m.imageOp.Add(gtx.Ops) paint.PaintOp{}.Add(gtx.Ops) + if m.cursor.In(image.Rectangle(gtx.Constraints)) { + if m.grabbed { + pointer.CursorGrabbing.Add(gtx.Ops) + } else { + pointer.CursorGrab.Add(gtx.Ops) + } + } } size := gtx.Constraints.Max