Commit 34863650 authored by timmywil's avatar timmywil

Animation callbacks keep their place in the queue stack. Fixes #9220.

parent 0f81cf89
...@@ -330,15 +330,15 @@ jQuery.extend({ ...@@ -330,15 +330,15 @@ jQuery.extend({
// Queueing // Queueing
opt.old = opt.complete; opt.old = opt.complete;
opt.complete = function( noUnmark ) { opt.complete = function( noUnmark ) {
if ( jQuery.isFunction( opt.old ) ) {
opt.old.call( this );
}
if ( opt.queue !== false ) { if ( opt.queue !== false ) {
jQuery.dequeue( this ); jQuery.dequeue( this );
} else if ( noUnmark !== false ) { } else if ( noUnmark !== false ) {
jQuery._unmark( this ); jQuery._unmark( this );
} }
if ( jQuery.isFunction( opt.old ) ) {
opt.old.call( this );
}
}; };
return opt; return opt;
......
...@@ -107,7 +107,31 @@ test("queue() passes in the next item in the queue as a parameter to fx queues", ...@@ -107,7 +107,31 @@ test("queue() passes in the next item in the queue as a parameter to fx queues",
equals(counter, 2, "Deferreds resolved"); equals(counter, 2, "Deferreds resolved");
start(); start();
}); });
});
test("callbacks keep their place in the queue", function() {
expect(5);
stop();
var div = jQuery("<div>"),
counter = 0;
div.queue(function( next ) {
equal( ++counter, 1, "Queue/callback order: first called" );
setTimeout( next, 200 );
}).show(100, function() {
equal( ++counter, 2, "Queue/callback order: second called" );
jQuery(this).hide(100, function() {
equal( ++counter, 4, "Queue/callback order: fourth called" );
});
}).queue(function( next ) {
equal( ++counter, 3, "Queue/callback order: third called" );
next();
});
div.promise("fx").done(function() {
equals(counter, 4, "Deferreds resolved");
start();
});
}); });
test("delay()", function() { test("delay()", function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment