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

Unified Diff: Source/core/inspector/InspectorOverlayPage.html

Issue 1317913004: Devtools [LayoutEditor]: show selector info and highlight affected nodes (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@cursor2
Patch Set: Rebase Created 5 years, 3 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
Index: Source/core/inspector/InspectorOverlayPage.html
diff --git a/Source/core/inspector/InspectorOverlayPage.html b/Source/core/inspector/InspectorOverlayPage.html
index 1d6f0efb00d3b5b3c042836bb2559efc3f445f09..ff0df28eb26e25f1b1519539a468d3087cb60e98 100644
--- a/Source/core/inspector/InspectorOverlayPage.html
+++ b/Source/core/inspector/InspectorOverlayPage.html
@@ -254,7 +254,7 @@ function drawPausedInDebuggerMessage(message)
document.body.classList.add("dimmed");
}
-function _drawGrid(rulerAtRight, rulerAtBottom)
+function _drawGrid(context, rulerAtRight, rulerAtBottom)
{
if (window._gridPainted)
return;
@@ -408,7 +408,7 @@ function drawViewSize(drawViewSizeWithGrid)
context.fillText(text, frameWidth - textWidth - 6, drawGridBoolean ? 33 : 18);
context.restore();
if (drawGridBoolean)
- _drawGrid();
+ _drawGrid(context);
}
function resetCanvas(canvasElement)
@@ -432,7 +432,8 @@ function reset(resetData)
window.canvas = document.getElementById("canvas");
window.context = canvas.getContext("2d");
resetCanvas(canvas);
-
+ var matchedNodesCanvas = document.getElementById("layout-editor-matched-nodes-canvas");
+ resetCanvas(matchedNodesCanvas);
window.labelsCanvas = document.getElementById("labels-canvas");
resetLabelCanvas();
@@ -446,19 +447,21 @@ function reset(resetData)
var editor = document.getElementById("editor");
editor.style.visibility = "hidden";
editor.textContent = "";
+ document.getElementById("selector-tooltip").style.visibility = "hidden";
document.body.classList.remove("dimmed");
document.removeEventListener("mousedown", consumeEvent);
document.removeEventListener("mousemove", onLayoutEditorMouseMove);
document.removeEventListener("mouseup", consumeEvent);
document.removeEventListener("click", onLayoutEditorClick);
document.removeEventListener("keydown", onLayoutEditorKeyDown);
+ document.removeEventListener("mousewheel", onLayoutEditorMouseWheel);
delete window.hoverableAreas;
delete window.anchorsByType;
window._gridPainted = false;
}
-function _drawElementTitle(elementInfo, bounds)
+function _drawElementTitle(context, elementInfo, bounds)
{
document.getElementById("tag-name").textContent = elementInfo.tagName;
document.getElementById("node-id").textContent = elementInfo.idValue ? "#" + elementInfo.idValue : "";
@@ -588,7 +591,7 @@ function _drawMaterialElementTitle(elementInfo, bounds)
}
}
-function _drawRulers(bounds, rulerAtRight, rulerAtBottom)
+function _drawRulers(context, bounds, rulerAtRight, rulerAtBottom)
{
context.save();
var width = canvasWidth;
@@ -632,7 +635,7 @@ function _drawRulers(bounds, rulerAtRight, rulerAtBottom)
context.restore();
}
-function drawPath(commands, fillColor, outlineColor, bounds, name)
+function drawPath(context, commands, fillColor, outlineColor, bounds, name)
{
var commandsIndex = 0;
@@ -701,8 +704,9 @@ function drawPath(commands, fillColor, outlineColor, bounds, name)
}
}
-function drawHighlight(highlight)
+function drawHighlight(highlight, context)
{
+ context = context || window.context;
context.save();
var bounds = {
@@ -718,11 +722,11 @@ function drawHighlight(highlight)
for (var paths = highlight.paths.slice(); paths.length;) {
var path = paths.pop();
- drawPath(path.path, path.fillColor, path.outlineColor, bounds, path.name);
+ drawPath(context, path.path, path.fillColor, path.outlineColor, bounds, path.name);
if (paths.length) {
context.save();
context.globalCompositeOperation = "destination-out";
- drawPath(paths[paths.length - 1].path, "red", null, bounds);
+ drawPath(context, paths[paths.length - 1].path, "red", null, bounds);
context.restore();
}
}
@@ -731,16 +735,16 @@ function drawHighlight(highlight)
var rulerAtBottom = highlight.paths.length && highlight.showRulers && bounds.minY < 20 && bounds.maxY + 20 < canvasHeight;
if (highlight.showRulers)
- _drawGrid(rulerAtRight, rulerAtBottom);
+ _drawGrid(context, rulerAtRight, rulerAtBottom);
if (highlight.paths.length) {
if (highlight.showExtensionLines)
- _drawRulers(bounds, rulerAtRight, rulerAtBottom);
+ _drawRulers(context, bounds, rulerAtRight, rulerAtBottom);
if (highlight.elementInfo && highlight.displayAsMaterial)
_drawMaterialElementTitle(highlight.elementInfo, bounds);
else if (highlight.elementInfo)
- _drawElementTitle(highlight.elementInfo, bounds);
+ _drawElementTitle(context, highlight.elementInfo, bounds);
}
context.restore();
}
@@ -820,6 +824,28 @@ function showLayoutEditor(info)
document.addEventListener("mouseup", consumeEvent);
document.addEventListener("click", onLayoutEditorClick);
document.addEventListener("keydown", onLayoutEditorKeyDown);
+ document.addEventListener("mousewheel", onLayoutEditorMouseWheel);
+ showSelectorTooltip();
+}
+
+function showSelectorTooltip()
+{
+ var tooltipElement = document.getElementById("selector-tooltip");
+ tooltipElement.style.visibility = "visible";
+ tooltipElement.style.left = "100px";
+ tooltipElement.style.top = "100px";
+ var selectorInfo = JSON.parse(InspectorOverlayHost.currentSelectorInfo());
+ tooltipElement.textContent = selectorInfo.selector;
+ tooltipElement.style.backgroundColor = "#eee";
+
+ var matchedNodesCanvas = document.getElementById("layout-editor-matched-nodes-canvas");
+ resetCanvas(matchedNodesCanvas);
+
+ if (!selectorInfo.nodes)
+ return;
+
+ for (var nodeHighlight of selectorInfo.nodes)
+ drawHighlight(nodeHighlight, matchedNodesCanvas.getContext("2d"));
}
function createAnchor(anchorInfo)
@@ -1066,6 +1092,17 @@ function onLayoutEditorKeyDown(event)
}
}
+function onLayoutEditorMouseWheel(event)
+{
+ event.preventDefault();
+ if (event.wheelDelta > 0)
+ InspectorOverlayHost.previousSelector();
+ else
+ InspectorOverlayHost.nextSelector();
+
+ showSelectorTooltip();
+}
+
function consumeEvent(event)
{
event.preventDefault();
@@ -1113,6 +1150,7 @@ document.addEventListener("keydown", onDocumentKeyDown);
<div class="button" id="step-over-button" title="Step over next function call (F10)."><div class="glyph"></div></div>
</div>
</body>
+<canvas id="layout-editor-matched-nodes-canvas" class="fill"></canvas>
<canvas id="canvas" class="fill"></canvas>
<canvas id="labels-canvas" class="fill"></canvas>
<div id="element-title">
@@ -1126,5 +1164,6 @@ document.addEventListener("keydown", onDocumentKeyDown);
</div>
<div id="element-tooltip-arrow"></div>
<div id="editor" class="fill"></div>
+<div id="selector-tooltip"></div>
<div id="log"></div>
</html>

Powered by Google App Engine
This is Rietveld 408576698