Title: [212427] trunk/Source/WebInspectorUI
Revision
212427
Author
commit-qu...@webkit.org
Date
2017-02-16 02:17:59 -0800 (Thu, 16 Feb 2017)

Log Message

Web Inspector: popovers shouldn't be dismissed when Web Inspector window is dragged
https://bugs.webkit.org/show_bug.cgi?id=166935

Patch by Devin Rousso <dcrousso+web...@gmail.com> on 2017-02-16
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.

Modified Paths

Diff

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

Reply via email to