From 01c7e14c6e35976afd38bb712e30c5fa1bd35263 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Thu, 10 Nov 2022 09:04:01 -0600 Subject: [PATCH] MixerScenes: highlight momentarily recalled scenes by using libardour 'undo' * also moves 'momentary' into libardour so it can be accessed by other UIs --- gtk2_ardour/mixer_ui.cc | 20 ++++++++++---------- gtk2_ardour/mixer_ui.h | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index ccab3e5513..5ea33f54a5 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -125,7 +125,6 @@ Mixer_UI::instance () Mixer_UI::Mixer_UI () : Tabbable (_content, _("Mixer"), X_("mixer")) , plugin_search_clear_button (Stock::CLEAR) - , _mixer_scene_release (0) , no_track_list_redisplay (false) , in_group_row_change (false) , track_menu (0) @@ -447,7 +446,6 @@ Mixer_UI::~Mixer_UI () delete _plugin_selector; delete track_menu; delete _group_tabs; - delete _mixer_scene_release; } struct MixerStripSorter { @@ -4115,16 +4113,16 @@ Mixer_UI::scene_button_press (GdkEventButton* ev, int idx) return false; } + _mixer_scene_momentary = false; + if (Keyboard::is_context_menu_event (ev)) { popup_scene_menu (ev, idx); } else if (Keyboard::is_delete_event (ev)) { clear_mixer_scene (idx, true); } else if (Keyboard::is_momentary_push_event (ev)) { /* momentary */ - delete _mixer_scene_release; // .. or keep existing? - _mixer_scene_release = new MixerScene (*_session); - _mixer_scene_release->snapshot (); // TODO; prevent changed signal - recall_mixer_scene (idx, false); + _mixer_scene_momentary = true; + recall_mixer_scene(idx, false); return false; } else if (ev->button == 1) { return false; @@ -4136,10 +4134,12 @@ Mixer_UI::scene_button_press (GdkEventButton* ev, int idx) bool Mixer_UI::scene_button_release (GdkEventButton* ev, int idx) { - if (_mixer_scene_release) { - _mixer_scene_release->apply (); - delete _mixer_scene_release; - _mixer_scene_release = 0; + if (!_session) { + return false; + } + if (_mixer_scene_momentary) { + _session->apply_mixer_scene_undo(); + _mixer_scene_momentary = false; } else if (ev->button == 1) { recall_mixer_scene (idx); } diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index b05f2181ad..fed44c4555 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -215,7 +215,7 @@ private: std::vector _mixer_scene_buttons; std::vector _mixer_scene_labels; - ARDOUR::MixerScene* _mixer_scene_release; + bool _mixer_scene_momentary; void popup_scene_menu (GdkEventButton* ev, int); bool scene_button_press (GdkEventButton*, int);