You are trying to do 2 things that require the same actions. Drag and drop is not built into the TextInput object. So you need to learn how drag and drop works.
Next, since you need to be able to change the mode of your TextInput you need to control when a selection can occur. Say for instance if text is selected that you do NOT want selection motion to work. Then use the selectedText property to control the selectByMouse property:
selectByMouse: selectedText <= 0
I do not know if this will lock you into that mode. So you may need a way to back out of a selection. What happens when you click the text again? Does it deselect the text?