diff options
author | Scott González <scott.gonzalez@gmail.com> | 2013-02-01 08:59:55 -0500 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2013-02-01 08:59:55 -0500 |
commit | 7bbda71a32cc4953715ed34eab2ab48c5e736154 (patch) | |
tree | b2739ba5c4712fb87ec4bc75fdd68c2f7cf23736 | |
parent | 62cda1f95d0e7040153f0b5fe5745d199a0a094e (diff) | |
download | jquery-ui-7bbda71a32cc4953715ed34eab2ab48c5e736154.tar.gz jquery-ui-7bbda71a32cc4953715ed34eab2ab48c5e736154.zip |
Dialog: Check for empty array in addition to empty object when checking if there are buttons. Fixes #9043 - Dialog: Buttonpane shown with no buttons when modifying native prototypes.
-rw-r--r-- | demos/dialog/default.html | 1 | ||||
-rw-r--r-- | tests/unit/dialog/dialog_options.js | 10 | ||||
-rw-r--r-- | ui/jquery.ui.dialog.js | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/demos/dialog/default.html b/demos/dialog/default.html index e781e18f8..98f248b81 100644 --- a/demos/dialog/default.html +++ b/demos/dialog/default.html @@ -16,6 +16,7 @@ <link rel="stylesheet" href="../demos.css"> <script> $(function() { + Array.prototype.test = $.noop; $( "#dialog" ).dialog(); }); </script> diff --git a/tests/unit/dialog/dialog_options.js b/tests/unit/dialog/dialog_options.js index a295b904d..07c2d6860 100644 --- a/tests/unit/dialog/dialog_options.js +++ b/tests/unit/dialog/dialog_options.js @@ -174,6 +174,16 @@ test("buttons - advanced", function() { element.remove(); }); +test("#9043: buttons with Array.prototype modification", function() { + expect( 1 ); + Array.prototype.test = $.noop; + var element = $( "<div></div>" ).dialog(); + equal( element.dialog( "widget" ).find( ".ui-dialog-buttonpane" ).length, 0, + "no button pane" ); + element.remove(); + delete Array.prototype.test; +}); + test("closeOnEscape", function() { expect( 6 ); var element = $("<div></div>").dialog({ closeOnEscape: false }); diff --git a/ui/jquery.ui.dialog.js b/ui/jquery.ui.dialog.js index b6ac7aed7..cb62155e5 100644 --- a/ui/jquery.ui.dialog.js +++ b/ui/jquery.ui.dialog.js @@ -396,7 +396,7 @@ $.widget( "ui.dialog", { this.uiDialogButtonPane.remove(); this.uiButtonSet.empty(); - if ( $.isEmptyObject( buttons ) ) { + if ( $.isEmptyObject( buttons ) || ($.isArray( buttons ) && !buttons.length) ) { this.uiDialog.removeClass("ui-dialog-buttons"); return; } |