Complete fix dlanguide 236 scrollbar bug.

This commit is contained in:
and3md 2017-08-19 20:53:42 +02:00
parent 6ab38d89e5
commit d394cfd8ac
2 changed files with 12 additions and 14 deletions

View File

@ -1171,9 +1171,15 @@ 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 {
@ -1185,16 +1191,6 @@ 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;

View File

@ -418,8 +418,10 @@ class ScrollBar : AbstractSlider, OnClickHandler {
_btnBack.setState(State.Enabled);
_btnForward.setState(State.Enabled);
_indicator.visibility = Visibility.Visible;
_pageUp.visibility = Visibility.Visible;
_pageDown.visibility = Visibility.Visible;
if (_position > _minValue)
_pageUp.visibility = Visibility.Visible;
if (_position < _maxValue)
_pageDown.visibility = Visibility.Visible;
} else {
_btnBack.resetState(State.Enabled);
_btnForward.resetState(State.Enabled);