From 82cb046fa3f9cb911dc6a2ab192640683a6c57c9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 31 May 2017 13:04:03 -0400 Subject: [PATCH] if actively recording, prevent interaction between mouse and audio clock widget(s) --- gtk2_ardour/audio_clock.cc | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index ebece6487c..532e4f8867 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -812,7 +812,7 @@ AudioClock::session_configuration_changed (std::string p) void AudioClock::set (framepos_t when, bool force, framecnt_t offset) { - if ((!force && !is_visible()) || _session == 0) { + if ((!force && !is_visible()) || _session == 0) { return; } @@ -1520,6 +1520,11 @@ AudioClock::index_to_field (int index) const bool AudioClock::on_button_press_event (GdkEventButton *ev) { + if (!_session || _session->actively_recording()) { + /* swallow event, do nothing */ + return true; + } + switch (ev->button) { case 1: if (editable && !_off) { @@ -1563,6 +1568,11 @@ AudioClock::on_button_press_event (GdkEventButton *ev) bool AudioClock::on_button_release_event (GdkEventButton *ev) { + if (!_session || _session->actively_recording()) { + /* swallow event, do nothing */ + return true; + } + if (editable && !_off) { if (dragging) { gdk_pointer_ungrab (GDK_CURRENT_TIME); @@ -1636,7 +1646,7 @@ AudioClock::on_scroll_event (GdkEventScroll *ev) int index; int trailing; - if (editing || _session == 0 || !editable || _off) { + if (editing || _session == 0 || !editable || _off || _session->actively_recording()) { return false; } @@ -1700,7 +1710,7 @@ AudioClock::on_scroll_event (GdkEventScroll *ev) bool AudioClock::on_motion_notify_event (GdkEventMotion *ev) { - if (editing || _session == 0 || !dragging) { + if (editing || _session == 0 || !dragging || _session->actively_recording()) { return false; } @@ -1736,9 +1746,9 @@ AudioClock::on_motion_notify_event (GdkEventMotion *ev) set ((framepos_t) floor (pos - drag_accum * frames), false); // minus because up is negative in GTK } else { set (0 , false); - } + } - drag_accum= 0; + drag_accum= 0; ValueChanged(); /* EMIT_SIGNAL */ }