Full implemented scrollbars events.

This commit is contained in:
and3md 2017-06-25 17:10:52 +02:00
parent e31bd2cc2f
commit 3dc4d6679a
1 changed files with 26 additions and 0 deletions

View File

@ -376,6 +376,19 @@ class Window : CustomEventTarget {
_hScrollBar.scrollEvent = delegate bool (AbstractSlider source, ScrollEvent event) {
if (event.action == ScrollAction.SliderMoved || event.action == ScrollAction.SliderReleased)
requestLayout();
else if (event.action == ScrollAction.PageUp) {
source.position = max(0, source.position - _windowRect.right * 3 / 4);
requestLayout();
} else if (event.action == ScrollAction.PageDown) {
source.position = min(source.maxValue - _windowRect.right, source.position + _windowRect.right *3 / 4);
requestLayout();
} else if (event.action == ScrollAction.LineUp) {
source.position = max(0, source.position - _windowRect.right / 10);
requestLayout();
} else if (event.action == ScrollAction.LineDown) {
source.position = min(source.maxValue - _windowRect.right, source.position + _windowRect.right / 10);
requestLayout();
}
return true;
};
}
@ -403,6 +416,19 @@ class Window : CustomEventTarget {
_vScrollBar.scrollEvent = delegate bool (AbstractSlider source, ScrollEvent event) {
if (event.action == ScrollAction.SliderMoved || event.action == ScrollAction.SliderReleased)
requestLayout();
else if (event.action == ScrollAction.PageUp) {
source.position = max(0, source.position - _windowRect.bottom * 3 / 4);
requestLayout();
} else if (event.action == ScrollAction.PageDown) {
source.position = min(source.maxValue - _windowRect.bottom, source.position + _windowRect.bottom *3 / 4);
requestLayout();
} else if (event.action == ScrollAction.LineUp) {
source.position = max(0, source.position - _windowRect.bottom / 10);
requestLayout();
} else if (event.action == ScrollAction.LineDown) {
source.position = min(source.maxValue - _windowRect.bottom, source.position + _windowRect.bottom / 10);
requestLayout();
}
return true;
};
}