| Index: samples-dev/swarm/swarm_ui_lib/touch/Scrollbar.dart
|
| diff --git a/samples-dev/swarm/swarm_ui_lib/touch/Scrollbar.dart b/samples-dev/swarm/swarm_ui_lib/touch/Scrollbar.dart
|
| index 1ac758cfad633e064b434f3592941defd1069dc5..3f458392a761450fcd3f98c7eb3eec0b98f9548f 100644
|
| --- a/samples-dev/swarm/swarm_ui_lib/touch/Scrollbar.dart
|
| +++ b/samples-dev/swarm/swarm_ui_lib/touch/Scrollbar.dart
|
| @@ -57,22 +57,24 @@ class Scrollbar implements ScrollListener {
|
| bool _displayOnHover;
|
| bool _hovering = false;
|
|
|
| - Scrollbar(Scroller scroller, [displayOnHover = true]) :
|
| - _displayOnHover = displayOnHover,
|
| - _scroller = scroller,
|
| - _frame = scroller.getFrame(),
|
| - _cachedSize = new Map<String, num>() {
|
| - _boundHideFn = () { _showScrollbars(false); };
|
| + Scrollbar(Scroller scroller, [displayOnHover = true])
|
| + : _displayOnHover = displayOnHover,
|
| + _scroller = scroller,
|
| + _frame = scroller.getFrame(),
|
| + _cachedSize = new Map<String, num>() {
|
| + _boundHideFn = () {
|
| + _showScrollbars(false);
|
| + };
|
| }
|
|
|
| bool get _scrollBarDragInProgress => _scrollBarDragInProgressValue;
|
|
|
| void set _scrollBarDragInProgress(bool value) {
|
| _scrollBarDragInProgressValue = value;
|
| - _toggleClass(_verticalElement, DRAG_CLASS_NAME,
|
| - value && _currentScrollVertical);
|
| - _toggleClass(_horizontalElement, DRAG_CLASS_NAME,
|
| - value && !_currentScrollVertical);
|
| + _toggleClass(
|
| + _verticalElement, DRAG_CLASS_NAME, value && _currentScrollVertical);
|
| + _toggleClass(
|
| + _horizontalElement, DRAG_CLASS_NAME, value && !_currentScrollVertical);
|
| }
|
|
|
| // TODO(jacobr): move this helper method into the DOM.
|
| @@ -121,44 +123,42 @@ class Scrollbar implements ScrollListener {
|
| // instead attach a single global event listener and let data in the
|
| // DOM drive.
|
| _frame.onClick.listen((Event e) {
|
| - // Always focus on click as one of our children isn't all focused.
|
| - if (!_frame.contains(document.activeElement)) {
|
| - scrollerEl.focus();
|
| - }
|
| - });
|
| + // Always focus on click as one of our children isn't all focused.
|
| + if (!_frame.contains(document.activeElement)) {
|
| + scrollerEl.focus();
|
| + }
|
| + });
|
| _frame.onMouseOver.listen((Event e) {
|
| - final activeElement = document.activeElement;
|
| - // TODO(jacobr): don't steal focus from a child element or a truly
|
| - // focusable element. Only support stealing focus ffrom another
|
| - // element that was given fake focus.
|
| - if (activeElement is BodyElement ||
|
| - (!_frame.contains(activeElement) &&
|
| - activeElement is DivElement)) {
|
| - scrollerEl.focus();
|
| - }
|
| - if (_hovering == false) {
|
| - _hovering = true;
|
| - _cancelTimeout();
|
| - _showScrollbars(true);
|
| - refresh();
|
| - }
|
| - });
|
| + final activeElement = document.activeElement;
|
| + // TODO(jacobr): don't steal focus from a child element or a truly
|
| + // focusable element. Only support stealing focus ffrom another
|
| + // element that was given fake focus.
|
| + if (activeElement is BodyElement ||
|
| + (!_frame.contains(activeElement) && activeElement is DivElement)) {
|
| + scrollerEl.focus();
|
| + }
|
| + if (_hovering == false) {
|
| + _hovering = true;
|
| + _cancelTimeout();
|
| + _showScrollbars(true);
|
| + refresh();
|
| + }
|
| + });
|
| _frame.onMouseOut.listen((e) {
|
| - _hovering = false;
|
| - // Start hiding immediately if we aren't
|
| - // scrolling or already in the process of
|
| - // hidng the scrollbar
|
| - if (!_scrollInProgress && _timer == null) {
|
| - _boundHideFn();
|
| - }
|
| - });
|
| + _hovering = false;
|
| + // Start hiding immediately if we aren't
|
| + // scrolling or already in the process of
|
| + // hidng the scrollbar
|
| + if (!_scrollInProgress && _timer == null) {
|
| + _boundHideFn();
|
| + }
|
| + });
|
| }
|
| }
|
|
|
| void _onStart(/*MouseEvent | Touch*/ e) {
|
| Element elementOver = e.target;
|
| - if (elementOver == _verticalElement ||
|
| - elementOver == _horizontalElement) {
|
| + if (elementOver == _verticalElement || elementOver == _horizontalElement) {
|
| _currentScrollVertical = elementOver == _verticalElement;
|
| if (_currentScrollVertical) {
|
| _currentScrollStartMouse = e.page.y;
|
| @@ -180,15 +180,14 @@ class Scrollbar implements ScrollListener {
|
| _refreshScrollRatioHelper(
|
| _scroller._scrollSize.height, contentSize.height);
|
| } else {
|
| - _refreshScrollRatioHelper(_scroller._scrollSize.width,
|
| - contentSize.width);
|
| + _refreshScrollRatioHelper(_scroller._scrollSize.width, contentSize.width);
|
| }
|
| }
|
|
|
| -
|
| void _refreshScrollRatioHelper(num frameSize, num contentSize) {
|
| - num frameTravelDistance = frameSize - _defaultScrollSize(
|
| - frameSize, contentSize) -_PADDING_LENGTH * 2;
|
| + num frameTravelDistance = frameSize -
|
| + _defaultScrollSize(frameSize, contentSize) -
|
| + _PADDING_LENGTH * 2;
|
| if (frameTravelDistance < 0.001) {
|
| _currentScrollRatio = 0;
|
| } else {
|
| @@ -222,20 +221,19 @@ class Scrollbar implements ScrollListener {
|
| void _onEnd(UIEvent e) {
|
| _scrollBarDragInProgress = false;
|
| // TODO(jacobr): make scrollbar less tightly coupled to the scroller.
|
| - _scroller._onScrollerDragEnd.add(
|
| - new Event(ScrollerEventType.DRAG_END));
|
| + _scroller._onScrollerDragEnd.add(new Event(ScrollerEventType.DRAG_END));
|
| }
|
|
|
| -
|
| /**
|
| * When scrolling ends, schedule a timeout to hide the scrollbars.
|
| */
|
| void _onScrollerEnd(Event e) {
|
| _cancelTimeout();
|
| - _timer = new Timer(const Duration(milliseconds: _DISPLAY_TIME),
|
| - _boundHideFn);
|
| + _timer =
|
| + new Timer(const Duration(milliseconds: _DISPLAY_TIME), _boundHideFn);
|
| _scrollInProgress = false;
|
| }
|
| +
|
| void onScrollerMoved(num scrollX, num scrollY, bool decelerating) {
|
| if (_scrollInProgress == false) {
|
| // Display the scrollbar and then immediately prepare to hide it...
|
| @@ -251,8 +249,8 @@ class Scrollbar implements ScrollListener {
|
| return;
|
| }
|
| _scroller._resize(() {
|
| - updateScrollbars(_scroller.getHorizontalOffset(),
|
| - _scroller.getVerticalOffset());
|
| + updateScrollbars(
|
| + _scroller.getHorizontalOffset(), _scroller.getVerticalOffset());
|
| });
|
| }
|
|
|
| @@ -261,14 +259,12 @@ class Scrollbar implements ScrollListener {
|
| if (_scroller._shouldScrollHorizontally()) {
|
| num scrollPercentX = _scroller.getHorizontalScrollPercent(scrollX);
|
| _updateScrollbar(_horizontalElement, scrollX, scrollPercentX,
|
| - _scroller._scrollSize.width,
|
| - contentSize.width, 'right', 'width');
|
| + _scroller._scrollSize.width, contentSize.width, 'right', 'width');
|
| }
|
| if (_scroller._shouldScrollVertically()) {
|
| num scrollPercentY = _scroller.getVerticalScrollPercent(scrollY);
|
| _updateScrollbar(_verticalElement, scrollY, scrollPercentY,
|
| - _scroller._scrollSize.height,
|
| - contentSize.height, 'bottom', 'height');
|
| + _scroller._scrollSize.height, contentSize.height, 'bottom', 'height');
|
| }
|
| }
|
|
|
| @@ -309,8 +305,9 @@ class Scrollbar implements ScrollListener {
|
|
|
| num _defaultScrollSize(num frameSize, num contentSize) {
|
| return GoogleMath.clamp(
|
| - (frameSize -_PADDING_LENGTH * 2) * frameSize / contentSize,
|
| - _MIN_SIZE, frameSize -_PADDING_LENGTH * 2);
|
| + (frameSize - _PADDING_LENGTH * 2) * frameSize / contentSize,
|
| + _MIN_SIZE,
|
| + frameSize - _PADDING_LENGTH * 2);
|
| }
|
|
|
| /**
|
| @@ -319,9 +316,8 @@ class Scrollbar implements ScrollListener {
|
| * specified by [cssPos]. The CSS property to adjust for size (height|width)
|
| * is specified by [cssSize].
|
| */
|
| - void _updateScrollbar(Element element, num offset,
|
| - num scrollPercent, num frameSize,
|
| - num contentSize, String cssPos, String cssSize) {
|
| + void _updateScrollbar(Element element, num offset, num scrollPercent,
|
| + num frameSize, num contentSize, String cssPos, String cssSize) {
|
| if (!_cachedSize.containsKey(cssSize)) {
|
| if (offset == null || contentSize < frameSize) {
|
| return;
|
| @@ -337,9 +333,9 @@ class Scrollbar implements ScrollListener {
|
| num scrollPx = stretchPercent * (contentSize - frameSize);
|
| num maxSize = _defaultScrollSize(frameSize, contentSize);
|
| num size = Math.max(_MIN_COMPRESSED_SIZE, maxSize - scrollPx);
|
| - num maxOffset = frameSize - size -_PADDING_LENGTH * 2;
|
| - num pos = GoogleMath.clamp(scrollPercent * maxOffset,
|
| - 0, maxOffset) + _PADDING_LENGTH;
|
| + num maxOffset = frameSize - size - _PADDING_LENGTH * 2;
|
| + num pos = GoogleMath.clamp(scrollPercent * maxOffset, 0, maxOffset) +
|
| + _PADDING_LENGTH;
|
| pos = pos.round();
|
| size = size.round();
|
| final style = element.style;
|
|
|