widget: clicking on the scrollbar indicator shouldn't jump

Signed-off-by: Dominik Honnef <dominik@honnef.co>
This commit is contained in:
Dominik Honnef
2022-06-30 01:21:03 +02:00
committed by Elias Naur
parent 8f990a6fdc
commit aea376fbaf
+4
View File
@@ -58,8 +58,12 @@ func (s *Scrollbar) Layout(gtx layout.Context, axis layout.Axis, viewportStart,
Y: int(event.Position.Y), Y: int(event.Position.Y),
}) })
normalizedPos := float32(pos.X) / trackHeight normalizedPos := float32(pos.X) / trackHeight
// Clicking on the indicator should not jump to that position on the track. The user might've just intended to
// drag and changed their mind.
if !(normalizedPos >= viewportStart && normalizedPos <= viewportEnd) {
s.delta += normalizedPos - viewportStart s.delta += normalizedPos - viewportStart
} }
}
// Offset to account for any drags. // Offset to account for any drags.
for _, event := range s.drag.Events(gtx.Metric, gtx, gesture.Axis(axis)) { for _, event := range s.drag.Events(gtx.Metric, gtx, gesture.Axis(axis)) {