diff --git a/tests/unit/dialog/dialog_tickets.js b/tests/unit/dialog/dialog_tickets.js
index 655f1e445..389a243b3 100644
--- a/tests/unit/dialog/dialog_tickets.js
+++ b/tests/unit/dialog/dialog_tickets.js
@@ -107,17 +107,6 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() {
d1.remove();
});
-test("#6645: Missing element not found check in overlay", function(){
- expect(2);
- var d1 = $('
Dialog 1
').dialog({modal: true}),
- d2 = $('Dialog 2
').dialog({modal: true, close: function(){ d2.remove(); }});
-
- equal($.ui.dialog.overlay.instances.length, 2, 'two overlays created');
- d2.dialog('close');
- equal($.ui.dialog.overlay.instances.length, 1, 'one overlay remains after closing the 2nd overlay');
- d1.add(d2).remove();
-});
-
// TODO merge this with the main destroy test
test("#4980: Destroy should place element back in original DOM position", function(){
expect( 2 );
diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js
index 382008e08..77392cb19 100644
--- a/ui/jquery.ui.dialog.js
+++ b/ui/jquery.ui.dialog.js
@@ -661,13 +661,13 @@ $.widget("ui.dialog", {
if ( !this.options.modal ) {
return;
}
- if ( $.ui.dialog.overlay.instances.length === 0 ) {
+ if ( $.ui.dialog.overlayInstances === 0 ) {
// prevent use of anchors and inputs
// we use a setTimeout in case the overlay is created from an
// event that we're going to be cancelling (see #2804)
setTimeout(function() {
// handle $(el).dialog().dialog('close') (see #4065)
- if ( $.ui.dialog.overlay.instances.length ) {
+ if ( $.ui.dialog.overlayInstances ) {
$( document ).bind( "focusin.dialog-overlay", function( event ) {
if ( !$( event.target ).closest( ".ui-dialog").length ) {
event.preventDefault();
@@ -678,40 +678,27 @@ $.widget("ui.dialog", {
}, 1 );
}
- // reuse old instances due to IE memory leak with alpha transparency (see #5185)
- var $el = this.overlay = ( $.ui.dialog.overlay.oldInstances.pop() || $( "" ).addClass( "ui-widget-overlay ui-front" ) );
-
+ var $el = this.overlay = $( "
" ).addClass( "ui-widget-overlay ui-front" );
$el.appendTo( this.document[ 0 ].body );
-
this._on( $el, {
mousedown: "_keepFocus"
});
-
- $.ui.dialog.overlay.instances.push( $el );
+ $.ui.dialog.overlayInstances += 1;
},
_destroyOverlay: function() {
if ( !this.options.modal ) {
return;
}
- var indexOf = $.inArray( this.overlay, $.ui.dialog.overlay.instances );
-
- if ( indexOf !== -1 ) {
- $.ui.dialog.overlay.oldInstances.push( $.ui.dialog.overlay.instances.splice( indexOf, 1 )[ 0 ] );
- }
-
- if ( $.ui.dialog.overlay.instances.length === 0 ) {
+ $.ui.dialog.overlayInstances -= 1;
+ if ( $.ui.dialog.overlayInstances === 0 ) {
$( [ document, window ] ).unbind( ".dialog-overlay" );
}
-
this.overlay.remove();
}
});
-$.ui.dialog.overlay = {
- instances: [],
- oldInstances: []
-};
+$.ui.dialog.overlayInstances = 0;
// DEPRECATED
if ( $.uiBackCompat !== false ) {