Commit 671b2bfe authored by Adam Barth's avatar Adam Barth

Merge pull request #1044 from abarth/disable_reparent_during_sync

Disable reparent during sync
parents 2b25c33b 7d711b9e
......@@ -19,6 +19,7 @@ export 'package:sky/src/rendering/box.dart' show BoxConstraints, BoxDecoration,
export 'package:sky/src/rendering/object.dart' show Point, Offset, Size, Rect, Color, Paint, Path;
final bool _shouldLogRenderDuration = false; // see also 'enableProfilingLoop' argument to runApp()
final bool _shouldReparentDuringSync = false; // currently in development
typedef Widget Builder();
typedef void WidgetTreeWalker(Widget);
......@@ -380,7 +381,7 @@ abstract class Widget {
Widget candidate = oldNode.singleChild;
assert(candidate == null || candidate.parent == oldNode);
oldNode = null;
while (candidate != null) {
while (candidate != null && _shouldReparentDuringSync) {
if (_canSync(newNode, candidate)) {
assert(candidate.parent != null);
assert(candidate.parent.singleChild == candidate);
......
......@@ -57,38 +57,39 @@ void main() {
});
test('remove one', () {
WidgetTester tester = new WidgetTester();
tester.pumpFrame(() {
return new Container(
child: new Container(
child: new TestState(
state: 10,
child: new Container()
)
)
);
});
TestState stateWidget = tester.findWidget((widget) => widget is TestState);
expect(stateWidget.state, equals(10));
expect(stateWidget.syncs, equals(0));
tester.pumpFrame(() {
return new Container(
child: new TestState(
state: 11,
child: new Container()
)
);
});
expect(stateWidget.state, equals(10));
expect(stateWidget.syncs, equals(1));
});
// Requires _shouldReparentDuringSync
// test('remove one', () {
//
// WidgetTester tester = new WidgetTester();
//
// tester.pumpFrame(() {
// return new Container(
// child: new Container(
// child: new TestState(
// state: 10,
// child: new Container()
// )
// )
// );
// });
//
// TestState stateWidget = tester.findWidget((widget) => widget is TestState);
//
// expect(stateWidget.state, equals(10));
// expect(stateWidget.syncs, equals(0));
//
// tester.pumpFrame(() {
// return new Container(
// child: new TestState(
// state: 11,
// child: new Container()
// )
// );
// });
//
// expect(stateWidget.state, equals(10));
// expect(stateWidget.syncs, equals(1));
//
// });
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment