13
0

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
This commit is contained in:
Robin Gareus 2022-06-01 16:56:20 +02:00
parent ef4bbae02e
commit 69179117a5
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -4135,30 +4135,27 @@ Mixer_UI::scene_label_pressed (GdkEventButton* ev, int idx)
void void
Mixer_UI::update_scene_buttons () Mixer_UI::update_scene_buttons ()
{ {
for (size_t idx=0; idx<12;idx++) { bool all_unset = true;
if (!_mixer_scene_buttons.empty() && idx < _mixer_scene_buttons.size()) { for (size_t idx = 0; idx < _mixer_scene_buttons.size (); ++idx) {
boost::shared_ptr<MixerScene> scn = _session->nth_mixer_scene (idx);
boost::shared_ptr<MixerScene> 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()) {
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")); ArdourWidgets::set_tooltip (b, _("Click to recall this mixer scene\nRight-Click for context menu"));
} l->set_text (scn->name());
all_unset = false;
Gtk::Label *l = _mixer_scene_labels[idx]; } else {
l->set_alignment(0, 0.5); l->set_text((""));
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 (_mixer_scene_buttons.size () > 0 && all_unset) {
Gtk::Label* l = _mixer_scene_labels[0];
l->set_markup(string_compose ("<i>%1</i>", _("(Right-Click to Store)")));
}
} }
bool bool