- TimelineAndTrackView: disconnect the scrollbar sync connections in the
destructor. Child views reset their scene during destruction, which can
re-emit QScrollBar::valueChanged into a half-destroyed object and trip
Qt's assertObjectType abort.
- TimeScaledObject: keep minimum <= maximum when setting scale limits so
set_scale()'s std::clamp is never called with inverted limits (UB).
Setting the maximum below the minimum now pulls the minimum down, and
vice versa, matching QAbstractSlider conventions.