diff --git a/src/canvas.class.js b/src/canvas.class.js index a32e4fb5c2f..9abe38cdd97 100644 --- a/src/canvas.class.js +++ b/src/canvas.class.js @@ -375,7 +375,23 @@ else { objsToRender = this._objects; } - return objsToRender; + + return this._sortObjectsByDisplayOrder(objsToRender); + }, + + _sortObjectsByDisplayOrder: function (objects) { + return objects.sort(function(a, b) { + var sortValue = 0, az = a.zIndex || 0, bz = b.zIndex || 0; + + if (az < bz) { + sortValue = -1; + } + else if (az > bz) { + sortValue = 1; + } + + return sortValue; + }); }, /** @@ -1234,6 +1250,7 @@ * @private */ _searchPossibleTargets: function(objects, pointer) { + objects = this._sortObjectsByDisplayOrder(objects); // Cache all targets where their bounding box contains point. var target, i = objects.length, normalizedPointer, subTarget;