From 69179117a5b39a06f31eaec87f4471be087970df Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 1 Jun 2022 16:56:20 +0200 Subject: [PATCH] Amend ca8dddcd, handle nullptr mixer scenes This fixes an assert/crash when loading sessions without scenes. Also only show "Right-Click to Store" label if all slots are empty --- gtk2_ardour/mixer_ui.cc | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 274d1d8ecc..572e4baa49 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -4135,30 +4135,27 @@ Mixer_UI::scene_label_pressed (GdkEventButton* ev, int idx) void Mixer_UI::update_scene_buttons () { - for (size_t idx=0; idx<12;idx++) { - if (!_mixer_scene_buttons.empty() && idx < _mixer_scene_buttons.size()) { + bool all_unset = true; + for (size_t idx = 0; idx < _mixer_scene_buttons.size (); ++idx) { + boost::shared_ptr scn = _session->nth_mixer_scene (idx); - boost::shared_ptr scn = _session->nth_mixer_scene (idx); + Gtk::Label* l = _mixer_scene_labels[idx]; + l->set_alignment (0, 0.5); - ArdourButton *b = _mixer_scene_buttons[idx]; - if (scn && !scn->empty()) { - ArdourWidgets::set_tooltip (b, _("Click to recall this mixer scene\nRight-Click for context menu")); - } - - Gtk::Label *l = _mixer_scene_labels[idx]; - l->set_alignment(0, 0.5); - - if (scn && !scn->empty()) { - l->set_text(scn->name()); - } else { - if (idx==0 && scn->empty()) { - l->set_text(_("(Right-Click to Store)")); - } else { - l->set_text(("")); - } - } + if (scn && !scn->empty()) { + ArdourButton* b = _mixer_scene_buttons[idx]; + ArdourWidgets::set_tooltip (b, _("Click to recall this mixer scene\nRight-Click for context menu")); + l->set_text (scn->name()); + all_unset = false; + } else { + l->set_text(("")); } } + + if (_mixer_scene_buttons.size () > 0 && all_unset) { + Gtk::Label* l = _mixer_scene_labels[0]; + l->set_markup(string_compose ("%1", _("(Right-Click to Store)"))); + } } bool