Fix gain menu (polarity, envelope) with multiple selection

This commit is contained in:
Robin Gareus 2022-12-17 19:13:26 +01:00
parent 0f949bc02b
commit bd3f713d0e
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -1512,8 +1512,11 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
have_inactive_fade_out = true;
}
have_inverted_polarity = ar->scale_amplitude () < 0;
have_non_inverted_polarity = ar->scale_amplitude () >= 0;
if (ar->scale_amplitude () < 0) {
have_inverted_polarity = true;
} else {
have_non_inverted_polarity = true;
}
}
}
@ -1564,14 +1567,18 @@ Editor::sensitize_the_right_region_actions (bool because_canvas_crossing)
if (have_audio) {
if (have_envelope_active && !have_envelope_inactive) {
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_active ();
if (have_envelope_active != have_envelope_inactive) {
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_active (have_envelope_active);
} else if (have_envelope_active && have_envelope_inactive) {
// Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_inconsistent ();
// Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_inconsistent (); // N/A
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-gain-envelope-active"))->set_sensitive (false);
}
if (have_inverted_polarity && !have_non_inverted_polarity) {
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-polarity"))->set_active ();
if (have_inverted_polarity != have_non_inverted_polarity) {
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-polarity"))->set_active (have_inverted_polarity);
} else if (have_inverted_polarity && have_non_inverted_polarity) {
// Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-polarity"))->set_inconsistent (); // N/A
Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-polarity"))->set_sensitive (false);
}
} else {