Dialog: Respect maxHeight when determining size on open. Fixes #4820 - Dialog: Auto height does not respect the maxHeight option.

This commit is contained in:
Scott González 2012-12-07 16:57:03 -05:00
parent 70b16ef445
commit d4551bc3b8
2 changed files with 12 additions and 7 deletions

View File

@ -10,8 +10,8 @@ TestHelpers.commonWidgetTests( "dialog", {
draggable: true,
height: 'auto',
hide: null,
maxHeight: false,
maxWidth: false,
maxHeight: null,
maxWidth: null,
minHeight: 150,
minWidth: 150,
modal: false,

View File

@ -48,8 +48,8 @@ $.widget("ui.dialog", {
draggable: true,
hide: null,
height: "auto",
maxHeight: false,
maxWidth: false,
maxHeight: null,
maxWidth: null,
minHeight: 150,
minWidth: 150,
modal: false,
@ -89,6 +89,7 @@ $.widget("ui.dialog", {
display: this.element[0].style.display,
width: this.element[0].style.width,
minHeight: this.element[0].style.minHeight,
maxHeight: this.element[0].style.maxHeight,
height: this.element[0].style.height
};
this.originalTitle = this.element.attr( "title" );
@ -632,16 +633,16 @@ $.widget("ui.dialog", {
},
_size: function() {
// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
// divs will both have width and height set, so we need to reset them
var nonContentHeight, minContentHeight,
var nonContentHeight, minContentHeight, maxContentHeight,
options = this.options;
// reset content sizing
this.element.show().css({
width: "auto",
minHeight: 0,
maxHeight: "none",
height: 0
});
@ -657,14 +658,18 @@ $.widget("ui.dialog", {
})
.outerHeight();
minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
maxContentHeight = typeof options.maxHeight === "number" ?
Math.max( 0, options.maxHeight - nonContentHeight ) :
"none";
if ( options.height === "auto" ) {
this.element.css({
minHeight: minContentHeight,
maxHeight: maxContentHeight,
height: "auto"
});
} else {
this.element.height( Math.max( options.height - nonContentHeight, 0 ) );
this.element.height( Math.max( 0, options.height - nonContentHeight ) );
}
if (this.uiDialog.is( ":data(ui-resizable)" ) ) {