[richfaces-svn-commits] JBoss Rich Faces SVN: r5833 - in trunk: ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts and 1 other directory.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Tue Feb 5 11:45:30 EST 2008


Author: pyaschenko
Date: 2008-02-05 11:45:30 -0500 (Tue, 05 Feb 2008)
New Revision: 5833

Modified:
   trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
   trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
Log:
RF-2079, RF-1764, RF-1673

Modified: trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
===================================================================
--- trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js	2008-02-05 16:42:16 UTC (rev 5832)
+++ trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js	2008-02-05 16:45:30 UTC (rev 5833)
@@ -159,6 +159,7 @@
 	isIE: (!window.opera && /MSIE/.test(navigator.userAgent)),
 	isIE6: (!window.opera && /MSIE\s*[6][\d,\.]+;/.test(navigator.userAgent)),
 	isSafari: /Safari/.test(navigator.userAgent),
+	isOpera: !!window.opera,
 	isObjectEval: (Richfaces.eval!=undefined)
 };
 

Modified: trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js
===================================================================
--- trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js	2008-02-05 16:42:16 UTC (rev 5832)
+++ trunk/ui/calendar/src/main/resources/org/richfaces/renderkit/html/scripts/calendar.js	2008-02-05 16:45:30 UTC (rev 5833)
@@ -35,7 +35,6 @@
 	
 	var windowRect = Richfaces.Calendar.getWindowViewport();
 	
-	
 	// jointPoint
 	var ox=baseOffset[0];
 	var oy=baseOffset[1];
@@ -122,20 +121,45 @@
 	els.position = 'absolute';
 	els.display = '';
 	
-	if (element.offsetParent && element.offsetParent!=document.body)
+	if (!window.opera)
 	{
-		var parentOffset=Position.cumulativeOffset(element.offsetParent);
+   		var parentOffset = element.getOffsetParent().viewportOffset();
 		ox -= parentOffset[0];
 		oy -= parentOffset[1];
+	} else if (element.offsetParent)
+	{
+		// for Opera only
+		if (element.offsetParent!=document.body)
+		{
+			var parentOffset=Position.cumulativeOffset(element.offsetParent);
+			ox -= parentOffset[0];
+			oy -= parentOffset[1];
+			ox += element.offsetParent.scrollLeft;
+			oy += element.offsetParent.scrollTop;
+		} else {
+			var parentOffset = Richfaces.Calendar.cumulativeScrollOffset(element);
+			ox += parentOffset[0];
+			oy += parentOffset[1];
+		}
 	}
 
 	els.display = originalDisplay;
 	els.position = originalPosition;
 	els.visibility = originalVisibility;
-	element.style.left = (ox + windowRect.left) + 'px';
-	element.style.top = (oy + windowRect.top) + 'px';
+	element.style.left = ox + 'px';
+	element.style.top = oy + 'px';
 };
 
+Richfaces.Calendar.cumulativeScrollOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element && element != document.body);
+    return Element._returnOffset(valueL, valueT);
+};
+
 Richfaces.Calendar.getOffsetDimensions = function(element) {
 	// from prototype 1.5.0 // Pavel Yascenko
     element = $(element);
@@ -1111,7 +1135,8 @@
 			
 			var offsetDimBase = Richfaces.Calendar.getOffsetDimensions(base);
 			var offsetDimButton = Richfaces.Calendar.getOffsetDimensions(baseButton);
-			var offsetTemp = Position.realOffset(baseButton);
+			var offsetTemp = (window.opera ? [0,0] : Position.realOffset(baseButton));
+			//alert("offsetBase:"+offsetBase+" offsetTemp:"+offsetTemp+' scrollTop:'+baseButton.offsetParent.scrollTop+" offsetParent:"+baseButton.offsetParent);
 			var o = {left: offsetBase[0]-offsetTemp[0],
 					 top: offsetBase[1]-offsetTemp[1],
 					 width: offsetDimBase.width,




More information about the richfaces-svn-commits mailing list