If I click, drag_select gets called only once. If I click and hold, then move the mouse around to select a bunch of text, drag_select still only gets called once, yet it somehow continues to work—modifying my selection as I drag—after it returns. Does drag_select itself just start some handler that reads the mouse state directly? Is there any way I can check the state of the mouse myself, or otherwise capture mouse-down and mouse-up?
Additionally, drag_select translates screen x and screen y into a text_point. Is this functionality exposed through the API?