aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2013-02-01 08:59:55 -0500
committerScott González <scott.gonzalez@gmail.com>2013-02-01 08:59:55 -0500
commit7bbda71a32cc4953715ed34eab2ab48c5e736154 (patch)
treeb2739ba5c4712fb87ec4bc75fdd68c2f7cf23736
parent62cda1f95d0e7040153f0b5fe5745d199a0a094e (diff)
downloadjquery-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.html1
-rw-r--r--tests/unit/dialog/dialog_options.js10
-rw-r--r--ui/jquery.ui.dialog.js2
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;
}