Pass selection arround
Detach ranges unless detached
Update current range from selection