| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * Implementation of a custom scrolling behavior. | 6 * Implementation of a custom scrolling behavior. |
| 7 * This behavior overrides native scrolling for an area. This area can be a | 7 * This behavior overrides native scrolling for an area. This area can be a |
| 8 * single defined part of a page, the entire page, or several different parts | 8 * single defined part of a page, the entire page, or several different parts |
| 9 * of a page. | 9 * of a page. |
| 10 * | 10 * |
| (...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 534 _minOffset.x = 0; | 534 _minOffset.x = 0; |
| 535 _minOffset.y = 0; | 535 _minOffset.y = 0; |
| 536 reconfigure(() => _setContentOffset(_maxPoint.x, _maxPoint.y)); | 536 reconfigure(() => _setContentOffset(_maxPoint.x, _maxPoint.y)); |
| 537 } | 537 } |
| 538 | 538 |
| 539 /** | 539 /** |
| 540 * Recalculate dimensions of the frame and the content. Adjust the minPoint | 540 * Recalculate dimensions of the frame and the content. Adjust the minPoint |
| 541 * and maxPoint allowed for scrolling. | 541 * and maxPoint allowed for scrolling. |
| 542 */ | 542 */ |
| 543 void _resize(Callback callback) { | 543 void _resize(Callback callback) { |
| 544 final frameRect = _frame.rect; | 544 window.requestLayoutFrame(() { |
| 545 Future contentSizeFuture; | 545 if (_lookupContentSizeDelegate !== null) { |
| 546 _contentSize = _lookupContentSizeDelegate(); |
| 547 } else { |
| 548 _contentSize = new Size(_element.scrollWidth, _element.scrollHeight); |
| 549 } |
| 546 | 550 |
| 547 if (_lookupContentSizeDelegate !== null) { | 551 _scrollSize = new Size(_frame.offsetWidth, |
| 548 contentSizeFuture = _lookupContentSizeDelegate(); | 552 _frame.offsetHeight); |
| 549 contentSizeFuture.then((Size size) { | |
| 550 _contentSize = size; | |
| 551 }); | |
| 552 } else { | |
| 553 contentSizeFuture = _element.rect; | |
| 554 contentSizeFuture.then((ElementRect rect) { | |
| 555 _contentSize = new Size(rect.scroll.width, rect.scroll.height); | |
| 556 }); | |
| 557 } | |
| 558 | |
| 559 joinFutures(<Future>[frameRect, contentSizeFuture], () { | |
| 560 _scrollSize = new Size(frameRect.value.offset.width, | |
| 561 frameRect.value.offset.height); | |
| 562 Size adjusted = _getAdjustedContentSize(); | 553 Size adjusted = _getAdjustedContentSize(); |
| 563 _maxPoint = new Coordinate(-_maxOffset.x, -_maxOffset.y); | 554 _maxPoint = new Coordinate(-_maxOffset.x, -_maxOffset.y); |
| 564 _minPoint = new Coordinate( | 555 _minPoint = new Coordinate( |
| 565 Math.min( | 556 Math.min( |
| 566 _scrollSize.width - adjusted.width + _minOffset.x, _maxPoint.x), | 557 _scrollSize.width - adjusted.width + _minOffset.x, _maxPoint.x), |
| 567 Math.min( | 558 Math.min( |
| 568 _scrollSize.height - adjusted.height + _minOffset.y, _maxPoint.y))
; | 559 _scrollSize.height - adjusted.height + _minOffset.y, _maxPoint.y))
; |
| 569 callback(); | 560 callback(); |
| 570 }); | 561 }); |
| 571 } | 562 } |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 for (EventListener listener in _listeners) { | 713 for (EventListener listener in _listeners) { |
| 723 listener(evt); | 714 listener(evt); |
| 724 } | 715 } |
| 725 } | 716 } |
| 726 } | 717 } |
| 727 | 718 |
| 728 class ScrollerScrollTechnique { | 719 class ScrollerScrollTechnique { |
| 729 static const TRANSFORM_3D = 1; | 720 static const TRANSFORM_3D = 1; |
| 730 static const RELATIVE_POSITIONING = 2; | 721 static const RELATIVE_POSITIONING = 2; |
| 731 } | 722 } |
| OLD | NEW |