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

Unified Diff: runtime/observatory/lib/src/elements/script_inset.dart

Issue 1137523002: Make copying from script insets omit line numbers and breakpoint indicators. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/observatory/lib/src/elements/script_inset.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/elements/script_inset.dart
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart
index 1c158c0835c4236841d26b36d3908f93cad94679..fec390480c7dab2135cc9b82aceadda88e06ab7c 100644
--- a/runtime/observatory/lib/src/elements/script_inset.dart
+++ b/runtime/observatory/lib/src/elements/script_inset.dart
@@ -382,6 +382,20 @@ class ScriptInsetElement extends ObservatoryElement {
Element linesTable() {
var table = new DivElement();
table.classes.add("sourceTable");
+ table.onCopy.listen((event) {
+ // Omit breakpoint indicators and line numbers when copying text by
+ // marking them as hidden before the copy happens, then marking them
+ // visible on the next event loop turn.
+ var noCopyNodes = shadowRoot.getElementsByClassName("noCopy");
+ for(var node in noCopyNodes) {
+ node.style.visibility = 'hidden';
+ }
+ Timer.run(() {
Cutch 2015/05/07 22:58:17 This is Timer.run is a beautiful hack. Could we fa
rmacnak 2015/05/08 19:58:18 Extracted as makeCssClassUncopyable.
+ for (var node in noCopyNodes) {
+ node.style.visibility = 'visible';
+ }
+ });
+ });
annotationsCursor = 0;
@@ -449,6 +463,7 @@ class ScriptInsetElement extends ObservatoryElement {
var busy = false;
if (line == null || !line.possibleBpt) {
e.classes.add("emptyBreakpoint");
+ e.classes.add('noCopy');
e.text = nbsp;
return e;
}
@@ -457,18 +472,22 @@ class ScriptInsetElement extends ObservatoryElement {
if (busy) {
e.classes.clear();
e.classes.add("busyBreakpoint");
+ e.classes.add('noCopy');
} else {
if (line.breakpoints != null) {
if (line.breakpointResolved) {
e.classes.clear();
e.classes.add("resolvedBreakpoint");
+ e.classes.add('noCopy');
} else {
e.classes.clear();
e.classes.add("unresolvedBreakpoint");
+ e.classes.add('noCopy');
}
} else {
e.classes.clear();
e.classes.add("possibleBreakpoint");
Cutch 2015/05/07 22:58:17 every branch adds the class, why not move it to th
rmacnak 2015/05/08 19:58:18 Done.
+ e.classes.add('noCopy');
}
}
}
@@ -504,6 +523,7 @@ class ScriptInsetElement extends ObservatoryElement {
Element lineNumberElement(ScriptLine line) {
var lineNumber = line == null ? "..." : line.line;
var e = span("$nbsp$lineNumber$nbsp");
+ e.classes.add('noCopy');
if ((line == null) || (line.hits == null)) {
hitsUnknown(e);
@@ -553,6 +573,8 @@ class ScriptInsetElement extends ObservatoryElement {
consumeUntil(line.text.length);
}
+ e.append(span('\n'));
Cutch 2015/05/07 22:58:17 <br> ?
rmacnak 2015/05/08 19:58:18 No, this is here so blank lines are included when
+
return e;
}
« no previous file with comments | « no previous file | runtime/observatory/lib/src/elements/script_inset.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698