WebKit Bugzilla
Attachment 356501 Details for
Bug 192119
: Web Inspector: Elements: $0 is shown for all selected elements
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for landing
bug-192119-20181204090045.patch (text/plain), 17.66 KB, created by
Matt Baker
on 2018-12-04 09:00:52 PST
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Matt Baker
Created:
2018-12-04 09:00:52 PST
Size:
17.66 KB
patch
obsolete
>Subversion Revision: 238853 >diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index cac3a7d5b63ac3ec6a5b94616ff3bc084acfb6c6..be6726d254db61ffd7e3a6aa3803dfe10af7d3ef 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,63 @@ >+2018-12-04 Matt Baker <mattbaker@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 Devin Rousso <drousso@apple.com> > > Web Inspector: Audit: tests should support async operations >diff --git a/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js b/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js >index 956fd7e7ade580373ab90603581d076755c359c8..dac1bcdab9958b548c12d2d9951a64efbc36a9dd 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js >+++ b/Source/WebInspectorUI/UserInterface/Views/ContentBrowserTabContentView.js >@@ -317,7 +317,7 @@ WI.ContentBrowserTabContentView = class ContentBrowserTabContentView extends WI. > 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); > } >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js >index ab8678fc2b633b0da39a3a8225545adb833ed79c..326543168e8f24aa0082065969d2c411e3fbc0e7 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeContentView.js >@@ -67,6 +67,7 @@ WI.DOMTreeContentView = class DOMTreeContentView extends WI.ContentView > 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 @@ WI.DOMTreeContentView = class DOMTreeContentView extends WI.ContentView > > layout() > { >- this._domTreeOutline.updateSelection(); >+ this._domTreeOutline.updateSelectionArea(); > > if (this.layoutReason === WI.View.LayoutReason.Resize) > this._domTreeOutline.selectDOMNode(this._domTreeOutline.selectedDOMNode()); >@@ -451,6 +452,22 @@ WI.DOMTreeContentView = class DOMTreeContentView extends WI.ContentView > 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(); >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >index 7c43b347e51a5c8df3aabea7063ac9c98c3ffc50..942b0c7eca9bc4b044492dd451272c798c9b9f33 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >@@ -625,21 +625,6 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > 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) >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >index a7ac3cc77e1348dddd715f6d1444d91b804033c5..1f8d1b758ae84241e27cf5ce3b6de47e4e454d0e 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.css >@@ -78,14 +78,14 @@ > 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; > 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); > } > >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >index 756d1085df93bab9b158d4847ca71ec441837b0d..b3784345d6b3bd81637e64ea0d42748939de4b0c 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >@@ -184,7 +184,7 @@ WI.DOMTreeOutline = class DOMTreeOutline extends WI.TreeOutline > 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. >diff --git a/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js b/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js >index d39ba4488c217d407a48590cdb7db7e4e667efdc..90ab86d2af47e623491f0914596d4bbe66b49e67 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DebuggerSidebarPanel.js >@@ -784,7 +784,7 @@ WI.DebuggerSidebarPanel = class DebuggerSidebarPanel extends WI.NavigationSideba > var newDebuggerTreeElement = this._addDebuggerObject(debuggerObject); > > if (newDebuggerTreeElement && wasSelected) >- newDebuggerTreeElement.revealAndSelect(true, false, true, true); >+ newDebuggerTreeElement.revealAndSelect(true, false, true); > } > > _removeDebuggerTreeElement(debuggerTreeElement) >diff --git a/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js b/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js >index 8eea5ded273d8c479c444106c326f833fd5de8e3..1edad0d82e75f01c8fdd799ecd8f9370f2dae88c 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/FolderizedTreeElement.js >@@ -223,7 +223,7 @@ WI.FolderizedTreeElement = class FolderizedTreeElement extends WI.GeneralTreeEle > this._insertChildTreeElement(parentTreeElement, childTreeElement); > > if (wasSelected) >- childTreeElement.revealAndSelect(true, false, true, true); >+ childTreeElement.revealAndSelect(true, false, true); > } > > _compareTreeElementsByMainTitle(a, b) >diff --git a/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js b/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js >index b6a2cbc3183778defa05cd30cc21302b627c2bae..477480bfc5cc48a97d48879cdf778da571394aae 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js >+++ b/Source/WebInspectorUI/UserInterface/Views/NavigationSidebarPanel.js >@@ -195,7 +195,7 @@ WI.NavigationSidebarPanel = class NavigationSidebarPanel extends WI.SidebarPanel > if (!contentView) > return false; > >- treeElement.revealAndSelect(true, false, true, true); >+ treeElement.revealAndSelect(true, false, true); > return true; > } > >@@ -742,9 +742,8 @@ WI.NavigationSidebarPanel = class NavigationSidebarPanel extends WI.SidebarPanel > > 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); > } > }; > >diff --git a/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js b/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js >index 07eb8980d0a877962c1f047e5061e0f19dbef520..7e606e6723ab1c50905fb9f01fec46c583e72e0a 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js >+++ b/Source/WebInspectorUI/UserInterface/Views/OpenResourceDialog.js >@@ -124,7 +124,7 @@ WI.OpenResourceDialog = class OpenResourceDialog extends WI.Dialog > } > > 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 @@ WI.OpenResourceDialog = class OpenResourceDialog extends WI.Dialog > 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(); > } >diff --git a/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js b/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js >index 31c3c9ccafbecd857e7b40826d4c91cf47da4f5f..cde0ca07229b589912a1c8d513c573a4fb386a44 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/SourceCodeTreeElement.js >@@ -184,7 +184,7 @@ WI.SourceCodeTreeElement = class SourceCodeTreeElement extends WI.FolderizedTree > 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) >diff --git a/Source/WebInspectorUI/UserInterface/Views/TreeElement.js b/Source/WebInspectorUI/UserInterface/Views/TreeElement.js >index 54d8bc00f5f37e9681be8b58258d03c15a182876..5555209a1b4c084ee3c3293114b482a808e2ead9 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/TreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/TreeElement.js >@@ -498,7 +498,7 @@ WI.TreeElement = class TreeElement extends WI.Object > this.select(false, true); > } > >- select(omitFocus, selectedByUser, suppressOnSelect, suppressOnDeselect) >+ select(omitFocus, selectedByUser, suppressNotification) > { > if (!this.treeOutline || !this.selectable) > return; >@@ -515,10 +515,7 @@ WI.TreeElement = class TreeElement extends WI.Object > return; > > this.selected = true; >- treeOutline.selectTreeElementInternal(this, suppressOnSelect, selectedByUser); >- >- if (!suppressOnSelect && this.onselect) >- this.onselect(this, selectedByUser); >+ treeOutline.selectTreeElementInternal(this, suppressNotification, selectedByUser); > > let treeOutlineGroup = WI.TreeOutlineGroup.groupForTreeOutline(treeOutline); > if (!treeOutlineGroup) >@@ -527,22 +524,19 @@ WI.TreeElement = class TreeElement extends WI.Object > 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); >- >- if (!suppressOnDeselect && this.ondeselect) >- this.ondeselect(this); >+ this.treeOutline.selectTreeElementInternal(null, suppressNotification); > > return true; > } >diff --git a/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js b/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js >index a7511d6d55ea50b127e886b2bfd695b46ae4dfe0..96f495717fd340ffb487798750caf6b190ef326d 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js >+++ b/Source/WebInspectorUI/UserInterface/Views/TreeOutline.js >@@ -55,6 +55,7 @@ WI.TreeOutline = class TreeOutline extends WI.Object > this._selectable = selectable; > > this._cachedNumberOfDescendents = 0; >+ this._previousSelectedTreeElement = null; > this._selectionController = new WI.SelectionController(this); > > this._itemWasSelectedByUser = false; >@@ -811,6 +812,17 @@ WI.TreeOutline = class TreeOutline extends WI.Object > } > } > >+ 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;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 192119
:
355934
|
356270
|
356274
|
356280
|
356401
|
356476
|
356495
| 356501