Fix fabric.util.enlivenObjects for empty fabric.Group objects

Add unit test
Fixes issue #943
This commit is contained in:
Kienz 2013-11-02 16:02:38 +01:00
parent bdf147fbfb
commit 6f115bbf1e
2 changed files with 27 additions and 3 deletions

View file

@ -174,12 +174,11 @@
* @param {Function} [reviver] Method for further parsing of object elements, called after each fabric object created.
*/
function enlivenObjects(objects, callback, namespace, reviver) {
objects = objects || [ ];
function onLoaded() {
if (++numLoadedObjects === numTotalObjects) {
if (callback) {
callback(enlivenedObjects);
}
callback && callback(enlivenedObjects);
}
}
@ -187,6 +186,11 @@
numLoadedObjects = 0,
numTotalObjects = objects.length;
if (!numTotalObjects) {
callback && callback(enlivenedObjects);
return;
}
objects.forEach(function (o, index) {
// if sparse array
if (!o || !o.type) {

View file

@ -416,6 +416,26 @@
}, 500);
});
asyncTest('loadFromJSON with empty fabric.Group', function() {
var c1 = new fabric.Canvas('c1'),
c2 = new fabric.Canvas('c2'),
group = new fabric.Group();
c1.add(group);
ok(!c1.isEmpty(), 'canvas is not empty');
var json = c1.toJSON();
var fired = false;
c2.loadFromJSON(json, function() {
fired = true;
});
setTimeout(function() {
ok(fired, 'Callback should be fired even if empty fabric.Group exists');
start();
}, 500);
});
asyncTest('loadFromJSON with async content', function() {
var group = new fabric.Group([
new fabric.Rect({ width: 10, height: 20 }),