do not show windows derived from ArdourDialog at startup.
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 12 Jul 2016 14:27:19 +0000 (10:27 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 12 Jul 2016 14:27:19 +0000 (10:27 -0400)
See code comment for more details

gtk2_ardour/window_manager.cc

index 24ed57da6d4f3fc330332cfc2922daf0a90cd2b7..73260b1f56828d423e46acf72aa76a78fa5545de 100644 (file)
@@ -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 ();
                }