From 757398a209f54279fbc54db3fcdf0372dd04f39d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 17 Jan 2026 19:13:19 -0700 Subject: [PATCH] bring some rationality to the pianoroll (clip) rec-enable button --- gtk2_ardour/cue_editor.cc | 39 ++++++++++++++++++++++++++++++--------- gtk2_ardour/cue_editor.h | 1 + 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/cue_editor.cc b/gtk2_ardour/cue_editor.cc index 1d79e969f5..a64fbb3570 100644 --- a/gtk2_ardour/cue_editor.cc +++ b/gtk2_ardour/cue_editor.cc @@ -674,6 +674,32 @@ CueEditor::trigger_arm_change () } else { maybe_set_count_in (); } + + setup_record_blink (); +} + +void +CueEditor::setup_record_blink () +{ + rec_blink_connection.disconnect (); + + switch (ref.box()->record_enabled()) { + case Recording: + rec_enable_button.set_active_state (Gtkmm2ext::ExplicitActive); + rec_blink_connection.disconnect (); + break; + case Enabled: + if (!UIConfiguration::instance().get_no_strobe() && ref.trigger()->armed()) { + rec_blink_connection = Timers::blink_connect (sigc::mem_fun (*this, &CueEditor::blink_rec_enable)); + } else { + rec_enable_button.set_active_state (Gtkmm2ext::Off); + } + break; + case Disabled: + rec_enable_button.set_active_state (Gtkmm2ext::Off); + break; + } + } void @@ -685,28 +711,21 @@ CueEditor::rec_enable_change () return; } - rec_blink_connection.disconnect (); count_in_connection.disconnect (); + setup_record_blink (); switch (ref.box()->record_enabled()) { case Recording: - rec_enable_button.set_active_state (Gtkmm2ext::ExplicitActive); - rec_blink_connection.disconnect (); begin_write (); break; case Enabled: - if (!UIConfiguration::instance().get_no_strobe() && ref.trigger()->armed()) { - rec_blink_connection = Timers::blink_connect (sigc::mem_fun (*this, &CueEditor::blink_rec_enable)); - } else { - rec_enable_button.set_active_state (Gtkmm2ext::Off); - } maybe_set_count_in (); break; case Disabled: - rec_enable_button.set_active_state (Gtkmm2ext::Off); hide_count_in (); break; } + } void @@ -1301,6 +1320,8 @@ CueEditor::set_trigger (TriggerReference& tref) set_region (nullptr); _update_connection = Timers::super_rapid_connect (sigc::mem_fun (*this, &CueEditor::maybe_update)); } + + setup_record_blink (); } void diff --git a/gtk2_ardour/cue_editor.h b/gtk2_ardour/cue_editor.h index bf6a859105..bb665105f1 100644 --- a/gtk2_ardour/cue_editor.h +++ b/gtk2_ardour/cue_editor.h @@ -218,6 +218,7 @@ class CueEditor : public EditingContext, public PBD::HistoryOwner bool rec_button_press (GdkEventButton*); virtual void rec_enable_change (); void blink_rec_enable (bool); + void setup_record_blink (); sigc::connection rec_blink_connection; sigc::connection _update_connection;