mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
Fix Item#isDescendant / Item#isAncestor, implement Item#isGroupedWith and add tests.
This commit is contained in:
parent
6cea290dd8
commit
014d1053a7
2 changed files with 44 additions and 3 deletions
|
@ -411,7 +411,7 @@ Item = Base.extend({
|
|||
* @return {@true if it is inside the specified item}
|
||||
*/
|
||||
isDescendant: function(item) {
|
||||
var parent = this;
|
||||
var parent = this.parent;
|
||||
while(parent) {
|
||||
if (parent == item)
|
||||
return true;
|
||||
|
@ -436,7 +436,7 @@ Item = Base.extend({
|
|||
* @return {@true if the item is an ancestor of the specified item}
|
||||
*/
|
||||
isAncestor: function(item) {
|
||||
var parent = item;
|
||||
var parent = item.parent;
|
||||
while(parent) {
|
||||
if (parent == this)
|
||||
return true;
|
||||
|
@ -451,7 +451,21 @@ Item = Base.extend({
|
|||
* @param item
|
||||
* @return {@true if the items are grouped together}
|
||||
*/
|
||||
// TODO: isGroupedWith
|
||||
isGroupedWith: function(item) {
|
||||
var parent = this.parent;
|
||||
while(parent) {
|
||||
// Find group parents. Check for parent.parent, since don't want
|
||||
// top level layers, because they also inherit from Group
|
||||
console.log(parent.parent);
|
||||
if(parent.parent
|
||||
&& (parent instanceof Group || parent instanceof CompoundPath)
|
||||
&& item.isDescendant(parent))
|
||||
return true;
|
||||
// Keep walking up otherwise
|
||||
parent = parent.parent
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
getBounds: function() {
|
||||
// TODO: Implement for items other than paths
|
||||
|
|
|
@ -89,6 +89,33 @@ test('isDescendant(item) / isAncestor(item)', function() {
|
|||
|
||||
equals(path.isAncestor(doc.activeLayer), false);
|
||||
equals(doc.activeLayer.isAncestor(path), true);
|
||||
|
||||
// an item can't be its own descendant:
|
||||
equals(doc.activeLayer.isDescendant(doc.activeLayer), false);
|
||||
|
||||
// an item can't be its own ancestor:
|
||||
equals(doc.activeLayer.isAncestor(doc.activeLayer), false);
|
||||
});
|
||||
|
||||
test('isGroupedWith', function() {
|
||||
var doc = new Doc();
|
||||
var path = new Path();
|
||||
var secondPath = new Path();
|
||||
var group = new Group([path]);
|
||||
var secondGroup = new Group([secondPath]);
|
||||
|
||||
equals(path.isGroupedWith(secondPath), false);
|
||||
secondGroup.appendTop(path);
|
||||
equals(path.isGroupedWith(secondPath), true);
|
||||
equals(path.isGroupedWith(group), false);
|
||||
equals(path.isDescendant(secondGroup), true);
|
||||
equals(secondGroup.isDescendant(path), false);
|
||||
equals(secondGroup.isDescendant(secondGroup), false);
|
||||
equals(path.isGroupedWith(secondGroup), false);
|
||||
Paper.document.activeLayer.appendTop(path);
|
||||
equals(path.isGroupedWith(secondPath), false);
|
||||
Paper.document.activeLayer.appendTop(secondPath);
|
||||
equals(path.isGroupedWith(secondPath), false);
|
||||
});
|
||||
|
||||
test('getPreviousSibling() / getNextSibling()', function() {
|
||||
|
|
Loading…
Reference in a new issue