Index: lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/components/activity/ActivityComponent.mxml =================================================================== diff -u -rb18306871e780d0266af4b3135c37780f09d2b72 -r25f9a8b7b24bda28d71c569daccc9a30faef5e18 --- lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/components/activity/ActivityComponent.mxml (.../ActivityComponent.mxml) (revision b18306871e780d0266af4b3135c37780f09d2b72) +++ lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/components/activity/ActivityComponent.mxml (.../ActivityComponent.mxml) (revision 25f9a8b7b24bda28d71c569daccc9a30faef5e18) @@ -21,13 +21,18 @@ import mx.controls.Label; import org.lamsfoundation.lams.author.components.transition.TransitionComponent; - public var xpos:int; - public var ypos:int; + // Activity title label public var title:Label; + // Center position of the activity component public var centerX:int; public var centerY:int; + // Point of mouse during drag + public var mouseOffSetX:int; + public var mouseOffSetY:int; + + // Transtitions public var transitionIn:TransitionComponent public var transitionOut:TransitionComponent; @@ -59,7 +64,15 @@ if (activityComponent.isDragable) { var ds:DragSource = new DragSource(); - ds.addData(activityComponent, "img"); + ds.addData(activityComponent, "img"); + + // Set the offset for dropping the activity to the local mouse position + activityComponent.mouseOffSetX = event.localX; + activityComponent.mouseOffSetY = event.localY; + + this.setStyle('borderStyle', 'solid'); + this.setStyle('borderColor', '#66CCFF'); + DragManager.doDrag(activityComponent, ds, event); setCenter(); } @@ -117,6 +130,7 @@ systemManager.removeEventListener(MouseEvent.MOUSE_MOVE, systemManagerMouseMoveHandler, true); systemManager.removeEventListener(MouseEvent.MOUSE_UP, systemManagerMouseUpHandler, true); systemManager.stage.removeEventListener(Event.MOUSE_LEAVE, stageMouseLeaveHandler); + this.setStyle('borderStyle', 'none'); } private function systemManagerMouseMoveHandler(event:MouseEvent):void Index: lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/controller/AuthorController.as =================================================================== diff -u -rb18306871e780d0266af4b3135c37780f09d2b72 -r25f9a8b7b24bda28d71c569daccc9a30faef5e18 --- lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/controller/AuthorController.as (.../AuthorController.as) (revision b18306871e780d0266af4b3135c37780f09d2b72) +++ lams_flex/LamsAuthor/src/org/lamsfoundation/lams/author/controller/AuthorController.as (.../AuthorController.as) (revision 25f9a8b7b24bda28d71c569daccc9a30faef5e18) @@ -61,14 +61,15 @@ var canvasBox:CanvasBox = Application.application.canvasArea.canvasBox; // Get the current mouse point, and convert it to co-ordinates in CanvasBox - var currentMousePoint:Point = new Point(UIComponent(event.currentTarget).mouseX, UIComponent(event.currentTarget).mouseY); + var comp:UIComponent = UIComponent(event.currentTarget); + var currentMousePoint:Point = new Point(comp.mouseX, comp.mouseY); currentMousePoint = canvasBox.globalToLocal(currentMousePoint); if (event.dragInitiator is ActivityComponent) { var activityComponent:ActivityComponent; activityComponent = event.dragInitiator as ActivityComponent; - activityComponent.x = currentMousePoint.x; - activityComponent.y = currentMousePoint.y; + activityComponent.x = currentMousePoint.x - activityComponent.mouseOffSetX; + activityComponent.y = currentMousePoint.y - activityComponent.mouseOffSetY; activityComponent.setCenter(); activityComponent.updateTransitionPositions(); } else if (event.dragInitiator is LearningLibraryEntryComponent) {