backport subtarget fix

This commit is contained in:
Andrea Bogazzi 2017-09-08 12:05:06 +02:00 committed by Asturur
parent 0f265631b3
commit 124da9ca26
2 changed files with 36 additions and 1 deletions

View file

@ -1106,7 +1106,8 @@
pointer = this.getPointer(e, ignoreZoom),
activeObject = this._activeObject,
aObjects = this.getActiveObjects(),
activeTarget;
activeTarget, activeTargetSubs;
// first check current group (if one exists)
// active group does not check sub targets like normal groups.
// if active group just exits.
@ -1126,11 +1127,14 @@
}
else {
activeTarget = activeObject;
activeTargetSubs = this.targets;
this.targets = [];
}
}
var target = this._searchPossibleTargets(this._objects, pointer);
if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {
target = activeTarget;
this.targets = activeTargetSubs;
}
return target;
},

View file

@ -465,6 +465,37 @@
canvas.remove(group);
});
test('findTarget with subTargetCheck on activeObject and preserveObjectStacking true', function() {
var rect = makeRect({ left: 0, top: 0 }),
rect2 = makeRect({ left: 30, top: 30}), target,
group = new fabric.Group([rect, rect2]);
canvas.preserveObjectStacking = true;
canvas.add(group);
canvas.setActiveObject(group);
group.subTargetCheck = true;
target = canvas.findTarget({
clientX: 9, clientY: 9
});
equal(target, group, 'Should return the group');
equal(canvas.targets[0], rect, 'should return the rect');
target = canvas.findTarget({
clientX: 9, clientY: 9
});
target = canvas.findTarget({
clientX: 9, clientY: 9
});
target = canvas.findTarget({
clientX: 9, clientY: 9
});
equal(canvas.targets.length, 1, 'multiple calls to subtarget should not add more to targets');
canvas.remove(group);
});
test('findTarget with perPixelTargetFind', function() {
ok(typeof canvas.findTarget == 'function');
var triangle = makeTriangle({ left: 0, top: 0 }), target;