 			}
 		}
 		
+		private function toggleMouseEnabled():void
+		{
+			var keyPressed:Boolean = WeaveAPI.StageUtils.altKey || WeaveAPI.StageUtils.ctrlKey || WeaveAPI.StageUtils.shiftKey;
+			if (mouseEnabled == keyPressed)
+				mouseEnabled = !keyPressed;
+		}
+		
 		/**
 		 * Handle the mouse release event. 
 		 */		
 		private function handleMouseUp():void
 		{
-			
 			if (!_editMode)// || mouseOffscreen())
 				return;
 
+			toggleMouseEnabled();
+			
 			if (drawingMode.value == FREE_DRAW_MODE)
 			{
 				_drawing = false;

	import weave.api.WeaveAPI;
	import weave.api.core.IDisposableObject;
	import weave.api.core.ILinkableObject;
	import weave.api.data.IQualifiedKey;
	import weave.api.getCallbackCollection;
	import weave.api.primitives.IBounds2D;

			invalidateDisplayList();
		}
		
		private function handleKeyboard():void
		{
			if (editMode)
				toggleMouseEnabled();
		}
		
		/**
		 * Handle a mouse move event. 
		 */
		private function handleMouseMove():void
		{
			if (!editMode)
				return;
			
			toggleMouseEnabled();
			
			if (_drawing)// && !mouseOffscreen())
			{
				// get the current line
				var line:Array = _coordsArrays[_coordsArrays.length - 1];
