Merge pull request #2130 from asturur/ActiveGroupSorter

Fix sortedObjects
This commit is contained in:
Juriy Zaytsev 2015-04-22 13:05:53 +02:00
commit 54211dd349
2 changed files with 26 additions and 1 deletions

View file

@ -902,7 +902,8 @@
sortedObjects.push(object);
}
});
activeGroup._set('objects', sortedObjects);
// forEachObject reverses the object, so we reverse again
activeGroup._set('_objects', sortedObjects.reverse());
this._draw(ctx, activeGroup);
}
},

View file

@ -853,6 +853,30 @@
equal(svg, svgWithActiveGroup);
});
test('active group objects reordering', function() {
var rect1 = new fabric.Rect({ width: 30, height: 30, left: 130, top: 130 });
var rect2 = new fabric.Rect({ width: 50, height: 50, left: 100, top: 100 });
var circle1 = new fabric.Circle({ radius: 10, left: 60, top: 60 });
var circle2 = new fabric.Circle({ radius: 50, left: 50, top: 50 });
canvas.add(rect1, rect2, circle1, circle2);
equal(canvas._objects[0], rect1);
equal(canvas._objects[1], rect2);
equal(canvas._objects[2], circle1);
equal(canvas._objects[3], circle2);
var aGroup = new fabric.Group([ rect2, circle2, rect1, circle1 ]);c
// before rendering objects are ordered in insert order
equal(aGroup._objects[0], rect2);
equal(aGroup._objects[1], circle2);
equal(aGroup._objects[2], rect1);
equal(aGroup._objects[3], circle1);
canvas.setActiveGroup(aGroup).renderAll();
// after rendering objects are ordered in canvas stack order
equal(aGroup._objects[0], rect1);
equal(aGroup._objects[1], rect2);
equal(aGroup._objects[2], circle1);
equal(aGroup._objects[3], circle2);
});
// test('dispose', function() {
// function invokeEventsOnCanvas() {
// // nextSibling because we need to invoke events on upper canvas