func (l *ScrollLayout) SetScrollOffset(scrollOffset math.Point) bool { var cs math.Size if l.child != nil { cs = l.child.Control.Size() } s := l.innerSize scrollOffset = scrollOffset.Min(cs.Sub(s).Point()).Max(math.Point{}) l.scrollBarX.Control.SetVisible(l.canScrollX && cs.W > s.W) l.scrollBarY.Control.SetVisible(l.canScrollY && cs.H > s.H) l.scrollBarX.Control.(gxui.ScrollBar).SetScrollPosition(l.scrollOffset.X, l.scrollOffset.X+s.W) l.scrollBarY.Control.(gxui.ScrollBar).SetScrollPosition(l.scrollOffset.Y, l.scrollOffset.Y+s.H) if l.scrollOffset != scrollOffset { l.scrollOffset = scrollOffset l.Relayout() return true } return false }