diff options
Diffstat (limited to 'gtk2_ardour/editor_mixer.cc')
-rw-r--r-- | gtk2_ardour/editor_mixer.cc | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc index d1dd8be7fa..e37c7c7fe3 100644 --- a/gtk2_ardour/editor_mixer.cc +++ b/gtk2_ardour/editor_mixer.cc @@ -15,10 +15,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ +#include <glibmm/miscutils.h> #include <gtkmm2ext/utils.h> +#include <gtkmm2ext/window_title.h> #include <ardour/audioengine.h> #include "editor.h" @@ -30,6 +31,8 @@ #include "i18n.h" +using namespace Gtkmm2ext; + void Editor::editor_mixer_button_toggled () { @@ -158,10 +161,13 @@ Editor::set_selected_mixer_strip (TimeAxisView& view) } } +double current = 0.0; +bool currentInitialized = 0; + void Editor::update_current_screen () { - if (session && engine.running()) { + if (session && session->engine().running()) { nframes_t frame; @@ -179,6 +185,9 @@ Editor::update_current_screen () if (frame != last_update_frame) { + +#undef CONTINUOUS_SCROLL +#ifndef CONTINUOUS_SCROLL if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) { if (session->transport_speed() < 0) { @@ -194,27 +203,26 @@ Editor::update_current_screen () playhead_cursor->set_position (frame); -#undef CONTINUOUS_SCROLL -#ifdef CONTINUOUS_SCROLL - +#else // CONTINUOUS_SCROLL + /* don't do continuous scroll till the new position is in the rightmost quarter of the editor canvas */ -#if 0 - if (frame > leftmost_frame + (3 * current_page_frames() / 4)) { - - if (frame > playhead_cursor->current_frame) { - nframes_t delta = frame - playhead_cursor->current_frame; - horizontal_adjustment.set_value (horizontal_adjustment.get_value() + (delta/frames_per_unit)); + 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 { - nframes_t delta = playhead_cursor->current_frame - frame; - horizontal_adjustment.set_value (horizontal_adjustment.get_value() - (delta/frames_per_unit)); + /* 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 ); } -#else - horizontal_adjustment.set_value (frame / frames_per_unit); -#endif + + playhead_cursor->set_position (frame); #endif // CONTINUOUS_SCROLL @@ -340,7 +348,10 @@ Editor::session_going_away () current_mixer_strip = 0; - set_title (_("ardour: editor")); + WindowTitle title(Glib::get_application_name()); + title += _("Editor"); + + set_title (title.get_string()); session = 0; } |