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.


Reply via email to