summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/window_manager.cc17
1 files changed, 16 insertions, 1 deletions
diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc
index 24ed57da6d..73260b1f56 100644
--- a/gtk2_ardour/window_manager.cc
+++ b/gtk2_ardour/window_manager.cc
@@ -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 ();
}