]> source.dussan.org Git - jquery-ui.git/commitdiff
Resizable: use css() instead of position() for absolute placement. Fixes #3815 -...
authorMike Sherov <mike.sherov@gmail.com>
Sat, 17 Nov 2012 06:29:39 +0000 (01:29 -0500)
committerMike Sherov <mike.sherov@gmail.com>
Sat, 17 Nov 2012 06:29:39 +0000 (01:29 -0500)
tests/unit/resizable/resizable_core.js
ui/jquery.ui.resizable.js

index 447499f0582c70daded6158f268a399b7aab0c36..13da26ece551c73fff6c8df3060049c33daa8a89 100644 (file)
@@ -162,7 +162,7 @@ test("handle with complex markup (#8756)", function() {
                );
 
        var handle = '.ui-resizable-w div', target = $('#resizable1').resizable({ handles: 'all' });
-       
+
        TestHelpers.resizable.drag(handle, -50);
        equal( target.width(), 150, "compare width" );
 
@@ -170,4 +170,25 @@ test("handle with complex markup (#8756)", function() {
        equal( target.width(), 100, "compare width" );
 });
 
+test("resizable accounts for scroll position correctly (#3815)", function() {
+       expect( 3 );
+
+       var position, top, left,
+               container = $("<div style='overflow:scroll;height:300px;width:300px;position:relative;'></div>").appendTo("#qunit-fixture"),
+               overflowed = $("<div style='width: 1000px; height: 1000px;'></div>").appendTo( container ),
+               el = $("<div style='height:100px;width:100px;position:absolute;top:10px;left:10px;'></div>").appendTo( overflowed ).resizable({ handles: 'all' }),
+               handle = ".ui-resizable-e";
+
+       container.scrollLeft( 100 ).scrollTop( 100 );
+
+       position = el.position();
+       left = el.css("left");
+       top = el.css("top");
+
+       TestHelpers.resizable.drag(handle, 50, 50);
+       deepEqual( el.position(), position, "position stays the same when resized" );
+       equal( el.css("left"), left, "css('left') stays the same when resized" );
+       equal( el.css("top"), top, "css('top') stays the same when resized" );
+});
+
 })(jQuery);
index 50cc19e47576616abd42230fe31f30949ffe01ff..41f3c03c09f1d00621e69f959dbb5972668877ee 100644 (file)
@@ -266,10 +266,11 @@ $.widget("ui.resizable", $.ui.mouse, {
                        el = this.element;
 
                this.resizing = true;
-               this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };
 
                // bugfix for http://dev.jquery.com/ticket/1749
-               if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
+               if ( (/absolute/).test( el.css('position') ) ) {
+                       el.css({ position: 'absolute', top: el.css('top'), left: el.css('left') });
+               } else if (el.is('.ui-draggable')) {
                        el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
                }