diff options
Diffstat (limited to 'ui/jquery.ui.resizable.js')
-rw-r--r-- | ui/jquery.ui.resizable.js | 41 |
1 files changed, 30 insertions, 11 deletions
diff --git a/ui/jquery.ui.resizable.js b/ui/jquery.ui.resizable.js index ba793ac67..afdf1ff25 100644 --- a/ui/jquery.ui.resizable.js +++ b/ui/jquery.ui.resizable.js @@ -341,14 +341,19 @@ $.widget("ui.resizable", $.ui.mouse, { el = this.helper, props = {}, smp = this.originalMousePosition, a = this.axis, - prevTop = this.position.top, - prevLeft = this.position.left, - prevWidth = this.size.width, - prevHeight = this.size.height, dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0, trigger = this._change[a]; + this.prevPosition = { + top: this.position.top, + left: this.position.left + }; + this.prevSize = { + width: this.size.width, + height: this.size.height + }; + if (!trigger) { return false; } @@ -369,16 +374,16 @@ $.widget("ui.resizable", $.ui.mouse, { // plugins callbacks need to be called first this._propagate("resize", event); - if (this.position.top !== prevTop) { + if ( this.position.top !== this.prevPosition.top ) { props.top = this.position.top + "px"; } - if (this.position.left !== prevLeft) { + if ( this.position.left !== this.prevPosition.left ) { props.left = this.position.left + "px"; } - if (this.size.width !== prevWidth) { + if ( this.size.width !== this.prevSize.width ) { props.width = this.size.width + "px"; } - if (this.size.height !== prevHeight) { + if ( this.size.height !== this.prevSize.height ) { props.height = this.size.height + "px"; } el.css(props); @@ -662,7 +667,9 @@ $.widget("ui.resizable", $.ui.mouse, { position: this.position, size: this.size, originalSize: this.originalSize, - originalPosition: this.originalPosition + originalPosition: this.originalPosition, + prevSize: this.prevSize, + prevPosition: this.prevPosition }; } @@ -779,7 +786,7 @@ $.ui.plugin.add( "resizable", "containment", { } }, - resize: function( event ) { + resize: function( event, ui ) { var woset, hoset, isParent, isOffsetRelative, that = $( this ).resizable( "instance" ), o = that.options, @@ -790,7 +797,8 @@ $.ui.plugin.add( "resizable", "containment", { top: 0, left: 0 }, - ce = that.containerElement; + ce = that.containerElement, + continueResize = true; if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) { cop = co; @@ -800,6 +808,7 @@ $.ui.plugin.add( "resizable", "containment", { that.size.width = that.size.width + ( that._helper ? ( that.position.left - co.left ) : ( that.position.left - cop.left ) ); if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; + continueResize = false; } that.position.left = o.helper ? co.left : 0; } @@ -808,6 +817,7 @@ $.ui.plugin.add( "resizable", "containment", { that.size.height = that.size.height + ( that._helper ? ( that.position.top - co.top ) : that.position.top ); if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; + continueResize = false; } that.position.top = that._helper ? co.top : 0; } @@ -829,6 +839,7 @@ $.ui.plugin.add( "resizable", "containment", { that.size.width = that.parentData.width - woset; if ( pRatio ) { that.size.height = that.size.width / that.aspectRatio; + continueResize = false; } } @@ -836,8 +847,16 @@ $.ui.plugin.add( "resizable", "containment", { that.size.height = that.parentData.height - hoset; if ( pRatio ) { that.size.width = that.size.height * that.aspectRatio; + continueResize = false; } } + + if ( !continueResize ){ + that.position.left = ui.prevPosition.left; + that.position.top = ui.prevPosition.top; + that.size.width = ui.prevSize.width; + that.size.height = ui.prevSize.height; + } }, stop: function(){ |