diff options
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 9bc5f3d1a0..1ba1be445e 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -67,9 +67,7 @@ Mixer_UI::Mixer_UI (AudioEngine& eng) mix_group_context_menu = 0; no_track_list_redisplay = false; in_group_row_change = false; - - XMLNode* node = ARDOUR_UI::instance()->mixer_settings(); - set_state (*node); + _visible = false; scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); scroller_base.set_name ("MixerWindow"); @@ -213,7 +211,7 @@ Mixer_UI::Mixer_UI (AudioEngine& eng) add_accel_group (ActionManager::ui_manager->get_accel_group()); - signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), static_cast<Gtk::Window *>(this))); + signal_delete_event().connect (mem_fun (*this, &Mixer_UI::hide_window)); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); _plugin_selector = new PluginSelector (PluginManager::the_manager()); @@ -248,8 +246,17 @@ Mixer_UI::show_window () ms = (*ri)[track_columns.strip]; ms->set_width (ms->get_width()); } + _visible = true; +} + +bool +Mixer_UI::hide_window (GdkEventAny *ev) +{ + _visible = false; + return just_hide_it(ev, static_cast<Gtk::Window *>(this)); } + void Mixer_UI::add_strip (Session::RouteList& routes) { @@ -345,8 +352,12 @@ Mixer_UI::strip_button_release_event (GdkEventButton *ev, MixerStrip *strip) void Mixer_UI::connect_to_session (Session* sess) { + session = sess; + XMLNode* node = ARDOUR_UI::instance()->mixer_settings(); + set_state (*node); + string wintitle = _("ardour: mixer: "); wintitle += session->name(); set_title (wintitle); @@ -362,6 +373,10 @@ Mixer_UI::connect_to_session (Session* sess) _plugin_selector->set_session (session); + if (_visible) { + show_window(); + } + start_updating (); } @@ -1048,6 +1063,12 @@ Mixer_UI::set_state (const XMLNode& node) } } + if ((prop = node.property ("show-mixer"))) { + if (prop->value() == "yes") { + _visible = true; + } + } + return 0; } @@ -1089,6 +1110,8 @@ Mixer_UI::get_state (void) node->add_property ("narrow-strips", _strip_width == Narrow ? "yes" : "no"); + node->add_property ("show-mixer", _visible ? "yes" : "no"); + return *node; } |