MCPcopy
hub / github.com/lxn/walk / updateScrollBars

Method updateScrollBars

scrollview.go:227–260  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

225}
226
227func (sv *ScrollView) updateScrollBars() {
228 size := sv.SizePixels()
229 compositeSize := sv.composite.SizePixels()
230
231 var si win.SCROLLINFO
232 si.CbSize = uint32(unsafe.Sizeof(si))
233 si.FMask = win.SIF_PAGE | win.SIF_RANGE
234
235 newCompositeBounds := Rectangle{Width: compositeSize.Width, Height: compositeSize.Height}
236
237 if size != compositeSize {
238 dpi := uint32(sv.DPI())
239
240 vsbw := int(win.GetSystemMetricsForDpi(win.SM_CXVSCROLL, dpi))
241 hsbh := int(win.GetSystemMetricsForDpi(win.SM_CYHSCROLL, dpi))
242
243 if size.Width < compositeSize.Width && size.Height < compositeSize.Height {
244 size.Width -= vsbw
245 size.Height -= hsbh
246 }
247 }
248
249 si.NMax = int32(compositeSize.Width - 1)
250 si.NPage = uint32(size.Width)
251 win.SetScrollInfo(sv.hWnd, win.SB_HORZ, &si, false)
252 newCompositeBounds.X = sv.scroll(win.SB_HORZ, win.SB_THUMBPOSITION)
253
254 si.NMax = int32(compositeSize.Height - 1)
255 si.NPage = uint32(size.Height)
256 win.SetScrollInfo(sv.hWnd, win.SB_VERT, &si, false)
257 newCompositeBounds.Y = sv.scroll(win.SB_VERT, win.SB_THUMBPOSITION)
258
259 sv.composite.SetBoundsPixels(newCompositeBounds)
260}
261
262// scroll scrolls and returns new position in native pixels.
263func (sv *ScrollView) scroll(sb int32, cmd uint16) int {

Callers 2

NewScrollViewFunction · 0.95
WndProcMethod · 0.95

Calls 4

scrollMethod · 0.95
SizePixelsMethod · 0.65
DPIMethod · 0.65
SetBoundsPixelsMethod · 0.65

Tested by

no test coverage detected