mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-16 09:43:11 +00:00
Fix group canvas propagation to sub objects (#4228)
* restore canvas prop * add tests * add tests
This commit is contained in:
parent
b663204002
commit
16f5baaf29
2 changed files with 43 additions and 0 deletions
|
|
@ -179,6 +179,7 @@
|
|||
_onObjectAdded: function(object) {
|
||||
this.dirty = true;
|
||||
object.group = this;
|
||||
object._set('canvas', this.canvas);
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
@ -199,6 +200,12 @@
|
|||
this._objects[i].setOnGroup(key, value);
|
||||
}
|
||||
}
|
||||
if (key === 'canvas') {
|
||||
i = this._objects.length;
|
||||
while (i--) {
|
||||
this._objects[i]._set(key, value);
|
||||
}
|
||||
}
|
||||
this.callSuper('_set', key, value);
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -687,6 +687,42 @@
|
|||
equal(inspectKey, 'fill', 'setOnGroup has been called');
|
||||
equal(inspectValue, 'red', 'setOnGroup has been called');
|
||||
});
|
||||
|
||||
test('canvas prop propagation with set', function() {
|
||||
var rect1 = new fabric.Rect({ top: 1, left: 1, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
rect2 = new fabric.Rect({ top: 5, left: 5, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
group = new fabric.Group([rect1, rect2]);
|
||||
|
||||
group.set('canvas', 'a-canvas');
|
||||
equal(group.canvas, 'a-canvas', 'canvas has been set');
|
||||
equal(group._objects[0].canvas, 'a-canvas', 'canvas has been set on object 0');
|
||||
equal(group._objects[1].canvas, 'a-canvas', 'canvas has been set on object 1');
|
||||
});
|
||||
|
||||
test('canvas prop propagation with add', function() {
|
||||
var rect1 = new fabric.Rect({ top: 1, left: 1, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
rect2 = new fabric.Rect({ top: 5, left: 5, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
group = new fabric.Group([rect1, rect2]);
|
||||
|
||||
canvas.add(group);
|
||||
equal(group.canvas, canvas, 'canvas has been set');
|
||||
equal(group._objects[0].canvas, canvas, 'canvas has been set on object 0');
|
||||
equal(group._objects[1].canvas, canvas, 'canvas has been set on object 1');
|
||||
});
|
||||
|
||||
test('canvas prop propagation with add to group', function() {
|
||||
var rect1 = new fabric.Rect({ top: 1, left: 1, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
rect2 = new fabric.Rect({ top: 5, left: 5, width: 2, height: 2, strokeWidth: 0, fill: 'red', opacity: 1, objectCaching: true}),
|
||||
group = new fabric.Group();
|
||||
|
||||
canvas.add(group);
|
||||
equal(group.canvas, canvas, 'canvas has been set');
|
||||
group.add(rect1);
|
||||
equal(group._objects[0].canvas, canvas, 'canvas has been set on object 0');
|
||||
group.addWithUpdate(rect2);
|
||||
equal(group._objects[1].canvas, canvas, 'canvas has been set on object 0');
|
||||
});
|
||||
|
||||
// asyncTest('cloning group with image', function() {
|
||||
// var rect = new fabric.Rect({ top: 100, left: 100, width: 30, height: 10 }),
|
||||
// img = new fabric.Image(_createImageElement()),
|
||||
|
|
|
|||
Loading…
Reference in a new issue