diff options
author | Carl Hetherington <carl@carlh.net> | 2010-07-08 01:21:22 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-07-08 01:21:22 +0000 |
commit | c546ad359a1edb9cc2c2383cac00d49648b97268 (patch) | |
tree | d040c430f78f2ce18b038bfd88efea50f8c752dd /gtk2_ardour/ardour_ui_dialogs.cc | |
parent | 4885f29be158999626eb6dfa5507fe2258d388b0 (diff) |
Allow multiple MIDI tracer windows.
git-svn-id: svn://localhost/ardour2/branches/3.0@7392 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui_dialogs.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 6ae05ef0ee..096f8ac730 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -216,18 +216,27 @@ ARDOUR_UI::toggle_big_clock_window () } void -ARDOUR_UI::toggle_midi_tracer_window () +ARDOUR_UI::new_midi_tracer_window () { - RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("ToggleMIDITracer")); + RefPtr<Action> act = ActionManager::get_action (X_("Common"), X_("NewMIDITracer")); if (!act) { return; } - RefPtr<ToggleAction> tact = RefPtr<ToggleAction>::cast_dynamic (act); - if (tact->get_active ()) { - _midi_tracer_window->show_all (); + std::list<MidiTracer*>::iterator i = _midi_tracer_windows.begin (); + while (i != _midi_tracer_windows.end() && (*i)->get_visible() == true) { + ++i; + } + + if (i == _midi_tracer_windows.end()) { + /* all our MIDITracer windows are visible; make a new one */ + MidiTracer* t = new MidiTracer (); + manage_window (*t); + t->show_all (); + _midi_tracer_windows.push_back (t); } else { - _midi_tracer_window->hide (); + /* re-use the hidden one */ + (*i)->show_all (); } } |