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 script_inset_element; | 5 library script_inset_element; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:html'; | 8 import 'dart:html'; |
9 import 'observatory_element.dart'; | 9 import 'observatory_element.dart'; |
10 import 'service_ref.dart'; | 10 import 'service_ref.dart'; |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 var annotations = []; | 383 var annotations = []; |
384 var annotationsCursor; | 384 var annotationsCursor; |
385 | 385 |
386 StreamSubscription scriptChangeSubscription; | 386 StreamSubscription scriptChangeSubscription; |
387 | 387 |
388 String makeLineId(int line) { | 388 String makeLineId(int line) { |
389 return 'line-$line'; | 389 return 'line-$line'; |
390 } | 390 } |
391 | 391 |
392 void _scrollToCurrentPos() { | 392 void _scrollToCurrentPos() { |
393 var line = querySelector('#${makeLineId(_currentLine)}'); | 393 var line = shadowRoot.getElementById(makeLineId(_currentLine)); |
394 if (line != null) { | 394 if (line != null) { |
395 line.scrollIntoView(); | 395 line.scrollIntoView(); |
396 } | 396 } |
397 } | 397 } |
398 | 398 |
399 void detached() { | 399 void detached() { |
400 if (scriptChangeSubscription != null) { | 400 if (scriptChangeSubscription != null) { |
401 // Don't leak. If only Dart and Javascript exposed weak references... | 401 // Don't leak. If only Dart and Javascript exposed weak references... |
402 scriptChangeSubscription.cancel(); | 402 scriptChangeSubscription.cancel(); |
403 scriptChangeSubscription = null; | 403 scriptChangeSubscription = null; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 return; | 462 return; |
463 } | 463 } |
464 | 464 |
465 if (scriptChangeSubscription == null) { | 465 if (scriptChangeSubscription == null) { |
466 scriptChangeSubscription = script.changes.listen((_) => update()); | 466 scriptChangeSubscription = script.changes.listen((_) => update()); |
467 } | 467 } |
468 | 468 |
469 computeAnnotations(); | 469 computeAnnotations(); |
470 | 470 |
471 var table = linesTable(); | 471 var table = linesTable(); |
| 472 var firstBuild = false; |
472 if (container == null) { | 473 if (container == null) { |
473 // Indirect to avoid deleting the style element. | 474 // Indirect to avoid deleting the style element. |
474 container = new DivElement(); | 475 container = new DivElement(); |
475 shadowRoot.append(container); | 476 shadowRoot.append(container); |
| 477 firstBuild = true; |
476 } | 478 } |
477 container.children.clear(); | 479 container.children.clear(); |
478 container.children.add(table); | 480 container.children.add(table); |
479 makeCssClassUncopyable(table, "noCopy"); | 481 makeCssClassUncopyable(table, "noCopy"); |
| 482 if (firstBuild) { |
| 483 _scrollToCurrentPos(); |
| 484 } |
480 } | 485 } |
481 | 486 |
482 void computeAnnotations() { | 487 void computeAnnotations() { |
483 _startLine = (startPos != null | 488 _startLine = (startPos != null |
484 ? script.tokenToLine(startPos) | 489 ? script.tokenToLine(startPos) |
485 : 1 + script.lineOffset); | 490 : 1 + script.lineOffset); |
486 _currentLine = (currentPos != null | 491 _currentLine = (currentPos != null |
487 ? script.tokenToLine(currentPos) | 492 ? script.tokenToLine(currentPos) |
488 : null); | 493 : null); |
489 _currentCol = (currentPos != null | 494 _currentCol = (currentPos != null |
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 class SourceInsetElement extends PolymerElement { | 932 class SourceInsetElement extends PolymerElement { |
928 SourceInsetElement.created() : super.created(); | 933 SourceInsetElement.created() : super.created(); |
929 | 934 |
930 @published SourceLocation location; | 935 @published SourceLocation location; |
931 @published String height = null; | 936 @published String height = null; |
932 @published int currentPos; | 937 @published int currentPos; |
933 @published bool inDebuggerContext = false; | 938 @published bool inDebuggerContext = false; |
934 @published ObservableList variables; | 939 @published ObservableList variables; |
935 } | 940 } |
936 | 941 |
OLD | NEW |