From 51a9e87854347f0c980ca472fdecdffcc2e38430 Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Sun, 12 Nov 2017 15:54:33 +0100 Subject: [PATCH] fixed group restoring internal absolute coords for subtarget check (#4454) * fixed group restoring internal cords * added small test --- src/shapes/group.class.js | 14 ++++++++++++++ test/unit/group.js | 15 +++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/shapes/group.class.js b/src/shapes/group.class.js index 6408646b..f719411c 100644 --- a/src/shapes/group.class.js +++ b/src/shapes/group.class.js @@ -93,10 +93,24 @@ delete options.centerPoint; this.callSuper('initialize', options); } + else { + this._updateObjectsACoords(); + } this.setCoords(); }, + /** + * @private + * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change + */ + _updateObjectsACoords: function() { + var ignoreZoom = true, skipAbsolute = true; + for (var i = this._objects.length; i--; ){ + this._objects[i].setCoords(ignoreZoom, skipAbsolute); + } + }, + /** * @private * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change diff --git a/test/unit/group.js b/test/unit/group.js index 0f7efd40..aff7c2b0 100644 --- a/test/unit/group.js +++ b/test/unit/group.js @@ -392,6 +392,21 @@ }); }); + QUnit.test('fromObject restores oCoords', function(assert) { + var done = assert.async(); + var group = makeGroupWith2ObjectsWithOpacity(); + + var groupObject = group.toObject(); + + fabric.Group.fromObject(groupObject, function(newGroupFromObject) { + console.log(newGroupFromObject._objects[0]); + assert.ok(newGroupFromObject._objects[0].oCoords.tl, 'acoords 0 are restored'); + assert.ok(newGroupFromObject._objects[1].oCoords.tl, 'acoords 1 are restored'); + + done(); + }); + }); + QUnit.test('fromObject does not delete objects from source', function(assert) { var done = assert.async(); var group = makeGroupWith2ObjectsWithOpacity();