mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
Implement Item#setParent, making Item#parent writeable. Closes #186.
This commit is contained in:
parent
25d34be59b
commit
fd3fc7f2d7
2 changed files with 67 additions and 0 deletions
|
@ -977,11 +977,43 @@ var Item = this.Item = Base.extend(Callback, {
|
|||
*
|
||||
* // Now the parent of the path has become the group:
|
||||
* console.log(path.parent == group); // true
|
||||
*
|
||||
* @example // Setting the parent of the item to another item
|
||||
* var path = new Path();
|
||||
*
|
||||
* // New items are placed in the active layer:
|
||||
* console.log(path.parent == project.activeLayer); // true
|
||||
*
|
||||
* var group = new Group();
|
||||
* group.parent = path;
|
||||
*
|
||||
* // Now the parent of the path has become the group:
|
||||
* console.log(path.parent == group); // true
|
||||
*
|
||||
* // The path is now contained in the children list of group:
|
||||
* console.log(group.children[0] == path); // true
|
||||
*
|
||||
* @example // Setting the parent of an item in the constructor
|
||||
* var group = new Group();
|
||||
*
|
||||
* var path = new Path({
|
||||
* parent: group
|
||||
* });
|
||||
*
|
||||
* // The parent of the path is the group:
|
||||
* console.log(path.parent == group); // true
|
||||
*
|
||||
* // The path is contained in the children list of group:
|
||||
* console.log(group.children[0] == path); // true
|
||||
*/
|
||||
getParent: function() {
|
||||
return this._parent;
|
||||
},
|
||||
|
||||
setParent: function(item) {
|
||||
return item.addChild(this);
|
||||
},
|
||||
|
||||
/**
|
||||
* The children items contained within this item. Items that define a
|
||||
* {@link #name} can also be accessed by name.
|
||||
|
|
|
@ -63,6 +63,41 @@ test('addChild(item)', function() {
|
|||
}, 1);
|
||||
});
|
||||
|
||||
test('setting item.parent', function() {
|
||||
var layer1 = paper.project.activeLayer;
|
||||
var layer2 = new Layer();
|
||||
layer1.activate();
|
||||
var group = new Group();
|
||||
|
||||
var path = new Path();
|
||||
equals(function() {
|
||||
return path.parent === layer1;
|
||||
}, true, 'Path is a child of layer1 because it is active');
|
||||
|
||||
path.parent = layer2;
|
||||
equals(function() {
|
||||
return path.parent === layer2;
|
||||
}, true, 'The parent of path was set to layer2');
|
||||
|
||||
path.parent = group;
|
||||
equals(function() {
|
||||
return path.parent === group;
|
||||
}, true, 'The parent of path was set to group');
|
||||
equals(function() {
|
||||
return layer2.children.indexOf(path) === -1;
|
||||
}, false, 'The path is no longer a child of layer2');
|
||||
|
||||
var path2 = new Path({
|
||||
parent: group
|
||||
});
|
||||
equals(function() {
|
||||
return path2.parent === group;
|
||||
}, true, 'setting the parent in the constructor');
|
||||
equals(function() {
|
||||
return group.children.indexOf(path2) == 1;
|
||||
}, true, 'the index of path2 is 1, because group already contains path from before');
|
||||
});
|
||||
|
||||
test('item.parent / item.isChild / item.isParent / item.layer', function() {
|
||||
var project = paper.project;
|
||||
var secondDoc = new Project();
|
||||
|
|
Loading…
Reference in a new issue