http://trac.tiddlywiki.org/changeset/11273
MartinBudden
2009-11-25 03:42:10 -0800 (Wed, 25 Nov 2009)
77
Ticket #1151
popup placement is incorrect if root element is in scrolled DIV
---------------
U Trunk/core/js/Dom.js
U Trunk/core/js/Popup.js
---------------
Modified: Trunk/core/js/Dom.js
===================================================================
--- Trunk/core/js/Dom.js 2009-11-24 18:29:36 UTC (rev 11272)
+++ Trunk/core/js/Dom.js 2009-11-25 11:42:10 UTC (rev 11273)
@@ -183,6 +183,28 @@
return curtop;
}
+function findScrollOffsetX(obj)
+{
+ var x = 0;
+ while(obj) {
+ if(obj.scrollLeft && obj.nodeName!='HTML')
+ y += obj.scrollLeft;
+ obj = obj.parentNode;
+ }
+ return -x;
+}
+
+function findScrollOffsetY(obj)
+{
+ var y = 0;
+ while(obj) {
+ if(obj.scrollTop && obj.nodeName!='HTML')
+ y += obj.scrollTop;
+ obj = obj.parentNode;
+ }
+ return -y;
+}
+
// Blur a particular element
function blurElement(e)
{
Modified: Trunk/core/js/Popup.js
===================================================================
--- Trunk/core/js/Popup.js 2009-11-24 18:29:36 UTC (rev 11272)
+++ Trunk/core/js/Popup.js 2009-11-25 11:42:10 UTC (rev 11273)
@@ -53,8 +53,8 @@
offset.x = (halign == "right") ? offset.x + root.offsetWidth :
offset.x;
offset.y = (valign == "top") ? offset.y : offset.y +
root.offsetHeight;
}
- var rootLeft = findPosX(root);
- var rootTop = findPosY(root);
+ var rootLeft = findScrollOffsetX(root) + findPosX(root);
+ var rootTop = findScrollOffsetY(root) + findPosY(root);
var popupLeft = rootLeft + offset.x;
var popupTop = rootTop + offset.y;
var winWidth = findWindowWidth();
--
You received this message because you are subscribed to the Google Groups
"TiddlyWikiDev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/tiddlywikidev?hl=en.