From: kborchers Date: Wed, 4 Apr 2012 02:08:34 +0000 (-0500) Subject: Position: Fixed issue with offsets using the within option which caused flips to... X-Git-Tag: 1.9.0m8~151^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F626%2Fhead;p=jquery-ui.git Position: Fixed issue with offsets using the within option which caused flips to not happen when the containing element had been scrolled. --- diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index 7fe31626d..538daed26 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -317,9 +317,10 @@ $.ui.position = { isWindow = $.isWindow( data.within[0] ), withinOffset = ( isWindow ? 0 : within.offset().left ) + within.scrollLeft(), outerWidth = isWindow ? within.width() : within.outerWidth(), + offsetLeft = isWindow ? 0 : within.offset().left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - withinOffset, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, left = data.my[ 0 ] === "left", myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : @@ -343,7 +344,7 @@ $.ui.position = { } } else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - withinOffset; + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || Math.abs( newOverLeft ) < overRight ) { data.elem .addClass( "ui-flipped-left" ); @@ -365,9 +366,10 @@ $.ui.position = { isWindow = $.isWindow( data.within[0] ), withinOffset = ( isWindow ? 0 : within.offset().top ) + within.scrollTop(), outerHeight = isWindow ? within.height() : within.outerHeight(), + offsetTop = isWindow ? 0 : within.offset().top, collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - withinOffset, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : @@ -390,7 +392,7 @@ $.ui.position = { } } else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - withinOffset; + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( ( position.top + myOffset + atOffset + offset) > overBottom && ( newOverTop > 0 || Math.abs( newOverTop ) < overBottom ) ) { data.elem .addClass( "ui-flipped-top" );