Put the sidechain ports into a dedicated tab in PortMatrix
[ardour.git] / gtk2_ardour / window_manager.cc
index 24ed57da6d4f3fc330332cfc2922daf0a90cd2b7..1d63751c5ec369e9f1fe1eee4c768274206b02e0 100644 (file)
@@ -32,7 +32,7 @@
 #include "window_manager.h"
 #include "processor_box.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using std::string;
 using namespace WM;
@@ -68,10 +68,10 @@ Manager::register_window (ProxyBase* info)
                if (!window_actions) {
                        window_actions = ARDOUR_UI::instance()->global_actions.create_action_group (X_("Window"));
                }
-               
-               info->set_action (ARDOUR_UI::instance()->global_actions.register_toggle_action (window_actions,
-                        info->action_name().c_str(), info->menu_name().c_str(),
-                        sigc::bind (sigc::mem_fun (*this, &Manager::toggle_window), info)));
+
+               ARDOUR_UI::instance()->global_actions.register_toggle_action (window_actions,
+                                                                             info->action_name().c_str(), info->menu_name().c_str(),
+                                                                             sigc::bind (sigc::mem_fun (*this, &Manager::toggle_window), info));
 
                info->signal_map.connect (sigc::bind (sigc::mem_fun (*this, &Manager::window_proxy_was_mapped), info));
                info->signal_unmap.connect (sigc::bind (sigc::mem_fun (*this, &Manager::window_proxy_was_unmapped), info));
@@ -144,12 +144,27 @@ Manager::show_visible() const
 {
        for (Windows::const_iterator i = _windows.begin(); i != _windows.end(); ++i) {
                if ((*i)->visible()) {
-                       if (! (*i)->get (true)) {
+                       Gtk::Window* win = (*i)->get (true);
+                       if (!win) {
                                /* the window may be a plugin GUI for a plugin which
                                 * is disabled or longer present.
                                 */
                                continue;
                        }
+                       if (dynamic_cast<ArdourDialog*> (win)) {
+                               /* do not show dialogs at startup. Most
+                                * dialogs require some signal connection work
+                                * because we are trying to avoid recursive
+                                * event loops (connecting instead to
+                                * ::signal_response(). This means we need to
+                                * destroy the window as well, so that the code
+                                * which checks if it should be created will
+                                * find that it is missing and will create it
+                                * and connect to any necessary signals.
+                                */
+                               (*i)->drop_window ();
+                               continue;
+                       }
                        (*i)->show_all ();
                        (*i)->present ();
                }