MixerScenes: highlight momentarily recalled scenes by using libardour 'undo'
* also moves 'momentary' into libardour so it can be accessed by other UIs
This commit is contained in:
parent
a40c8d8e9a
commit
01c7e14c6e
|
@ -125,7 +125,6 @@ Mixer_UI::instance ()
|
||||||
Mixer_UI::Mixer_UI ()
|
Mixer_UI::Mixer_UI ()
|
||||||
: Tabbable (_content, _("Mixer"), X_("mixer"))
|
: Tabbable (_content, _("Mixer"), X_("mixer"))
|
||||||
, plugin_search_clear_button (Stock::CLEAR)
|
, plugin_search_clear_button (Stock::CLEAR)
|
||||||
, _mixer_scene_release (0)
|
|
||||||
, no_track_list_redisplay (false)
|
, no_track_list_redisplay (false)
|
||||||
, in_group_row_change (false)
|
, in_group_row_change (false)
|
||||||
, track_menu (0)
|
, track_menu (0)
|
||||||
|
@ -447,7 +446,6 @@ Mixer_UI::~Mixer_UI ()
|
||||||
delete _plugin_selector;
|
delete _plugin_selector;
|
||||||
delete track_menu;
|
delete track_menu;
|
||||||
delete _group_tabs;
|
delete _group_tabs;
|
||||||
delete _mixer_scene_release;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MixerStripSorter {
|
struct MixerStripSorter {
|
||||||
|
@ -4115,16 +4113,16 @@ Mixer_UI::scene_button_press (GdkEventButton* ev, int idx)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_mixer_scene_momentary = false;
|
||||||
|
|
||||||
if (Keyboard::is_context_menu_event (ev)) {
|
if (Keyboard::is_context_menu_event (ev)) {
|
||||||
popup_scene_menu (ev, idx);
|
popup_scene_menu (ev, idx);
|
||||||
} else if (Keyboard::is_delete_event (ev)) {
|
} else if (Keyboard::is_delete_event (ev)) {
|
||||||
clear_mixer_scene (idx, true);
|
clear_mixer_scene (idx, true);
|
||||||
} else if (Keyboard::is_momentary_push_event (ev)) {
|
} else if (Keyboard::is_momentary_push_event (ev)) {
|
||||||
/* momentary */
|
/* momentary */
|
||||||
delete _mixer_scene_release; // .. or keep existing?
|
_mixer_scene_momentary = true;
|
||||||
_mixer_scene_release = new MixerScene (*_session);
|
recall_mixer_scene(idx, false);
|
||||||
_mixer_scene_release->snapshot (); // TODO; prevent changed signal
|
|
||||||
recall_mixer_scene (idx, false);
|
|
||||||
return false;
|
return false;
|
||||||
} else if (ev->button == 1) {
|
} else if (ev->button == 1) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -4136,10 +4134,12 @@ Mixer_UI::scene_button_press (GdkEventButton* ev, int idx)
|
||||||
bool
|
bool
|
||||||
Mixer_UI::scene_button_release (GdkEventButton* ev, int idx)
|
Mixer_UI::scene_button_release (GdkEventButton* ev, int idx)
|
||||||
{
|
{
|
||||||
if (_mixer_scene_release) {
|
if (!_session) {
|
||||||
_mixer_scene_release->apply ();
|
return false;
|
||||||
delete _mixer_scene_release;
|
}
|
||||||
_mixer_scene_release = 0;
|
if (_mixer_scene_momentary) {
|
||||||
|
_session->apply_mixer_scene_undo();
|
||||||
|
_mixer_scene_momentary = false;
|
||||||
} else if (ev->button == 1) {
|
} else if (ev->button == 1) {
|
||||||
recall_mixer_scene (idx);
|
recall_mixer_scene (idx);
|
||||||
}
|
}
|
||||||
|
|
|
@ -215,7 +215,7 @@ private:
|
||||||
|
|
||||||
std::vector<ArdourWidgets::ArdourButton*> _mixer_scene_buttons;
|
std::vector<ArdourWidgets::ArdourButton*> _mixer_scene_buttons;
|
||||||
std::vector<Gtk::Label*> _mixer_scene_labels;
|
std::vector<Gtk::Label*> _mixer_scene_labels;
|
||||||
ARDOUR::MixerScene* _mixer_scene_release;
|
bool _mixer_scene_momentary;
|
||||||
|
|
||||||
void popup_scene_menu (GdkEventButton* ev, int);
|
void popup_scene_menu (GdkEventButton* ev, int);
|
||||||
bool scene_button_press (GdkEventButton*, int);
|
bool scene_button_press (GdkEventButton*, int);
|
||||||
|
|
Loading…
Reference in New Issue