https://bugs.webkit.org/show_bug.cgi?id=120804
Patch by Joseph Pecoraro <pecoraro@apple.com> on 2013-09-05
Reviewed by Timothy Hatcher.
Grab the bounding rect immediately, instead of grabbing it from the element
after the user has selected the "Edit Breakpoint" context menu item. When
the popover was misplaced it was when using an element had been removed or
replaced in the DOM, and caused a bogus bounding client rect.
* UserInterface/Breakpoint.js:
(WebInspector.Breakpoint.prototype.editBreakpoint):
(WebInspector.Breakpoint.prototype._showEditBreakpointPopover):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@155165
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2013-09-05 Joseph Pecoraro <pecoraro@apple.com>
+
+ Web Inspector: Edit Breakpoint popover sometimes appears misplaced in top left
+ https://bugs.webkit.org/show_bug.cgi?id=120804
+
+ Reviewed by Timothy Hatcher.
+
+ Grab the bounding rect immediately, instead of grabbing it from the element
+ after the user has selected the "Edit Breakpoint" context menu item. When
+ the popover was misplaced it was when using an element had been removed or
+ replaced in the DOM, and caused a bogus bounding client rect.
+
+ * UserInterface/Breakpoint.js:
+ (WebInspector.Breakpoint.prototype.editBreakpoint):
+ (WebInspector.Breakpoint.prototype._showEditBreakpointPopover):
+
2013-09-05 Joseph Pecoraro <pecoraro@apple.com>
Web Inspector: Remove harmless assert, triggered hitting breakpoint in auto prettyprinted code on reload
appendContextMenuItems: function(contextMenu, breakpointDisplayElement)
{
+ console.assert(document.body.contains(breakpointDisplayElement), "breakpoint popover display element must be in the DOM");
+
+ var boundingClientRect = breakpointDisplayElement.getBoundingClientRect();
+
function editBreakpoint()
{
- this._showEditBreakpointPopover(breakpointDisplayElement);
+ this._showEditBreakpointPopover(boundingClientRect);
}
function removeBreakpoint()
delete this._popover;
},
- _showEditBreakpointPopover: function(element)
+ _showEditBreakpointPopover: function(boundingClientRect)
{
const padding = 2;
- var bounds = WebInspector.Rect.rectFromClientRect(element.getBoundingClientRect());
+ var bounds = WebInspector.Rect.rectFromClientRect(boundingClientRect);
+
bounds.origin.x -= 1; // Move the anchor left one pixel so it looks more centered.
bounds.origin.x -= padding;
bounds.origin.y -= padding;