#undef CONTINUOUS_SCROLL #ifndef CONTINUOUS_SCROLL if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) { if (session->transport_speed() < 0) { if (frame > (current_page_frames()/2)) { center_screen (frame-(current_page_frames()/2)); } else { center_screen (current_page_frames()/2); } } else { center_screen (frame+(current_page_frames()/2)); } } playhead_cursor->set_position (frame); #else // CONTINUOUS_SCROLL /* don't do continuous scroll till the new position is in the rightmost quarter of the editor canvas */ if (session->transport_speed()) { double target = ((double)frame - (double)current_page_frames()/2.0) / frames_per_unit; if (target <= 0.0) target = 0.0; if ( fabs(target - current) < current_page_frames()/frames_per_unit ) { target = (target * 0.15) + (current * 0.85); } else { /* relax */ } //printf("frame: %d, cpf: %d, fpu: %6.6f, current: %6.6f, target : %6.6f\n", frame, current_page_frames(), frames_per_unit, current, target ); current = target; horizontal_adjustment.set_value ( current ); } playhead_cursor->set_position (frame); #endif // CONTINUOUS_SCROLL