| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 library observe.src.observable_list; | 5 library observe.src.observable_list; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:collection' show ListBase, UnmodifiableListView; | 8 import 'dart:collection' show ListBase, UnmodifiableListView; |
| 9 import 'package:observe/observe.dart'; | 9 import 'package:observe/observe.dart'; |
| 10 import 'list_diff.dart' show projectListSplices, calcSplices; | 10 import 'list_diff.dart' show projectListSplices, calcSplices; |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 } | 84 } |
| 85 } | 85 } |
| 86 | 86 |
| 87 _list.length = value; | 87 _list.length = value; |
| 88 } | 88 } |
| 89 | 89 |
| 90 @reflectable E operator [](int index) => _list[index]; | 90 @reflectable E operator [](int index) => _list[index]; |
| 91 | 91 |
| 92 @reflectable void operator []=(int index, E value) { | 92 @reflectable void operator []=(int index, E value) { |
| 93 var oldValue = _list[index]; | 93 var oldValue = _list[index]; |
| 94 if (hasListObservers) { | 94 if (hasListObservers && oldValue != value) { |
| 95 _recordChange(new ListChangeRecord(this, index, addedCount: 1, | 95 _recordChange(new ListChangeRecord(this, index, addedCount: 1, |
| 96 removed: [oldValue])); | 96 removed: [oldValue])); |
| 97 } | 97 } |
| 98 _list[index] = value; | 98 _list[index] = value; |
| 99 } | 99 } |
| 100 | 100 |
| 101 // Forwarders so we can reflect on the properties. | 101 // Forwarders so we can reflect on the properties. |
| 102 @reflectable bool get isEmpty => super.isEmpty; | 102 @reflectable bool get isEmpty => super.isEmpty; |
| 103 @reflectable bool get isNotEmpty => super.isNotEmpty; | 103 @reflectable bool get isNotEmpty => super.isNotEmpty; |
| 104 | 104 |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 295 |
| 296 for (var change in changeRecords) { | 296 for (var change in changeRecords) { |
| 297 int addEnd = change.index + change.addedCount; | 297 int addEnd = change.index + change.addedCount; |
| 298 int removeEnd = change.index + change.removed.length; | 298 int removeEnd = change.index + change.removed.length; |
| 299 | 299 |
| 300 var addedItems = current.getRange(change.index, addEnd); | 300 var addedItems = current.getRange(change.index, addEnd); |
| 301 previous.replaceRange(change.index, removeEnd, addedItems); | 301 previous.replaceRange(change.index, removeEnd, addedItems); |
| 302 } | 302 } |
| 303 } | 303 } |
| 304 } | 304 } |
| OLD | NEW |