Skip to content
Permalink
Browse files

Fix #13483. Let slideDown() work after stop(). Close gh-1205.

  • Loading branch information...
ros3cin authored and dmethvin committed Mar 17, 2013
1 parent 2c7b1b8 commit ea5c22ec12e6a548b1ec2d7b0dcd9f71bea8d5dd
Showing with 70 additions and 1 deletion.
  1. +1 −0 AUTHORS.txt
  2. +9 −1 src/effects.js
  3. +60 −0 test/unit/effects.js
@@ -166,3 +166,4 @@ Dmitry Gusev <dmitry.gusev@gmail.com>
Michał Gołębiowski <m.goleb@gmail.com>
Steven Benner <admin@stevenbenner.com>
Li Xudong <istonelee@gmail.com>
Renato Oliveira dos Santos <ros3@cin.ufpe.br>
@@ -304,21 +304,29 @@ function defaultPrefilter( elem, props, opts ) {


// show/hide pass
dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
for ( index in props ) {
value = props[ index ];
if ( rfxtypes.exec( value ) ) {
delete props[ index ];
toggle = toggle || value === "toggle";
if ( value === ( hidden ? "hide" : "show" ) ) {

// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
if( value === "show" && dataShow[ index ] !== undefined ) {
hidden = true;
} else {
continue;
}
}
handled.push( index );
}
}

length = handled.length;
if ( length ) {
if ( !length ) {
dataShow = data_priv.get( elem, "fxshow" ) || data_priv.access( elem, "fxshow", {} );
} else {
if ( "hidden" in dataShow ) {
hidden = dataShow.hidden;
}
@@ -2033,4 +2033,64 @@ test( ".finish() calls finish of custom queue functions", function() {
div.remove();
});

asyncTest( "slideDown() after stop() (#13483)", 2, function() {
var ul = jQuery( "<ul style='height: 100px;display: block'></ul>" ),
origHeight = ul.height();

// First test. slideUp() -> stop() in the middle -> slideDown() until the end
ul.slideUp( 1000 );
setTimeout( function() {
ul.stop( true );
ul.slideDown( 1, function() {
equal( ul.height(), origHeight, "slideDown() after interrupting slideUp() with stop(). Height must be in original value" );

// Second test. slideDown() -> stop() in the middle -> slideDown() until the end
ul.slideUp( 1, function() {
ul.slideDown( 1000 );
setTimeout( function() {
ul.stop( true );
ul.slideDown( 1, function() {
equal( ul.height(), origHeight, "slideDown() after interrupting slideDown() with stop(). Height must be in original value" );

// Cleanup
ul.remove();
start();
});
}, 500 );
});

});
}, 500 );
});

asyncTest( "fadeIn() after stop() (related to #13483)", 2, function() {
var ul = jQuery( "<ul style='height: 100px;display: block; opacity: 1'></ul>" ),
origOpacity = ul.css( "opacity" );

// First test. fadeOut() -> stop() in the middle -> fadeIn() until the end
ul.fadeOut( 1000 );
setTimeout( function() {
ul.stop( true );
ul.fadeIn( 1, function() {
equal( ul.css( "opacity" ), origOpacity, "fadeIn() after interrupting fadeOut() with stop(). Opacity must be in original value" );

// Second test. fadeIn() -> stop() in the middle -> fadeIn() until the end
ul.fadeOut( 1, function() {
ul.fadeIn( 1000 );
setTimeout( function() {
ul.stop( true );
ul.fadeIn( 1, function() {
equal( ul.css("opacity"), origOpacity, "fadeIn() after interrupting fadeIn() with stop(). Opacity must be in original value" );

// Cleanup
ul.remove();
start();
});
}, 500 );
});

});
}, 500 );
});

})();

0 comments on commit ea5c22e

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