Title: [101656] trunk/Source/WebCore
- Revision
- 101656
- Author
- [email protected]
- Date
- 2011-12-01 04:10:48 -0800 (Thu, 01 Dec 2011)
Log Message
Web Inspector: totalOffsetLeft and totalOffsetTop should take scroll into account.
https://bugs.webkit.org/show_bug.cgi?id=73443
Reviewed by Pavel Feldman.
* inspector/front-end/TextPrompt.js:
(WebInspector.TextPrompt.prototype._boxForAnchorAtStart):
(WebInspector.TextPrompt.SuggestBox):
* inspector/front-end/utilities.js:
(Element.prototype.totalOffsetLeft):
(Element.prototype.totalOffsetTop):
(Element.prototype.boxInWindow):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (101655 => 101656)
--- trunk/Source/WebCore/ChangeLog 2011-12-01 12:04:19 UTC (rev 101655)
+++ trunk/Source/WebCore/ChangeLog 2011-12-01 12:10:48 UTC (rev 101656)
@@ -1,3 +1,18 @@
+2011-11-30 Vsevolod Vlasov <[email protected]>
+
+ Web Inspector: totalOffsetLeft and totalOffsetTop should take scroll into account.
+ https://bugs.webkit.org/show_bug.cgi?id=73443
+
+ Reviewed by Pavel Feldman.
+
+ * inspector/front-end/TextPrompt.js:
+ (WebInspector.TextPrompt.prototype._boxForAnchorAtStart):
+ (WebInspector.TextPrompt.SuggestBox):
+ * inspector/front-end/utilities.js:
+ (Element.prototype.totalOffsetLeft):
+ (Element.prototype.totalOffsetTop):
+ (Element.prototype.boxInWindow):
+
2011-12-01 Pavel Feldman <[email protected]>
Web Inspector: query backend for capabilities explicitly.
Modified: trunk/Source/WebCore/inspector/front-end/TextPrompt.js (101655 => 101656)
--- trunk/Source/WebCore/inspector/front-end/TextPrompt.js 2011-12-01 12:04:19 UTC (rev 101655)
+++ trunk/Source/WebCore/inspector/front-end/TextPrompt.js 2011-12-01 12:10:48 UTC (rev 101656)
@@ -374,7 +374,7 @@
var anchorElement = document.createElement("span");
anchorElement.textContent = "\u200B";
textRange.insertNode(anchorElement);
- var box = anchorElement.boxInWindow(window, this._suggestBox._parentElement);
+ var box = anchorElement.boxInWindow(window);
anchorElement.parentElement.removeChild(anchorElement);
selection.removeAllRanges();
selection.addRange(rangeCopy);
@@ -844,7 +844,6 @@
WebInspector.TextPrompt.SuggestBox = function(textPrompt, inputElement, className)
{
this._textPrompt = textPrompt;
- this._parentElement = inputElement.ownerDocument.body;
this._inputElement = inputElement;
this._selectedElement = null;
this._boundOnScroll = this._onscrollresize.bind(this, true);
@@ -852,7 +851,8 @@
window.addEventListener("scroll", this._boundOnScroll, true);
window.addEventListener("resize", this._boundOnResize, true);
- this._element = this._parentElement.createChild("div", "suggest-box " + (className || ""));
+ var bodyElement = inputElement.ownerDocument.body;
+ this._element = bodyElement.createChild("div", "suggest-box " + (className || ""));
this._element.addEventListener("mousedown", this._onboxmousedown.bind(this), true);
this.containerElement = this._element.createChild("div", "container");
this.contentElement = this.containerElement.createChild("div", "content");
Modified: trunk/Source/WebCore/inspector/front-end/utilities.js (101655 => 101656)
--- trunk/Source/WebCore/inspector/front-end/utilities.js 2011-12-01 12:04:19 UTC (rev 101655)
+++ trunk/Source/WebCore/inspector/front-end/utilities.js 2011-12-01 12:10:48 UTC (rev 101656)
@@ -265,19 +265,33 @@
DocumentFragment.prototype.createChild = Element.prototype.createChild;
+/**
+ * @return {number}
+ */
Element.prototype.totalOffsetLeft = function()
{
var total = 0;
- for (var element = this; element; element = element.offsetParent)
- total += element.offsetLeft + (this !== element ? element.clientLeft : 0);
+ for (var element = this; element; element = element.offsetParent) {
+ total += element.offsetLeft
+ if (this !== element)
+ total += element.clientLeft - element.scrollLeft;
+ }
+
return total;
}
+/**
+ * @return {number}
+ */
Element.prototype.totalOffsetTop = function()
{
var total = 0;
- for (var element = this; element; element = element.offsetParent)
- total += element.offsetTop + (this !== element ? element.clientTop : 0);
+ for (var element = this; element; element = element.offsetParent) {
+ total += element.offsetTop
+ if (this !== element)
+ total += element.clientTop - element.scrollTop;
+ }
+
return total;
}
@@ -297,6 +311,7 @@
}
/**
+ * @param {DOMWindow} targetWindow
* @return {AnchorBox}
*/
Element.prototype.offsetRelativeToWindow = function(targetWindow)
@@ -318,33 +333,23 @@
}
/**
+ * @param {DOMWindow} targetWindow
* @return {AnchorBox}
*/
-Element.prototype.boxInWindow = function(targetWindow, relativeParent)
+Element.prototype.boxInWindow = function(targetWindow)
{
targetWindow = targetWindow || this.ownerDocument.defaultView;
- var bodyElement = this.ownerDocument.body;
- relativeParent = relativeParent || bodyElement;
var anchorBox = this.offsetRelativeToWindow(window);
anchorBox.width = this.offsetWidth;
anchorBox.height = this.offsetHeight;
- var anchorElement = this;
- while (anchorElement && anchorElement !== relativeParent && anchorElement !== bodyElement) {
- if (anchorElement.scrollLeft)
- anchorBox.x -= anchorElement.scrollLeft;
- if (anchorElement.scrollTop)
- anchorBox.y -= anchorElement.scrollTop;
- anchorElement = anchorElement.parentElement;
- }
-
- var parentOffset = relativeParent.offsetRelativeToWindow(window);
- anchorBox.x -= parentOffset.x;
- anchorBox.y -= parentOffset.y;
return anchorBox;
}
+/**
+ * @param {string} text
+ */
Element.prototype.setTextAndTitle = function(text)
{
this.textContent = text;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes