diff options
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_dialogs.cc | 21 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 2 |
5 files changed, 19 insertions, 13 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index e2edc18f0a..261fe4a8d5 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -437,7 +437,7 @@ <menuitem action='ToggleBundleManager'/> <menuitem action='ToggleThemeManager'/> <menuitem action='ToggleBigClock'/> - <menuitem action='ToggleMIDITracer'/> + <menuitem action='NewMIDITracer'/> <menuitem action='toggle-audio-connection-manager'/> <menuitem action='toggle-midi-connection-manager'/> <menuitem action='toggle-log-window'/> diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index c0cc88f24e..da85048fb4 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -165,7 +165,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void toggle_theme_manager (); void toggle_bundle_manager (); void toggle_big_clock_window (); - void toggle_midi_tracer_window (); + void new_midi_tracer_window (); void toggle_route_params_window (); void toggle_editing_space(); @@ -327,7 +327,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void update_transport_clocks (nframes_t pos); void record_state_changed (); - MidiTracer* _midi_tracer_window; + std::list<MidiTracer*> _midi_tracer_windows; /* Transport Control */ diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 3a321cc5e3..da518e1b13 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -107,9 +107,6 @@ ARDOUR_UI::setup_windows () setup_transport(); build_menu_bar (); - _midi_tracer_window = new MidiTracer (); - manage_window (*_midi_tracer_window); - setup_tooltips (); return 0; 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 (); } } diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 80950e2d32..e60f681823 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -225,7 +225,7 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); act = ActionManager::register_toggle_action (common_actions, X_("ToggleBigClock"), _("Big Clock"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window)); ActionManager::session_sensitive_actions.push_back (act); - act = ActionManager::register_toggle_action (common_actions, X_("ToggleMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_midi_tracer_window)); + act = ActionManager::register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window)); ActionManager::session_sensitive_actions.push_back (act); ActionManager::register_action (common_actions, X_("About"), _("About"), sigc::mem_fun(*this, &ARDOUR_UI::show_about)); ActionManager::register_action (common_actions, X_("Chat"), _("Chat"), sigc::mem_fun(*this, &ARDOUR_UI::launch_chat)); |