aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergei Ratnikov <sergeir82@gmail.com>2016-09-23 18:42:21 +0300
committerScott González <scott.gonzalez@gmail.com>2016-09-28 11:55:13 -0400
commitc481400f222c871ba5853bc2930a3b8b4375d08b (patch)
treef3483753045df629efc76c9933a39206ea4d3331
parentc218bee80d7b7858b7e2b7c44d01d6995a18b6e4 (diff)
downloadjquery-ui-c481400f222c871ba5853bc2930a3b8b4375d08b.tar.gz
jquery-ui-c481400f222c871ba5853bc2930a3b8b4375d08b.zip
Resizable: Fix aspectRatio cannot be changed after initialization.
Fixes #4186 Closes gh-1750
-rw-r--r--tests/unit/resizable/options.js22
-rw-r--r--ui/widgets/resizable.js3
2 files changed, 25 insertions, 0 deletions
diff --git a/tests/unit/resizable/options.js b/tests/unit/resizable/options.js
index 03c40ff98..f89682593 100644
--- a/tests/unit/resizable/options.js
+++ b/tests/unit/resizable/options.js
@@ -155,6 +155,28 @@ QUnit.test( "aspectRatio: Resizing can move objects", function( assert ) {
assert.equal( target.position().top, 0, "compare top - no movement" );
} );
+QUnit.test( "aspectRatio: aspectRatio can be changed after initialization", function( assert ) {
+ assert.expect( 4 );
+
+ var target = $( "#resizable1" )
+ .resizable( { aspectRatio: 1 } )
+ .resizable( "option", "aspectRatio", false );
+
+ var handle = ".ui-resizable-e";
+
+ testHelper.drag( handle, 80 );
+
+ assert.equal( target.width(), 180, "compare width - size change" );
+ assert.equal( target.height(), 100, "compare height - no size change" );
+
+ target.resizable( "option", "aspectRatio", 2 );
+
+ testHelper.drag( handle, -40 );
+
+ assert.equal( target.width(), 140, "compare width - size change" );
+ assert.equal( target.height(), 70, "compare height - size change in proper relation" );
+} );
+
QUnit.test( "containment", function( assert ) {
assert.expect( 4 );
diff --git a/ui/widgets/resizable.js b/ui/widgets/resizable.js
index 74863a055..f20bc791d 100644
--- a/ui/widgets/resizable.js
+++ b/ui/widgets/resizable.js
@@ -226,6 +226,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
this._removeHandles();
this._setupHandles();
break;
+ case "aspectRatio":
+ this._aspectRatio = !!value;
+ break;
default:
break;
}