From c481400f222c871ba5853bc2930a3b8b4375d08b Mon Sep 17 00:00:00 2001 From: Sergei Ratnikov Date: Fri, 23 Sep 2016 18:42:21 +0300 Subject: [PATCH] Resizable: Fix aspectRatio cannot be changed after initialization. Fixes #4186 Closes gh-1750 --- tests/unit/resizable/options.js | 22 ++++++++++++++++++++++ ui/widgets/resizable.js | 3 +++ 2 files changed, 25 insertions(+) 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; }