diff --git a/platform/features/layout/src/LayoutController.js b/platform/features/layout/src/LayoutController.js index 017793d2e6..37f434ba88 100644 --- a/platform/features/layout/src/LayoutController.js +++ b/platform/features/layout/src/LayoutController.js @@ -85,6 +85,8 @@ define( $scope.commit("Dropped a frame."); } // Populate template-facing position for this id + self.rawPositions[id] = + $scope.configuration.panels[id]; self.populatePosition(id); // Layout may contain embedded views which will // listen for drops, so call preventDefault() so diff --git a/platform/features/layout/test/LayoutControllerSpec.js b/platform/features/layout/test/LayoutControllerSpec.js index bbed271d2c..338875823b 100644 --- a/platform/features/layout/test/LayoutControllerSpec.js +++ b/platform/features/layout/test/LayoutControllerSpec.js @@ -274,6 +274,23 @@ define( expect(parseInt(style.width, 10)).toBeGreaterThan(63); expect(parseInt(style.height, 10)).toBeGreaterThan(31); }); + + it("updates positions of existing objects on a drop", function () { + var oldStyle; + + mockScope.$watchCollection.mostRecentCall.args[1](); + + oldStyle = controller.getFrameStyle("b"); + + expect(oldStyle).toBeDefined(); + + // ...drop event... + mockScope.$on.mostRecentCall + .args[1](mockEvent, 'b', { x: 300, y: 100 }); + + expect(controller.getFrameStyle("b")) + .not.toEqual(oldStyle); + }); }); } );