mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-06 04:42:15 -05:00
Fix CompoundPath#clone() so that it does not alter the #clockwise state on its children.
This commit is contained in:
parent
f14b685c1d
commit
d16155f4fe
3 changed files with 11 additions and 5 deletions
|
@ -946,8 +946,10 @@ function(name) {
|
||||||
copy.setStyle(this._style);
|
copy.setStyle(this._style);
|
||||||
// If this item has children, clone and append each of them:
|
// If this item has children, clone and append each of them:
|
||||||
if (this._children) {
|
if (this._children) {
|
||||||
|
// Clone all children and add them to the copy. tell #addChild we're
|
||||||
|
// cloning, as needed by CompoundPath#insertChild().
|
||||||
for (var i = 0, l = this._children.length; i < l; i++)
|
for (var i = 0, l = this._children.length; i < l; i++)
|
||||||
copy.addChild(this._children[i].clone());
|
copy.addChild(this._children[i].clone(), true);
|
||||||
}
|
}
|
||||||
// Only copy over these fields if they are actually defined in 'this'
|
// Only copy over these fields if they are actually defined in 'this'
|
||||||
// TODO: Consider moving this to Base once it's useful in more than one
|
// TODO: Consider moving this to Base once it's useful in more than one
|
||||||
|
@ -1128,8 +1130,9 @@ function(name) {
|
||||||
*
|
*
|
||||||
* @param {Item} item The item to be added as a child
|
* @param {Item} item The item to be added as a child
|
||||||
*/
|
*/
|
||||||
addChild: function(item) {
|
addChild: function(item, _cloning) {
|
||||||
return this.insertChild(undefined, item);
|
// Pass on internal _cloning boolean, for CompoundPath#insertChild
|
||||||
|
return this.insertChild(undefined, item, _cloning);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -51,7 +51,7 @@ var CompoundPath = this.CompoundPath = PathItem.extend(/** @lends CompoundPath#
|
||||||
this.addChildren(Array.isArray(paths) ? paths : arguments);
|
this.addChildren(Array.isArray(paths) ? paths : arguments);
|
||||||
},
|
},
|
||||||
|
|
||||||
insertChild: function(index, item) {
|
insertChild: function(index, item, _cloning) {
|
||||||
// Only allow the insertion of paths
|
// Only allow the insertion of paths
|
||||||
if (item._type !== 'path')
|
if (item._type !== 'path')
|
||||||
return null;
|
return null;
|
||||||
|
@ -60,7 +60,7 @@ var CompoundPath = this.CompoundPath = PathItem.extend(/** @lends CompoundPath#
|
||||||
// to anti-clockwise orientation, so that they appear as holes, but
|
// to anti-clockwise orientation, so that they appear as holes, but
|
||||||
// only if their orientation was not already specified before
|
// only if their orientation was not already specified before
|
||||||
// (= _clockwise is defined).
|
// (= _clockwise is defined).
|
||||||
if (res && item._clockwise === undefined)
|
if (!_cloning && res && item._clockwise === undefined)
|
||||||
item.setClockwise(item._index == 0);
|
item.setClockwise(item._index == 0);
|
||||||
return res;
|
return res;
|
||||||
},
|
},
|
||||||
|
|
|
@ -835,6 +835,9 @@ var Path = this.Path = PathItem.extend(/** @lends Path# */{
|
||||||
// as what it is now demanded to be.
|
// as what it is now demanded to be.
|
||||||
this.reverse();
|
this.reverse();
|
||||||
}
|
}
|
||||||
|
// Reverse only flips _clockwise state if it was already set, so let's
|
||||||
|
// always set this here now.
|
||||||
|
this._clockwise = clockwise;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in a new issue