From e94e89d4d7ac228a3a7fbe02c9ed353ec57b7c97 Mon Sep 17 00:00:00 2001 From: and3md Date: Sat, 19 Aug 2017 21:10:34 +0200 Subject: [PATCH] ListWidget - scrollbar.layout() after updateItemPositions() is needed by ComboBox. --- src/dlangui/widgets/lists.d | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/dlangui/widgets/lists.d b/src/dlangui/widgets/lists.d index 540b5f4b..5fcb083a 100644 --- a/src/dlangui/widgets/lists.d +++ b/src/dlangui/widgets/lists.d @@ -1171,15 +1171,10 @@ class ListWidget : WidgetGroup, OnScrollHandler, OnAdapterChangeHandler { if (_lastMeasureWidth != rc.width || _lastMeasureHeight != rc.height) measure(parentrc.width, parentrc.height); + // hide scrollbar or update rc for scrollbar + Rect sbrect = rc; // layout scrollbar if (_needScrollbar) { - _scrollbar.visibility = Visibility.Visible; - Rect sbrect = rc; - if (_orientation == Orientation.Vertical) - sbrect.left = sbrect.right - _sbsz.x; - else - sbrect.top = sbrect.bottom - _sbsz.y; - _scrollbar.layout(sbrect); rc.right -= _sbsz.x; rc.bottom -= _sbsz.y; } else { @@ -1191,6 +1186,16 @@ class ListWidget : WidgetGroup, OnScrollHandler, OnAdapterChangeHandler { // calc item rectangles updateItemPositions(); + // layout scrollbar - must be under updateItemPositions() + if (_needScrollbar) { + _scrollbar.visibility = Visibility.Visible; + if (_orientation == Orientation.Vertical) + sbrect.left = sbrect.right - _sbsz.x; + else + sbrect.top = sbrect.bottom - _sbsz.y; + _scrollbar.layout(sbrect); + } + if (_makeSelectionVisibleOnNextLayout) { makeSelectionVisible(); _makeSelectionVisibleOnNextLayout = false;