+
+ //snap the selection start/end
+ snap_to(start);
+
+ //if there's not already a sensible selection endpoint, go "forever"
+ if (start > end) {
+#ifdef MIXBUS
+ // 4hours at most.
+ // This works around a visual glitch in red-bordered selection rect.
+ end = start + _session->nominal_frame_rate() * 60 * 60 * 4;
+#else
+ end = max_framepos;
+#endif
+ }
+
+ //if no tracks are selected and we're working from the keyboard, enable all tracks (_something_ has to be selected for any range selection)
+ if ( selection->tracks.empty() )
+ select_all_tracks();
+
+ selection->set (start, end);
+
+ //if session is playing a range, cancel that
+ if (_session->get_play_range())
+ _session->request_cancel_play_range();