Chromium Code Reviews| Index: pkg/observe/lib/src/path_observer.dart |
| diff --git a/pkg/observe/lib/src/path_observer.dart b/pkg/observe/lib/src/path_observer.dart |
| index cfaab187764caf34f630bca86db670e101073256..d6bf8143ca9a6521d11bc46e0fb5352b95b20599 100644 |
| --- a/pkg/observe/lib/src/path_observer.dart |
| +++ b/pkg/observe/lib/src/path_observer.dart |
| @@ -41,6 +41,7 @@ class PathObserver extends _Observer implements Bindable { |
| /// Sets the value at this path. |
| void set value(Object newValue) { |
| if (_path != null) _path.setValueFrom(_object, newValue); |
| + _discardChanges(); |
| } |
| int get _reportArgumentCount => 2; |
| @@ -431,7 +432,7 @@ class CompoundObserver extends _Observer implements Bindable { |
| throw new StateError('Cannot add observers once started.'); |
| } |
| - observer.open(_deliver); |
| + observer.open((_) => deliver()); |
| _observed..add(_observerSentinel)..add(observer); |
| } |
| @@ -532,10 +533,7 @@ abstract class _Observer extends Bindable { |
| return _value; |
| } |
| - get value { |
| - _check(skipChanges: true); |
| - return _value; |
| - } |
| + get value => _discardChanges(); |
| void close() { |
| if (!_isOpen) return; |
| @@ -545,10 +543,13 @@ abstract class _Observer extends Bindable { |
| _notifyCallback = null; |
| } |
| - void _deliver(_) { |
| - if (_isOpen) _dirtyCheck(); |
| + _discardChanges() { |
|
Jennifer Messerly
2014/05/30 19:50:20
this was somehow missing from the previous observe
|
| + _check(skipChanges: true); |
| + return _value; |
| } |
| + bool deliver() => _isOpen ? _dirtyCheck() : false; |
| + |
| bool _dirtyCheck() { |
| var cycles = 0; |
| while (cycles < _MAX_DIRTY_CHECK_CYCLES && _check()) { |