diff --git a/platform/features/layout/src/LayoutController.js b/platform/features/layout/src/LayoutController.js index 796f1d26a3..adc7f5b95d 100644 --- a/platform/features/layout/src/LayoutController.js +++ b/platform/features/layout/src/LayoutController.js @@ -26,8 +26,12 @@ * @namespace platform/features/layout */ define( - ['./LayoutDrag'], - function (LayoutDrag) { + [ + './LayoutDrag' + ], + function ( + LayoutDrag + ) { var DEFAULT_DIMENSIONS = [12, 8], DEFAULT_GRID_SIZE = [32, 32], @@ -124,6 +128,10 @@ define( self.select(null, self.droppedIdToSelectAfterRefresh); delete self.droppedIdToSelectAfterRefresh; } + + if (composition.indexOf(self.selectedId) === -1) { + self.clearSelection(); + } } }); } diff --git a/platform/features/layout/test/LayoutControllerSpec.js b/platform/features/layout/test/LayoutControllerSpec.js index e8fb943646..3ac4187b72 100644 --- a/platform/features/layout/test/LayoutControllerSpec.js +++ b/platform/features/layout/test/LayoutControllerSpec.js @@ -424,6 +424,17 @@ define( expect(selectedObj.showFrame).toEqual(jasmine.any(Function)); }); + it("deselects the object that is no longer in the composition", function () { + mockScope.$watchCollection.mostRecentCall.args[1](); + var childObj = mockCompositionObjects[0]; + controller.select(mockEvent, childObj.getId()); + + var composition = ["b", "c"]; + mockScope.$watchCollection.mostRecentCall.args[1](composition); + + expect(controller.selected(childObj)).toBe(false); + }); + }); } );