Index: Source/devtools/front_end/ElementsPanel.js |
diff --git a/Source/devtools/front_end/ElementsPanel.js b/Source/devtools/front_end/ElementsPanel.js |
index f9a42826f306319d7c8c7475b43c4f6e42ed1c03..874d83e766fcb7ebfd3d881c0ccc2a3480874655 100644 |
--- a/Source/devtools/front_end/ElementsPanel.js |
+++ b/Source/devtools/front_end/ElementsPanel.js |
@@ -71,6 +71,7 @@ WebInspector.ElementsPanel = function() |
this.treeOutline.wireToDomAgent(); |
this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.SelectedNodeChanged, this._selectedNodeChanged, this); |
+ this.treeOutline.addEventListener(WebInspector.ElementsTreeOutline.Events.ElementsTreeUpdated, this._updateBreadcrumbIfNeeded, this); |
this.crumbsElement = document.createElement("div"); |
this.crumbsElement.className = "crumbs"; |
@@ -101,9 +102,6 @@ WebInspector.ElementsPanel = function() |
this._popoverHelper = new WebInspector.PopoverHelper(this.element, this._getPopoverAnchor.bind(this), this._showPopover.bind(this)); |
this._popoverHelper.setTimeout(0); |
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrModified, this._updateBreadcrumbIfNeeded, this); |
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.AttrRemoved, this._updateBreadcrumbIfNeeded, this); |
- WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.NodeRemoved, this._nodeRemoved, this); |
WebInspector.domAgent.addEventListener(WebInspector.DOMAgent.Events.DocumentUpdated, this._documentUpdatedEvent, this); |
WebInspector.settings.showShadowDOM.addChangeListener(this._showShadowDOMChanged.bind(this)); |
@@ -549,6 +547,9 @@ WebInspector.ElementsPanel.prototype = { |
treeElement.hideSearchHighlights(); |
}, |
+ /** |
+ * @return {WebInspector.DOMNode} |
+ */ |
selectedDOMNode: function() |
{ |
return this.treeOutline.selectedDOMNode(); |
@@ -562,14 +563,18 @@ WebInspector.ElementsPanel.prototype = { |
this.treeOutline.selectDOMNode(node, focus); |
}, |
- _nodeRemoved: function(event) |
+ /** |
+ * @param {WebInspector.Event} event |
+ */ |
+ _updateBreadcrumbIfNeeded: function(event) |
{ |
- if (!this.isShowing()) |
+ var nodes = /** @type {!Array.<!WebInspector.DOMNode>} */ (event.data || []); |
+ if (!nodes.length) |
return; |
var crumbs = this.crumbsElement; |
for (var crumb = crumbs.firstChild; crumb; crumb = crumb.nextSibling) { |
- if (crumb.representedObject === event.data.node) { |
+ if (nodes.indexOf(crumb.representedObject) !== -1) { |
this.updateBreadcrumb(true); |
return; |
} |
@@ -614,24 +619,6 @@ WebInspector.ElementsPanel.prototype = { |
this._mouseOutOfCrumbsTimeout = setTimeout(this.updateBreadcrumbSizes.bind(this), 1000); |
}, |
- _updateBreadcrumbIfNeeded: function(event) |
- { |
- var name = event.data.name; |
- if (name !== "class" && name !== "id") |
- return; |
- |
- var node = /** @type {WebInspector.DOMNode} */ (event.data.node); |
- var crumbs = this.crumbsElement; |
- var crumb = crumbs.firstChild; |
- while (crumb) { |
- if (crumb.representedObject === node) { |
- this.updateBreadcrumb(true); |
- break; |
- } |
- crumb = crumb.nextSibling; |
- } |
- }, |
- |
/** |
* @param {boolean=} forceUpdate |
*/ |
@@ -701,7 +688,7 @@ WebInspector.ElementsPanel.prototype = { |
crumb.representedObject = current; |
crumb.addEventListener("mousedown", selectCrumbFunction, false); |
- var crumbTitle; |
+ var crumbTitle = ""; |
switch (current.nodeType()) { |
case Node.ELEMENT_NODE: |
WebInspector.DOMPresentationUtils.decorateNodeLabel(current, crumb); |
@@ -709,7 +696,7 @@ WebInspector.ElementsPanel.prototype = { |
case Node.TEXT_NODE: |
crumbTitle = WebInspector.UIString("(text)"); |
- break |
+ break; |
case Node.COMMENT_NODE: |
crumbTitle = "<!-->"; |