Search and Top Navigation
#9043 closed bug (fixed)
Opened February 01, 2013 07:46AM UTC
Closed February 01, 2013 02:00PM UTC
Last modified February 01, 2013 02:00PM UTC
Dialog: Buttonpane shown with no buttons when modifying native prototypes
| Reported by: | mbehm | Owned by: | mbehm | 
|---|---|---|---|
| Priority: | minor | Milestone: | 1.10.1 | 
| Component: | ui.dialog | Version: | 1.10.0 | 
| Keywords: | Cc: | ||
| Blocked by: | Blocking: | 
Description
jQuery 1.10 dialog by default has buttonpane shown even if no button are defined because the buttons options is only checked for empty object and not empty array.
--- orig/jquery.ui.dialog.js    2013-02-01 09:40:42.781304334 +0200
+++ patch/jquery.ui.dialog.js   2013-02-01 09:41:11.587970771 +0200
@@ -396,7 +396,7 @@
                this.uiDialogButtonPane.remove();
                this.uiButtonSet.empty();
 
-               if ( $.isEmptyObject( buttons ) ) {
+               if ( $.isEmptyObject( buttons ) || ($.isArray(buttons) && buttons.length == 0)) {
                        this.uiDialog.removeClass("ui-dialog-buttons");
                        return;
                }
Attachments (0)
Change History (8)
Changed February 01, 2013 01:24PM UTC by comment:1
| owner: | → mbehm | 
|---|---|
| status: | new → pending | 
Changed February 01, 2013 01:44PM UTC by comment:2
| status: | pending → new | 
|---|
Did some more testing and this bug is caused by frameworks like Prototype that extend Array or Object prototype.
Changed February 01, 2013 01:50PM UTC by comment:3
| resolution: | → wontfix | 
|---|---|
| status: | new → closed | 
Changed February 01, 2013 01:52PM UTC by comment:4
| resolution: | wontfix | 
|---|---|
| status: | closed → reopened | 
Actually, the bug must be coming from Array.prototype modification, not Object.prototype, right? I'm fine with this patch.
Changed February 01, 2013 01:53PM UTC by comment:5
| milestone: | none → 1.10.1 | 
|---|---|
| status: | reopened → open | 
| summary: | Dialog buttonpane shown with no buttons → Dialog: Buttonpane shown with no buttons when modifying native prototypes | 
Changed February 01, 2013 01:56PM UTC by comment:6
Actually both of them cause $.isEmptyObject to fail but the default buttons option is array so the patch I provided fixes that.
Changed February 01, 2013 02:00PM UTC by comment:7
| resolution: | → fixed | 
|---|---|
| status: | open → closed | 
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.
Changeset: 7bbda71a32cc4953715ed34eab2ab48c5e736154
Changed February 01, 2013 02:00PM UTC by comment:8
Replying to [comment:6 mbehm]:
Actually both of them cause $.isEmptyObject to fail but the default buttons option is array so the patch I provided fixes that.
Right, but we won't support changes to Object.prototype.
$.isEmptyObject([])returnstrue. Can you please provide a reduced test case showing that this is causing the button pane to be shown?