data DragState = DragStart | Dragging | DragEnd
data Drag2 = Drag2
{ …
, _drag2_state :: DragState
}
drag2 =
…
V.EvMouseDown x y btn' mods'
| state == DragEnd && btn == btn' -> Just $ Drag2 (x,y) (x,y) btn' mods' DragStart
| state /= DragEnd && btn == btn' -> Just $ Drag2 from (x,y) btn mods' Dragging
| otherwise
…