Title: [238859] trunk/Source/WebInspectorUI
Revision
238859
Author
mattba...@apple.com
Date
2018-12-04 10:17:16 -0800 (Tue, 04 Dec 2018)

Log Message

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.

Modified Paths

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;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to