Skip to content
Permalink
Browse files

Dialog: Make sure the overlay instance still exists before trying to …

…remove it. Fixes #6645 - Dialog: Missing element not found check in overlay code.
  • Loading branch information...
Jay Merrifield authored and scottgonzalez committed Nov 12, 2010
1 parent 320dfb8 commit dfb35442975a95c91f6c28188fad021714d7098b
Showing with 15 additions and 2 deletions.
  1. +11 −1 tests/unit/dialog/dialog_tickets.js
  2. +4 −1 ui/jquery.ui.dialog.js
@@ -76,6 +76,16 @@ test("#6137: dialog('open') causes form elements to reset on IE7", function() {
equal($('input:checked').val(), 'b', "checkbox b is checked");

d1.add(d2).remove();
})
});

test("#6645: Missing element not found check in overlay", function(){
expect(2);
d1 = $('<div title="dialog 1">Dialog 1</div>').dialog({modal: true});
d2 = $('<div title="dialog 2">Dialog 2</div>').dialog({modal: true, close: function(){ d2.remove()}});
equals($.ui.dialog.overlay.instances.length, 2, 'two overlays created');
d2.dialog('close');
equals($.ui.dialog.overlay.instances.length, 1, 'one overlay remains after closing the 2nd overlay');
d1.add(d2).remove();
});

})(jQuery);
@@ -750,7 +750,10 @@ $.extend($.ui.dialog.overlay, {
},

destroy: function($el) {
this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
var indexOf = $.inArray($el, this.instances);
if (indexOf != -1){
this.oldInstances.push(this.instances.splice(indexOf, 1)[0]);
}

if (this.instances.length === 0) {
$([document, window]).unbind('.dialog-overlay');

0 comments on commit dfb3544

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