WebKit Bugzilla
Attachment 357019 Details for
Bug 192116
: Web Inspector: REGRESSION(r238602): Elements: deleting multiple DOM nodes doesn't select the nearest node after deletion
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-192116-20181210165032.patch (text/plain), 4.75 KB, created by
Matt Baker
on 2018-12-10 16:50:45 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Matt Baker
Created:
2018-12-10 16:50:45 PST
Size:
4.75 KB
patch
obsolete
>Subversion Revision: 239035 >diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index f1ab8c44ad9f123f39892b28cc57f4abfe444063..2c72f70966128f9e57d6718d1df362bd59bba59f 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,26 @@ >+2018-12-10 Matt Baker <mattbaker@apple.com> >+ >+ Web Inspector: REGRESSION(r238602): Elements: deleting multiple DOM nodes doesn't select the nearest node after deletion >+ https://bugs.webkit.org/show_bug.cgi?id=192116 >+ <rdar://problem/46344339> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UserInterface/Views/DOMTreeElement.js: >+ (WI.DOMTreeElement.prototype._populateNodeContextMenu): >+ (WI.DOMTreeElement.prototype.ondelete): Deleted. >+ The menu item for removing the DOM node is now managed by the parent >+ DOMTreeOutline, since its UI and behavior now depend on whether there >+ are multiple elements selected. >+ >+ * UserInterface/Views/DOMTreeOutline.js: >+ (WI.DOMTreeOutline): >+ (WI.DOMTreeOutline.prototype.populateContextMenu): >+ (WI.DOMTreeOutline.prototype.ondelete.hasNoSelectedAncestors): >+ (WI.DOMTreeOutline.prototype.ondelete): >+ Implement `ondelete` to remove selected DOM nodes using the delete and >+ backspace keys. Also used by the DOMTreeOutline's context menu handler. >+ > 2018-12-06 Matt Baker <mattbaker@apple.com> > > Web Inspector: Table selection becomes corrupted when deleting selected cookies >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >index 942b0c7eca9bc4b044492dd451272c798c9b9f33..d5d0fafe5e5fcda3ba94eaad3df385049e2c60fe 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeElement.js >@@ -625,19 +625,6 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > listItemElement.classList.add(WI.DOMTreeElement.HighlightStyleClassName); > } > >- ondelete() >- { >- if (!this.editable) >- return false; >- >- var startTagTreeElement = this.treeOutline.findTreeElement(this.representedObject); >- if (startTagTreeElement) >- startTagTreeElement.remove(); >- else >- this.remove(); >- return true; >- } >- > onenter() > { > if (!this.editable) >@@ -808,7 +795,9 @@ WI.DOMTreeElement = class DOMTreeElement extends WI.TreeElement > > subMenus.edit.appendItem(WI.UIString("HTML"), this._editAsHTML.bind(this), !this.editable); > subMenus.copy.appendItem(WI.UIString("HTML"), this._copyHTML.bind(this), node.isPseudoElement()); >- subMenus.delete.appendItem(WI.UIString("Node"), this.remove.bind(this), !this.editable); >+ >+ if (!this.selected || this.treeOutline.selectedTreeElements.length === 1) >+ subMenus.delete.appendItem(WI.UIString("Node"), this.remove.bind(this), !this.editable); > > for (let subMenu of Object.values(subMenus)) > contextMenu.pushItem(subMenu); >diff --git a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >index b3784345d6b3bd81637e64ea0d42748939de4b0c..539f1d4702e2902cc1a12405bf1a64faee6a74ec 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >+++ b/Source/WebInspectorUI/UserInterface/Views/DOMTreeOutline.js >@@ -250,6 +250,9 @@ WI.DOMTreeOutline = class DOMTreeOutline extends WI.TreeOutline > delete: new WI.ContextSubMenuItem(contextMenu, WI.UIString("Delete")), > }; > >+ if (treeElement.selected && this.selectedTreeElements.length > 1) >+ subMenus.delete.appendItem(WI.UIString("Nodes"), () => { this.ondelete(); }, !this._editable); >+ > if (tag && treeElement._populateTagContextMenu) > treeElement._populateTagContextMenu(contextMenu, event, subMenus); > else if (textNode && treeElement._populateTextContextMenu) >@@ -500,6 +503,29 @@ WI.DOMTreeOutline = class DOMTreeOutline extends WI.TreeOutline > > this.selectedTreeElement.toggleElementVisibility(); > } >+ >+ ondelete() >+ { >+ if (!this._editable) >+ return false; >+ >+ function hasNoSelectedAncestors(treeElement) { >+ while (treeElement = treeElement.parent) { >+ if (treeElement.selected) >+ return false; >+ } >+ return true; >+ } >+ >+ let selectedTreeElements = this.selectedTreeElements.filter(hasNoSelectedAncestors); >+ >+ this._selectionController.removeSelectedItems(); >+ >+ for (let treeElement of selectedTreeElements) >+ treeElement.remove(); >+ >+ return true; >+ } > }; > > WI.DOMTreeOutline.Event = {
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 192116
:
357019
|
357212
|
357248
|
357249