summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_mixer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor_mixer.cc')
-rw-r--r--gtk2_ardour/editor_mixer.cc45
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;
}