summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-05-31 13:04:03 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2017-05-31 13:04:26 -0400
commit82cb046fa3f9cb911dc6a2ab192640683a6c57c9 (patch)
tree546b072f5208b94604b79ff38dee2481f2100e16
parentd35dfa9c93b1d2234aff5fe64d44f8b83da1fb57 (diff)
if actively recording, prevent interaction between mouse and audio clock widget(s)
-rw-r--r--gtk2_ardour/audio_clock.cc20
1 files 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 */
}