Dialog: Move call to _focusTabbable and triggering of open and focus events into the _show callback. Fixes #6756 - Dialog: show: "blind" with link in content doesn't animate properly. Fixes #8051 - Dialog: 'Explode' dialog animation causes crash in IE 6, 7 and 8. Fixes #4421 - Dialog: Focus lost from dialog which uses show-effect

This commit is contained in:
Kris Borchers 2013-01-30 12:30:37 -06:00
parent ceebe07e2c
commit d1505e3434
3 changed files with 47 additions and 4 deletions

View File

@ -24,7 +24,9 @@
"ui/jquery.ui.resizable.js", "ui/jquery.ui.resizable.js",
"ui/jquery.ui.button.js", "ui/jquery.ui.button.js",
"ui/jquery.ui.effect.js", "ui/jquery.ui.effect.js",
"ui/jquery.ui.effect-blind.js",
"ui/jquery.ui.effect-clip.js", "ui/jquery.ui.effect-clip.js",
"ui/jquery.ui.effect-explode.js",
"ui/jquery.ui.dialog.js" "ui/jquery.ui.dialog.js"
] ]
}); });

View File

@ -531,4 +531,44 @@ test("#4826: setting resizable false toggles resizable on dialog", function() {
}); });
asyncTest( "#8051 - 'Explode' dialog animation causes crash in IE 6, 7 and 8", function() {
expect( 1 );
var el = $( "<div></div>" ).dialog({
show: "explode",
focus: function() {
ok( true, "dialog opened with animation" );
el.remove();
start();
}
});
});
asyncTest( "#4421 - Focus lost from dialog which uses show-effect", function() {
expect( 1 );
var el = $( "<div></div>" ).dialog({
show: "blind",
focus: function() {
equal( el.dialog( "widget" ).find( ":focus" ).length, 1, "dialog maintains focus" );
el.remove();
start();
}
});
});
asyncTest( "Open followed by close during show effect", function() {
expect( 1 );
var el = $( "<div></div>" ).dialog({
show: "blind",
close: function() {
ok( true, "dialog closed properly during animation" );
el.remove();
start();
}
});
setTimeout( function() {
el.dialog("close");
}, 100 );
});
})(jQuery); })(jQuery);

View File

@ -207,6 +207,7 @@ $.widget( "ui.dialog", {
}, },
open: function() { open: function() {
var that = this;
if ( this._isOpen ) { if ( this._isOpen ) {
if ( this._moveToTop() ) { if ( this._moveToTop() ) {
this._focusTabbable(); this._focusTabbable();
@ -220,13 +221,13 @@ $.widget( "ui.dialog", {
this._position(); this._position();
this._createOverlay(); this._createOverlay();
this._moveToTop( null, true ); this._moveToTop( null, true );
this._show( this.uiDialog, this.options.show ); this._show( this.uiDialog, this.options.show, function() {
that._focusTabbable();
this._focusTabbable(); that._trigger("focus");
});
this._isOpen = true; this._isOpen = true;
this._trigger("open"); this._trigger("open");
this._trigger("focus");
}, },
_focusTabbable: function() { _focusTabbable: function() {