Dialog: Set the _isOpen flag immediately in open(). Fixes #8958 - Dialog: Double ui-widget-overlay when opening modal dialog triggers an event opening same dialog.

This commit is contained in:
Scott González 2013-01-31 17:20:19 -05:00
parent 85dfcdf766
commit 62cda1f95d
2 changed files with 30 additions and 1 deletions

View File

@ -193,6 +193,35 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() {
d1.remove();
});
asyncTest( "#8958: dialog can be opened while opening", function() {
expect( 1 );
var element = $( "<div>" ).dialog({
autoOpen: false,
modal: true,
open: function() {
equal( $( ".ui-widget-overlay" ).length, 1 );
start();
}
});
$( "#favorite-animal" )
// We focus the input to start the test. Once it receives focus, the
// dialog will open. Opening the dialog, will cause an element inside
// the dialog to gain focus, thus blurring the input.
.bind( "focus", function() {
element.dialog( "open" );
})
// When the input blurs, the dialog is in the process of opening. We
// try to open the dialog again, to make sure that dialogs properly
// handle a call to the open() method during the process of the dialog
// being opened.
.bind( "blur", function() {
element.dialog( "open" );
})
.focus();
});
test("#5531: dialog width should be at least minWidth on creation", function () {
expect( 4 );
var element = $("<div></div>").dialog({

View File

@ -215,6 +215,7 @@ $.widget( "ui.dialog", {
return;
}
this._isOpen = true;
this.opener = $( this.document[0].activeElement );
this._size();
@ -226,7 +227,6 @@ $.widget( "ui.dialog", {
that._trigger("focus");
});
this._isOpen = true;
this._trigger("open");
},