Title: [111676] trunk/Source/WebCore
Revision
111676
Author
pfeld...@chromium.org
Date
2012-03-22 05:54:32 -0700 (Thu, 22 Mar 2012)

Log Message

Web Inspector: allow on-hover popover while in edit mode.
https://bugs.webkit.org/show_bug.cgi?id=81898

Reviewed by Vsevolod Vlasov.

This change allows popover while in-edit mode, hides it upon Esc. It also introduces anchorOverride
concept in ObjectPopoverHelper that allows dynamically switching the anchor (say if we want to highlight anchor itself).

* inspector/front-end/DetailedHeapshotView.js:
* inspector/front-end/ElementsPanel.js:
* inspector/front-end/_javascript_SourceFrame.js:
(WebInspector._javascript_SourceFrame.prototype._resolveObjectForPopover.showObjectPopover):
(WebInspector._javascript_SourceFrame.prototype._resolveObjectForPopover):
(WebInspector._javascript_SourceFrame.prototype._onKeyDown):
* inspector/front-end/NetworkPanel.js:
* inspector/front-end/ObjectPopoverHelper.js:
(WebInspector.ObjectPopoverHelper.prototype._showObjectPopover.showObjectPopover.):
(WebInspector.ObjectPopoverHelper.prototype._showObjectPopover):
* inspector/front-end/Popover.js:
(WebInspector.PopoverHelper.prototype.isPopoverVisible):
* inspector/front-end/TimelinePanel.js:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (111675 => 111676)


--- trunk/Source/WebCore/ChangeLog	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/ChangeLog	2012-03-22 12:54:32 UTC (rev 111676)
@@ -1,5 +1,29 @@
 2012-03-22  Pavel Feldman  <pfeld...@chromium.org>
 
+        Web Inspector: allow on-hover popover while in edit mode.
+        https://bugs.webkit.org/show_bug.cgi?id=81898
+
+        Reviewed by Vsevolod Vlasov.
+
+        This change allows popover while in-edit mode, hides it upon Esc. It also introduces anchorOverride
+        concept in ObjectPopoverHelper that allows dynamically switching the anchor (say if we want to highlight anchor itself).
+
+        * inspector/front-end/DetailedHeapshotView.js:
+        * inspector/front-end/ElementsPanel.js:
+        * inspector/front-end/_javascript_SourceFrame.js:
+        (WebInspector._javascript_SourceFrame.prototype._resolveObjectForPopover.showObjectPopover):
+        (WebInspector._javascript_SourceFrame.prototype._resolveObjectForPopover):
+        (WebInspector._javascript_SourceFrame.prototype._onKeyDown):
+        * inspector/front-end/NetworkPanel.js:
+        * inspector/front-end/ObjectPopoverHelper.js:
+        (WebInspector.ObjectPopoverHelper.prototype._showObjectPopover.showObjectPopover.):
+        (WebInspector.ObjectPopoverHelper.prototype._showObjectPopover):
+        * inspector/front-end/Popover.js:
+        (WebInspector.PopoverHelper.prototype.isPopoverVisible):
+        * inspector/front-end/TimelinePanel.js:
+
+2012-03-22  Pavel Feldman  <pfeld...@chromium.org>
+
         Web Inspector: breakpoints should shift when line break is inserted in the middle of the line.
         https://bugs.webkit.org/show_bug.cgi?id=81896
 

Modified: trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/DetailedHeapshotView.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -527,7 +527,7 @@
     this.helpButton = new WebInspector.StatusBarButton("", "heapshot-help-status-bar-item status-bar-item");
     this.helpButton.addEventListener("click", this._helpClicked.bind(this), false);
 
-    this._popoverHelper = new WebInspector.ObjectPopoverHelper(this.element, this._getHoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), null, true);
+    this._popoverHelper = new WebInspector.ObjectPopoverHelper(this.element, this._getHoverAnchor.bind(this), this._resolveObjectForPopover.bind(this), undefined, true);
 
     this._loadProfile(this._profileUid, profileCallback.bind(this));
 

Modified: trunk/Source/WebCore/inspector/front-end/ElementsPanel.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/ElementsPanel.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/ElementsPanel.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -391,6 +391,10 @@
         }
     },
 
+    /**
+     * @param {Element} anchor
+     * @param {WebInspector.Popover} popover
+     */
     _showPopover: function(anchor, popover)
     {
         var listItem = anchor.enclosingNodeOrSelfWithNodeNameInArray(["li"]);

Modified: trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/_javascript_SourceFrame.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -303,10 +303,6 @@
 
     _resolveObjectForPopover: function(element, showCallback, objectGroupName)
     {
-        if (!this.readOnly) {
-            this._popoverHelper.hidePopover();
-            return;
-        }
         this._highlightElement = this._highlightExpression(element);
 
         function showObjectPopover(result, wasThrown)
@@ -315,7 +311,7 @@
                 this._popoverHelper.hidePopover();
                 return;
             }
-            showCallback(WebInspector.RemoteObject.fromPayload(result), wasThrown);
+            showCallback(WebInspector.RemoteObject.fromPayload(result), wasThrown, this._highlightElement);
             // Popover may have been removed by showCallback().
             if (this._highlightElement)
                 this._highlightElement.addStyleClass("source-frame-eval-_expression_");
@@ -419,6 +415,16 @@
         event.preventDefault();
     },
 
+    _onKeyDown: function(event)
+    {
+        if (event.keyIdentifier === "U+001B") { // Escape key
+            if (this._popoverHelper.isPopoverVisible()) {
+                this._popoverHelper.hidePopover();
+                event.consume();
+            }
+        }
+    },
+
     _editBreakpointCondition: function(lineNumber, condition, callback)
     {
         this._conditionElement = this._createConditionElement(lineNumber);

Modified: trunk/Source/WebCore/inspector/front-end/NetworkPanel.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/NetworkPanel.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/NetworkPanel.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -917,6 +917,10 @@
         return resource && resource.timing ? anchor : null;
     },
 
+    /**
+     * @param {Element} anchor
+     * @param {WebInspector.Popover} popover
+     */
     _showPopover: function(anchor, popover)
     {
         var resource = anchor.parentElement.resource;

Modified: trunk/Source/WebCore/inspector/front-end/ObjectPopoverHelper.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/ObjectPopoverHelper.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/ObjectPopoverHelper.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -31,6 +31,11 @@
 /**
  * @constructor
  * @extends {WebInspector.PopoverHelper}
+ * @param {Element} panelElement
+ * @param {function(Element, Event):Element|undefined} getAnchor
+ * @param {function(Element, function(WebInspector.RemoteObject, boolean, Element=):undefined, string):undefined} queryObject
+ * @param {function()=} onHide
+ * @param {boolean=} disableOnClick
  */
 WebInspector.ObjectPopoverHelper = function(panelElement, getAnchor, queryObject, onHide, disableOnClick)
 {
@@ -42,9 +47,18 @@
 };
 
 WebInspector.ObjectPopoverHelper.prototype = {
+    /**
+     * @param {Element} element
+     * @param {WebInspector.Popover} popover
+     */
     _showObjectPopover: function(element, popover)
     {
-        function showObjectPopover(result, wasThrown)
+        /**
+         * @param {WebInspector.RemoteObject} result
+         * @param {boolean} wasThrown
+         * @param {Element=} anchorOverride
+         */
+        function showObjectPopover(result, wasThrown, anchorOverride)
         {
             if (popover.disposed)
                 return;
@@ -52,6 +66,9 @@
                 this.hidePopover();
                 return;
             }
+
+            var anchorElement = anchorOverride || element;
+
             var popoverContentElement = null;
             if (result.type !== "object") {
                 popoverContentElement = document.createElement("span");
@@ -79,14 +96,14 @@
 
                         container.appendChild(popoverContentElement);
 
-                        popover.show(container, element);
+                        popover.show(container, anchorElement);
                     }
                     DebuggerAgent.getFunctionDetails(result.objectId, didGetDetails.bind(this));
                     return;
                 }
                 if (result.type === "string")
                     popoverContentElement.textContent = "\"" + popoverContentElement.textContent + "\"";
-                popover.show(popoverContentElement, element);
+                popover.show(popoverContentElement, anchorElement);
             } else {
                 popoverContentElement = document.createElement("div");
 
@@ -108,7 +125,7 @@
 
                 const popoverWidth = 300;
                 const popoverHeight = 250;
-                popover.show(popoverContentElement, element, popoverWidth, popoverHeight);
+                popover.show(popoverContentElement, anchorElement, popoverWidth, popoverHeight);
             }
         }
         this._queryObject(element, showObjectPopover.bind(this), this._popoverObjectGroup);

Modified: trunk/Source/WebCore/inspector/front-end/Popover.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/Popover.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/Popover.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -190,6 +190,9 @@
 
 /**
  * @constructor
+ * @param {Element} panelElement
+ * @param {function(Element, Event):Element|undefined} getAnchor
+ * @param {function(Element, WebInspector.Popover):undefined} showPopover
  * @param {function()=} onHide
  * @param {boolean=} disableOnClick
  */
@@ -261,6 +264,11 @@
         }
     },
 
+    isPopoverVisible: function()
+    {
+        return !!this._popover;
+    },
+
     hidePopover: function()
     {
         this._resetHoverTimer();

Modified: trunk/Source/WebCore/inspector/front-end/TimelinePanel.js (111675 => 111676)


--- trunk/Source/WebCore/inspector/front-end/TimelinePanel.js	2012-03-22 12:52:35 UTC (rev 111675)
+++ trunk/Source/WebCore/inspector/front-end/TimelinePanel.js	2012-03-22 12:54:32 UTC (rev 111676)
@@ -731,6 +731,10 @@
         }
     },
 
+    /**
+     * @param {Element} anchor
+     * @param {WebInspector.Popover} popover
+     */
     _showPopover: function(anchor, popover)
     {
         var record = anchor.row._record;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to