Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(283)

Side by Side Diff: samples/swarm/swarm_ui_lib/view/view.dart

Issue 27441002: Removing setImmediate and hiding WindowTimers interface (take 2) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: The fix Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 view; 5 library view;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'dart:math' as Math; 9 import 'dart:math' as Math;
10 10
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 Future<bool> _measureLayout() { 331 Future<bool> _measureLayout() {
332 // TODO(10459): code should not use Completer.sync. 332 // TODO(10459): code should not use Completer.sync.
333 final changed = new Completer<bool>.sync(); 333 final changed = new Completer<bool>.sync();
334 _measureLayoutHelper(changed); 334 _measureLayoutHelper(changed);
335 335
336 var changedComplete = false; 336 var changedComplete = false;
337 changed.future.then((_) { 337 changed.future.then((_) {
338 changedComplete = true; 338 changedComplete = true;
339 }); 339 });
340 340
341 window.setImmediate(() { 341 scheduleMicrotask(() {
342 if (!changedComplete) { 342 if (!changedComplete) {
343 changed.complete(false); 343 changed.complete(false);
344 } 344 }
345 }); 345 });
346 return changed.future; 346 return changed.future;
347 } 347 }
348 348
349 void _measureLayoutHelper(Completer<bool> changed) { 349 void _measureLayoutHelper(Completer<bool> changed) {
350 windowResized(); 350 windowResized();
351 351
352 // TODO(jmesserly): this logic is more complex than it needs to be because 352 // TODO(jmesserly): this logic is more complex than it needs to be because
353 // we're taking pains to not initialize _layout if it's not needed. Is that 353 // we're taking pains to not initialize _layout if it's not needed. Is that
354 // a good tradeoff? 354 // a good tradeoff?
355 if (ViewLayout.hasCustomLayout(this)) { 355 if (ViewLayout.hasCustomLayout(this)) {
356 // TODO(10459): code should not use Completer.sync. 356 // TODO(10459): code should not use Completer.sync.
357 Completer sizeCompleter = new Completer<Size>.sync(); 357 Completer sizeCompleter = new Completer<Size>.sync();
358 window.setImmediate(() { 358 scheduleMicrotask(() {
359 sizeCompleter.complete( 359 sizeCompleter.complete(
360 new Size(_node.client.width, _node.client.height)); 360 new Size(_node.client.width, _node.client.height));
361 }); 361 });
362 layout.measureLayout(sizeCompleter.future, changed); 362 layout.measureLayout(sizeCompleter.future, changed);
363 } else { 363 } else {
364 for (final child in childViews) { 364 for (final child in childViews) {
365 child._measureLayoutHelper(changed); 365 child._measureLayoutHelper(changed);
366 } 366 }
367 } 367 }
368 } 368 }
369 369
370 void _applyLayoutToChildren() { 370 void _applyLayoutToChildren() {
371 for (final child in childViews) { 371 for (final child in childViews) {
372 child._applyLayout(); 372 child._applyLayout();
373 } 373 }
374 } 374 }
375 375
376 void _applyLayout() { 376 void _applyLayout() {
377 if (_layout != null) { 377 if (_layout != null) {
378 _layout.applyLayout(); 378 _layout.applyLayout();
379 } 379 }
380 _applyLayoutToChildren(); 380 _applyLayoutToChildren();
381 } 381 }
382 } 382 }
OLDNEW
« no previous file with comments | « samples/swarm/swarm_ui_lib/view/SliderMenu.dart ('k') | samples/swarm/test/swarm_ui_lib/layout/grid_layout_demo.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698