Dialog: Fixed #3220: Non-resizable dialogs shouldn't instantiate resizables.

This commit is contained in:
Scott González 2008-09-14 14:47:06 +00:00
parent 7e9dcd21de
commit 8bd855a162

View File

@ -34,9 +34,6 @@ $.widget("ui.dialog", {
var self = this, var self = this,
options = this.options, options = this.options,
resizeHandles = typeof options.resizable == 'string'
? options.resizable
: 'n,e,s,w,se,sw,ne,nw',
uiDialogContent = this.element uiDialogContent = this.element
.removeAttr('title') .removeAttr('title')
@ -134,30 +131,7 @@ $.widget("ui.dialog", {
(options.draggable || uiDialog.draggable('disable')); (options.draggable || uiDialog.draggable('disable'));
} }
if ($.fn.resizable) { (options.resizable && $.fn.resizable && this._makeResizable());
uiDialog.resizable({
cancel: '.ui-dialog-content',
helper: options.resizeHelper,
maxWidth: options.maxWidth,
maxHeight: options.maxHeight,
minWidth: options.minWidth,
minHeight: options.minHeight,
start: function() {
(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
},
resize: function() {
(options.autoResize && self._size.apply(self));
(options.resize && options.resize.apply(self.element[0], arguments));
},
handles: resizeHandles,
stop: function() {
(options.autoResize && self._size.apply(self));
(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
$.ui.dialog.overlay.resize();
}
});
(options.resizable || uiDialog.resizable('disable'));
}
this._createButtons(options.buttons); this._createButtons(options.buttons);
this._isOpen = false; this._isOpen = false;
@ -166,6 +140,37 @@ $.widget("ui.dialog", {
(options.autoOpen && this.open()); (options.autoOpen && this.open());
}, },
_makeResizable: function(handles) {
handles = (handles === undefined ? this.options.resizable : handles);
var self = this,
options = this.options,
resizeHandles = typeof handles == 'string'
? handles
: 'n,e,s,w,se,sw,ne,nw';
this.uiDialog.resizable({
cancel: '.ui-dialog-content',
helper: options.resizeHelper,
maxWidth: options.maxWidth,
maxHeight: options.maxHeight,
minWidth: options.minWidth,
minHeight: options.minHeight,
start: function() {
(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));
},
resize: function() {
(options.autoResize && self._size.apply(self));
(options.resize && options.resize.apply(self.element[0], arguments));
},
handles: resizeHandles,
stop: function() {
(options.autoResize && self._size.apply(self));
(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));
$.ui.dialog.overlay.resize();
}
});
},
_setData: function(key, value){ _setData: function(key, value){
(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value)); (setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
switch (key) { switch (key) {
@ -182,8 +187,19 @@ $.widget("ui.dialog", {
this._position(value); this._position(value);
break; break;
case "resizable": case "resizable":
(typeof value == 'string' && this.uiDialog.data('handles.resizable', value)); var uiDialog = this.uiDialog,
this.uiDialog.resizable(value ? 'enable' : 'disable'); isResizable = this.uiDialog.is(':data(resizable)');
// currently resizable, becoming non-resizable
(isResizable && !value && uiDialog.resizable('destroy'));
// currently resizable, changing handles
(isResizable && typeof value == 'string' &&
uiDialog.resizable('option', 'handles', value));
// currently non-resizable, becoming resizable
(isResizable || this._makeResizable(value));
break; break;
case "title": case "title":
$(".ui-dialog-title", this.uiDialogTitlebar).html(value || ' '); $(".ui-dialog-title", this.uiDialogTitlebar).html(value || ' ');