 					@_removeChange change
 					moved_changes = moved_changes.filter (c) -> c != change
 			
-			if moved_changes.length > 0
-				@emit "changes:moved", moved_changes
+			for change in moved_changes
+				@_markAsDirty change, "change", "moved"
 
 		_addOp: (op, metadata) ->
 			change = {

			for change in remove_changes
				@_removeChange change
			
			if moved_changes.length > 0
				@emit "changes:moved", moved_changes
		
		applyDeleteToChanges: (op, metadata) ->
			op_start = op.p

		#     middle of a previous insert by the first user, the original insert will be split into two.
		constructor: (@changes = [], @comments = []) ->
			@setIdSeed(RangesTracker.generateIdSeed())
			@resetDirtyState()

		getIdSeed: () ->
			return @id_seed
