Modified: trunk/Source/WebInspectorUI/ChangeLog (212426 => 212427)
--- trunk/Source/WebInspectorUI/ChangeLog 2017-02-16 09:58:06 UTC (rev 212426)
+++ trunk/Source/WebInspectorUI/ChangeLog 2017-02-16 10:17:59 UTC (rev 212427)
@@ -1,3 +1,23 @@
+2017-02-16 Devin Rousso <dcrousso+web...@gmail.com>
+
+ Web Inspector: popovers shouldn't be dismissed when Web Inspector window is dragged
+ https://bugs.webkit.org/show_bug.cgi?id=166935
+
+ Reviewed by Joseph Pecoraro.
+
+ * UserInterface/Base/Main.js:
+ (WebInspector.contentLoaded):
+ (WebInspector._mouseDown): Created.
+ (WebInspector._dockedResizerMouseDown):
+ (WebInspector._moveWindowMouseDown):
+ Applies Popover.EventPreventDismissSymbol whenever a mousedown event is fired for an element
+ that controls the positioning or size of the WebInspector window.
+
+ * UserInterface/Views/Popover.js:
+ (WebInspector.Popover.prototype._handleEvent):
+ (WebInspector.Popover.EventPreventDismissSymbol):
+ Do not dismiss the popover if Popover.EventPreventDismissSymbol is applied to the event.
+
2017-02-15 Devin Rousso <dcrousso+web...@gmail.com>
Web Inspector: Request headers when copied & pasted should follow HTTP format, colon instead of tab
Modified: trunk/Source/WebInspectorUI/UserInterface/Base/Main.js (212426 => 212427)
--- trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2017-02-16 09:58:06 UTC (rev 212426)
+++ trunk/Source/WebInspectorUI/UserInterface/Base/Main.js 2017-02-16 10:17:59 UTC (rev 212427)
@@ -217,6 +217,7 @@
window.addEventListener("resize", this._windowResized.bind(this));
window.addEventListener("keydown", this._windowKeyDown.bind(this));
window.addEventListener("keyup", this._windowKeyUp.bind(this));
+ window.addEventListener("mousedown", this._mouseDown.bind(this), true);
window.addEventListener("mousemove", this._mouseMoved.bind(this), true);
window.addEventListener("pagehide", this._pageHidden.bind(this));
window.addEventListener("contextmenu", this._contextMenuRequested.bind(this));
@@ -347,12 +348,15 @@
this._closeToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this.close, this);
this._undockToolbarButton = new WebInspector.ButtonToolbarItem("undock", WebInspector.UIString("Detach into separate window"), null, "Images/Undock.svg");
+ this._undockToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
this._undockToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._undock, this);
this._dockRightToolbarButton = new WebInspector.ButtonToolbarItem("dock-right", WebInspector.UIString("Dock to right of window"), null, "Images/DockRight.svg");
+ this._dockRightToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
this._dockRightToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._dockRight, this);
this._dockBottomToolbarButton = new WebInspector.ButtonToolbarItem("dock-bottom", WebInspector.UIString("Dock to bottom of window"), null, "Images/DockBottom.svg");
+ this._dockBottomToolbarButton.element.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
this._dockBottomToolbarButton.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._dockBottom, this);
this._togglePreviousDockConfigurationKeyboardShortcut = new WebInspector.KeyboardShortcut(WebInspector.KeyboardShortcut.Modifier.CommandOrControl | WebInspector.KeyboardShortcut.Modifier.Shift, "D", this._togglePreviousDockConfiguration.bind(this));
@@ -415,8 +419,9 @@
this.modifierKeys = {altKey: false, metaKey: false, shiftKey: false};
- this.toolbar.element.addEventListener("mousedown", this._toolbarMouseDown.bind(this));
- document.getElementById("docked-resizer").addEventListener("mousedown", this._dockedResizerMouseDown.bind(this));
+ let dockedResizerElement = document.getElementById("docked-resizer");
+ dockedResizerElement.classList.add(WebInspector.Popover.IgnoreAutoDismissClassName);
+ dockedResizerElement.addEventListener("mousedown", this._dockedResizerMouseDown.bind(this));
this._dockingAvailable = false;
@@ -1486,6 +1491,12 @@
this._updateModifierKeys(event);
};
+WebInspector._mouseDown = function(event)
+{
+ if (this.toolbar.element.isSelfOrAncestor(event.target))
+ this._toolbarMouseDown(event);
+};
+
WebInspector._mouseMoved = function(event)
{
this._updateModifierKeys(event);
@@ -1713,6 +1724,8 @@
!event.target.classList.contains("flexible-space") && !event.target.classList.contains("item-section"))
return;
+ event[WebInspector.Popover.EventPreventDismissSymbol] = true;
+
let windowProperty = this._dockConfiguration === WebInspector.DockConfiguration.Bottom ? "innerHeight" : "innerWidth";
let eventScreenProperty = this._dockConfiguration === WebInspector.DockConfiguration.Bottom ? "screenY" : "screenX";
let eventClientProperty = this._dockConfiguration === WebInspector.DockConfiguration.Bottom ? "clientY" : "clientX";
@@ -1776,6 +1789,8 @@
!event.target.classList.contains("item-section"))
return;
+ event[WebInspector.Popover.EventPreventDismissSymbol] = true;
+
if (WebInspector.Platform.name === "mac") {
// New Mac releases can start a window drag.
if (WebInspector.Platform.version.release >= 11) {
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/Popover.js (212426 => 212427)
--- trunk/Source/WebInspectorUI/UserInterface/Views/Popover.js 2017-02-16 09:58:06 UTC (rev 212426)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/Popover.js 2017-02-16 10:17:59 UTC (rev 212427)
@@ -167,8 +167,10 @@
switch (event.type) {
case "mousedown":
case "scroll":
- if (!this._element.contains(event.target) && !event.target.enclosingNodeOrSelfWithClass(WebInspector.Popover.IgnoreAutoDismissClassName))
+ if (!this._element.contains(event.target) && !event.target.enclosingNodeOrSelfWithClass(WebInspector.Popover.IgnoreAutoDismissClassName)
+ && !event[WebInspector.Popover.EventPreventDismissSymbol]) {
this.dismiss();
+ }
break;
case "resize":
if (this._resizeHandler)
@@ -598,3 +600,4 @@
WebInspector.Popover.AnchorSize = new WebInspector.Size(22, 11);
WebInspector.Popover.ShadowEdgeInsets = new WebInspector.EdgeInsets(WebInspector.Popover.ShadowPadding);
WebInspector.Popover.IgnoreAutoDismissClassName = "popover-ignore-auto-dismiss";
+WebInspector.Popover.EventPreventDismissSymbol = Symbol("popover-event-prevent-dismiss");