Diff
Modified: trunk/Source/WebInspectorUI/ChangeLog (238858 => 238859)
--- trunk/Source/WebInspectorUI/ChangeLog 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/ChangeLog 2018-12-04 18:17:16 UTC (rev 238859)
@@ -1,5 +1,65 @@
2018-12-04 Matt Baker <mattba...@apple.com>
+ Web Inspector: Elements: $0 is shown for all selected elements
+ https://bugs.webkit.org/show_bug.cgi?id=192119
+ <rdar://problem/46327554>
+
+ Reviewed by Devin Rousso.
+
+ * UserInterface/Views/ContentBrowserTabContentView.js:
+ (WI.ContentBrowserTabContentView.prototype._revealAndSelectRepresentedObject):
+ * UserInterface/Views/DOMTreeContentView.js:
+ (WI.DOMTreeContentView):
+ (WI.DOMTreeContentView.prototype.layout):
+ (WI.DOMTreeContentView.prototype._domTreeSelectionDidChange):
+ Update the selected DOM node using the TreeOutline's selection change
+ event, instead of in `onselect`, which wasn't always called.
+
+ * UserInterface/Views/DOMTreeElement.js:
+ (WI.DOMTreeElement.prototype.onselect): Deleted.
+ (WI.DOMTreeElement.prototype.ondeselect): Deleted.
+ Eliminate `onselect` and `ondeselect`. TreeOutline clients should use
+ the TreeOutline.Event.SelectedDidChange event instead.
+
+ * UserInterface/Views/DOMTreeOutline.css:
+ (.tree-outline.dom li.last-selected > span::after):
+ (.tree-outline.dom:focus li.last-selected > span::after):
+ (.tree-outline.dom li.selected > span::after): Deleted.
+ (.tree-outline.dom:focus li.selected > span::after): Deleted.
+ * UserInterface/Views/DOMTreeOutline.js:
+ (WI.DOMTreeOutline.prototype.updateSelection): Deleted.
+
+ * UserInterface/Views/DebuggerSidebarPanel.js:
+ (WI.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
+ * UserInterface/Views/FolderizedTreeElement.js:
+ (WI.FolderizedTreeElement.prototype._addTreeElement):
+ * UserInterface/Views/NavigationSidebarPanel.js:
+ (WI.NavigationSidebarPanel.prototype.showDefaultContentViewForTreeElement):
+ (WI.NavigationSidebarPanel.prototype._treeElementWasFiltered):
+ (WI.NavigationSidebarPanel):
+ * UserInterface/Views/OpenResourceDialog.js:
+ (WI.OpenResourceDialog.prototype._populateResourceTreeOutline):
+ (WI.OpenResourceDialog.prototype._handleKeydownEvent):
+ * UserInterface/Views/SourceCodeTreeElement.js:
+ (WI.SourceCodeTreeElement.prototype.descendantResourceTreeElementTypeDidChange):
+ * UserInterface/Views/TreeElement.js:
+ (WI.TreeElement.prototype.select):
+ (WI.TreeElement.prototype.revealAndSelect):
+ (WI.TreeElement.prototype.deselect):
+ Remove `suppressOnDeselect` and rename `suppressOnSelect` to `suppressNotification`.
+ Now that `ondeselect` has been removed `suppressOnDeselect` is no longer
+ meaningful, as TreeOutline generates a single `SelectedDidChange` event
+ when the selected item changes. In the case of `revealAndSelect`, both
+ arguments had the same value.
+
+ * UserInterface/Views/TreeOutline.js:
+ (WI.TreeOutline):
+ (WI.TreeOutline.prototype.selectionControllerSelectionDidChange):
+ Add a unique class name to the last selected TreeElement to distinguish
+ it from other selected elements.
+
+2018-12-04 Matt Baker <mattba...@apple.com>
+
Web Inspector: Elements: ⌘-A should select all visible nodes
https://bugs.webkit.org/show_bug.cgi?id=192120
<rdar://problem/46344435>
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -317,7 +317,7 @@
let treeElement = this.treeElementForRepresentedObject(representedObject);
if (treeElement)
- treeElement.revealAndSelect(true, false, true, true);
+ treeElement.revealAndSelect(true, false, true);
else if (this.navigationSidebarPanel && this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement)
this.navigationSidebarPanel.contentTreeOutline.selectedTreeElement.deselect(true);
}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -67,6 +67,7 @@
this._domTreeOutline.allowsEmptySelection = false;
this._domTreeOutline.allowsMultipleSelection = true;
this._domTreeOutline.addEventListener(WI.TreeOutline.Event.ElementAdded, this._domTreeElementAdded, this);
+ this._domTreeOutline.addEventListener(WI.TreeOutline.Event.SelectionDidChange, this._domTreeSelectionDidChange, this);
this._domTreeOutline.addEventListener(WI.DOMTreeOutline.Event.SelectedNodeChanged, this._selectedNodeDidChange, this);
this._domTreeOutline.wireToDomAgent();
this._domTreeOutline.editable = true;
@@ -357,7 +358,7 @@
layout()
{
- this._domTreeOutline.updateSelection();
+ this._domTreeOutline.updateSelectionArea();
if (this.layoutReason === WI.View.LayoutReason.Resize)
this._domTreeOutline.selectDOMNode(this._domTreeOutline.selectedDOMNode());
@@ -451,6 +452,22 @@
this._updateBreakpointStatus(node.id);
}
+ _domTreeSelectionDidChange(event)
+ {
+ let treeElement = this._domTreeOutline.selectedTreeElement;
+ let domNode = treeElement ? treeElement.representedObject : null;
+ let selectedByUser = event.data.selectedByUser;
+
+ this._domTreeOutline.suppressRevealAndSelect = true;
+ this._domTreeOutline.selectDOMNode(domNode, selectedByUser);
+
+ if (domNode && selectedByUser)
+ WI.domManager.highlightDOMNode(domNode.id);
+
+ this._domTreeOutline.updateSelectionArea();
+ this._domTreeOutline.suppressRevealAndSelect = false;
+ }
+
_selectedNodeDidChange(event)
{
var selectedDOMNode = this._domTreeOutline.selectedDOMNode();
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -625,21 +625,6 @@
listItemElement.classList.add(WI.DOMTreeElement.HighlightStyleClassName);
}
- onselect(treeElement, selectedByUser)
- {
- this.treeOutline.suppressRevealAndSelect = true;
- this.treeOutline.selectDOMNode(this.representedObject, selectedByUser);
- if (selectedByUser)
- WI.domManager.highlightDOMNode(this.representedObject.id);
- this.treeOutline.updateSelection();
- this.treeOutline.suppressRevealAndSelect = false;
- }
-
- ondeselect(treeElement)
- {
- this.treeOutline.selectDOMNode(null);
- }
-
ondelete()
{
if (!this.editable)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css 2018-12-04 18:17:16 UTC (rev 238859)
@@ -78,7 +78,7 @@
background-color: hsl(209, 100%, 49%);
}
-.tree-outline.dom li.selected > span::after {
+.tree-outline.dom li.last-selected > span::after {
content: " = $0";
color: var(--console-secondary-text-color);
position: absolute;
@@ -85,7 +85,7 @@
white-space: pre;
}
-.tree-outline.dom:focus li.selected > span::after {
+.tree-outline.dom:focus li.last-selected > span::after {
color: var(--selected-secondary-text-color);
}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -184,7 +184,7 @@
this._revealAndSelectNode(selectedNode, true);
}
- updateSelection()
+ updateSelectionArea()
{
// This will miss updating selection areas used for the hovered tree element and
// and those used to show forced pseudo class indicators, but this should be okay.
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -784,7 +784,7 @@
var newDebuggerTreeElement = this._addDebuggerObject(debuggerObject);
if (newDebuggerTreeElement && wasSelected)
- newDebuggerTreeElement.revealAndSelect(true, false, true, true);
+ newDebuggerTreeElement.revealAndSelect(true, false, true);
}
_removeDebuggerTreeElement(debuggerTreeElement)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -223,7 +223,7 @@
this._insertChildTreeElement(parentTreeElement, childTreeElement);
if (wasSelected)
- childTreeElement.revealAndSelect(true, false, true, true);
+ childTreeElement.revealAndSelect(true, false, true);
}
_compareTreeElementsByMainTitle(a, b)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -195,7 +195,7 @@
if (!contentView)
return false;
- treeElement.revealAndSelect(true, false, true, true);
+ treeElement.revealAndSelect(true, false, true);
return true;
}
@@ -742,9 +742,8 @@
const omitFocus = true;
const selectedByUser = false;
- const suppressOnSelect = true;
- const suppressOnDeselect = true;
- treeElement.revealAndSelect(omitFocus, selectedByUser, suppressOnSelect, suppressOnDeselect);
+ const suppressNotification = true;
+ treeElement.revealAndSelect(omitFocus, selectedByUser, suppressNotification);
}
};
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -124,7 +124,7 @@
}
if (this._treeOutline.children.length)
- this._treeOutline.children[0].select(true, false, true, true);
+ this._treeOutline.children[0].select(true, false, true);
}
didDismissDialog()
@@ -202,7 +202,7 @@
let adjacentSiblingProperty = event.keyCode === WI.KeyboardShortcut.Key.Up.keyCode ? "previousSibling" : "nextSibling";
treeElement = treeElement[adjacentSiblingProperty];
if (treeElement)
- treeElement.revealAndSelect(true, false, true, true);
+ treeElement.revealAndSelect(true, false, true);
event.preventDefault();
}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -184,7 +184,7 @@
if (wasParentExpanded)
parentTreeElement.expand();
if (wasSelected)
- childTreeElement.revealAndSelect(true, false, true, true);
+ childTreeElement.revealAndSelect(true, false, true);
}
// Protected (ResourceTreeElement calls this when its Resource changes dynamically for Frames)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TreeElement.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TreeElement.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TreeElement.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -498,7 +498,7 @@
this.select(false, true);
}
- select(omitFocus, selectedByUser, suppressOnSelect, suppressOnDeselect)
+ select(omitFocus, selectedByUser, suppressNotification)
{
if (!this.treeOutline || !this.selectable)
return;
@@ -515,11 +515,8 @@
return;
this.selected = true;
- treeOutline.selectTreeElementInternal(this, suppressOnSelect, selectedByUser);
+ treeOutline.selectTreeElementInternal(this, suppressNotification, selectedByUser);
- if (!suppressOnSelect && this.onselect)
- this.onselect(this, selectedByUser);
-
let treeOutlineGroup = WI.TreeOutlineGroup.groupForTreeOutline(treeOutline);
if (!treeOutlineGroup)
return;
@@ -527,23 +524,20 @@
treeOutlineGroup.didSelectTreeElement(this);
}
- revealAndSelect(omitFocus, selectedByUser, suppressOnSelect, suppressOnDeselect)
+ revealAndSelect(omitFocus, selectedByUser, suppressNotification)
{
this.reveal();
- this.select(omitFocus, selectedByUser, suppressOnSelect, suppressOnDeselect);
+ this.select(omitFocus, selectedByUser, suppressNotification);
}
- deselect(suppressOnDeselect)
+ deselect(suppressNotification)
{
if (!this.treeOutline || this.treeOutline.selectedTreeElement !== this || !this.selected)
return false;
this.selected = false;
- this.treeOutline.selectTreeElementInternal(null, suppressOnDeselect);
+ this.treeOutline.selectTreeElementInternal(null, suppressNotification);
- if (!suppressOnDeselect && this.ondeselect)
- this.ondeselect(this);
-
return true;
}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js (238858 => 238859)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js 2018-12-04 18:14:28 UTC (rev 238858)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js 2018-12-04 18:17:16 UTC (rev 238859)
@@ -55,6 +55,7 @@
this._selectable = selectable;
this._cachedNumberOfDescendents = 0;
+ this._previousSelectedTreeElement = null;
this._selectionController = new WI.SelectionController(this);
this._itemWasSelectedByUser = false;
@@ -812,6 +813,17 @@
}
}
+ let selectedTreeElement = this.selectedTreeElement;
+ if (selectedTreeElement !== this._previousSelectedTreeElement) {
+ if (this._previousSelectedTreeElement)
+ this._previousSelectedTreeElement.listItemElement.classList.remove("last-selected");
+
+ this._previousSelectedTreeElement = selectedTreeElement;
+
+ if (this._previousSelectedTreeElement)
+ this._previousSelectedTreeElement.listItemElement.classList.add("last-selected");
+ }
+
this._dispatchSelectionDidChangeEvent();
this._processingSelectionChange = false;