Skip to content
Permalink
Browse files

updated tests to account for scrollbar width/height

  • Loading branch information
David Murdoch
David Murdoch committed May 26, 2011
1 parent c11ac9c commit cde7cc0e6f5981d74390fa75c2519b935a4d6e0c
Showing with 32 additions and 7 deletions.
  1. +31 −6 tests/unit/position/position_core_within.js
  2. +1 −1 ui/jquery.ui.position.js
@@ -4,6 +4,31 @@ function scrollTopSupport() {
$( window ).scrollTop( 1 );
return $( window ).scrollTop() === 1;
}
function getScrollbarWidth() {
var div = $( "<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>" ),
innerDiv = div.children()[0],
w1, w2;
$( "body" ).append( div );
w1 = innerDiv.offsetWidth;
div.css( "overflow", "scroll" );

w2 = innerDiv.offsetWidth;

if ( w1 === w2 ) {
w2 = div[0].clientWidth;
}

div.remove();

return w1 - w2;
}
function getScrollInfo ( within ) {
var that = within[0],
scrollHeight = within.height() < that.scrollHeight,
scrollWidth = within.width() < that.scrollWidth,
scrollbarWidth = getScrollbarWidth();
return { height : scrollHeight ? scrollbarWidth : 0, width : scrollWidth ? scrollbarWidth : 0 };
};

module( "position - within", {
setup: function(){
@@ -276,7 +301,7 @@ test( "collision: fit, no offset", function() {

collisionTest({
collision: "fit"
}, { top: addTop + within.height() - 10, left: addLeft + within.width() - 10 }, "right bottom" );
}, { top: addTop + within.height() - 10 - getScrollInfo( within ).height, left: addLeft + within.width() - 10 - getScrollInfo( within ).width }, "right bottom" );

collisionTest2({
collision: "fit"
@@ -290,7 +315,7 @@ test( "collision: fit, with offset", function() {
collisionTest({
collision: "fit",
at: "right+2 bottom+3"
}, { top: addTop + within.height() - 10, left: addLeft + within.width() - 10 }, "right bottom");
}, { top: addTop + within.height() - 10 - getScrollInfo( within ).height, left: addLeft + within.width() - 10 - getScrollInfo( within ).width }, "right bottom");

collisionTest2({
collision: "fit",
@@ -315,7 +340,7 @@ test( "collision: fit, within scrolled", function() {
collisionTest2({
collision: "fit",
at: "right+100 bottom+100"
}, { top: addTop + within.height() - 10, left: addLeft + within.width() - 10 }, "right bottom" );
}, { top: addTop + within.height() - 10 - getScrollInfo( within ).height, left: addLeft + within.width() - 10 - getScrollInfo( within ).width }, "right bottom" );
within.scrollTop( 0 ).scrollLeft( 0 );
}
});
@@ -389,7 +414,7 @@ test( "collision: fit, with margin", function() {

collisionTest({
collision: "fit"
}, { top: addTop + within.height() - 20, left: addLeft + within.width() - 20 }, "right bottom" );
}, { top: addTop + within.height() - 20 - getScrollInfo( within ).height, left: addLeft + within.width() - 20 - getScrollInfo( within ).width }, "right bottom" );

collisionTest2({
collision: "fit"
@@ -402,7 +427,7 @@ test( "collision: fit, with margin", function() {

collisionTest({
collision: "fit"
}, { top: addTop + within.height() - 20, left: addLeft + within.width() - 20 }, "right bottom" );
}, { top: addTop + within.height() - 20 - getScrollInfo( within ).height, left: addLeft + within.width() - 20 - getScrollInfo( within ).width }, "right bottom" );

collisionTest2({
collision: "fit"
@@ -415,7 +440,7 @@ test( "collision: fit, with margin", function() {

collisionTest({
collision: "fit"
}, { top: addTop + within.height() - 25, left: addLeft + within.width() - 25 }, "right bottom" );
}, { top: addTop + within.height() - 25 - getScrollInfo( within ).height, left: addLeft + within.width() - 25 - getScrollInfo( within ).width }, "right bottom" );

collisionTest2({
collision: "fit"
@@ -139,7 +139,7 @@ $.fn.position = function( options ) {
basePosition.left += atOffset[ 0 ];
basePosition.top += atOffset[ 1 ];

return this.each(function() { console.log(getScrollInfo( within ));
return this.each(function() {
var elem = $( this ),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),

0 comments on commit cde7cc0

Please sign in to comment.
You can’t perform that action at this time.