diff --git a/tracker/gioui/split.go b/tracker/gioui/split.go index 1211ab0..d7a526f 100644 --- a/tracker/gioui/split.go +++ b/tracker/gioui/split.go @@ -68,6 +68,7 @@ func (s *Split) Layout(gtx layout.Context, first, second layout.Widget) layout.D } else { s.dragCoord = e.Position.Y } + s.drag = true case pointer.Drag: if s.dragID != e.PointerID { @@ -94,6 +95,27 @@ func (s *Split) Layout(gtx layout.Context, first, second layout.Widget) layout.D } } + low := -1 + float32(bar)/float32(coord)*2 + const snapMargin = 0.1 + + if s.Ratio < low { + s.Ratio = low + } + + if s.Ratio > 1 { + s.Ratio = 1 + } + + if s.Ratio < low+snapMargin { + firstSize = 0 + secondOffset = bar + secondSize = coord - bar + } else if s.Ratio > 1-snapMargin { + firstSize = coord - bar + secondOffset = coord + secondSize = 0 + } + // register for input var barRect image.Rectangle if s.Axis == layout.Horizontal {