diff --git a/gtk2_ardour/ardour_dialog.cc b/gtk2_ardour/ardour_dialog.cc index 8c177b5e7c..f04a370aee 100644 --- a/gtk2_ardour/ardour_dialog.cc +++ b/gtk2_ardour/ardour_dialog.cc @@ -118,6 +118,7 @@ void ArdourDialog::on_unmap () { Keyboard::the_keyboard().leave_window (0, this); + pop_splash (); Dialog::on_unmap (); } @@ -131,10 +132,8 @@ ArdourDialog::on_show () if (Splash::exists()) { Splash* spl = Splash::instance(); - if (spl->is_visible()) { - spl->pop_back_for (*this); - _splash_pushed = true; - } + spl->pop_back_for (*this); + _splash_pushed = true; } _sensitive = true; diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc index 824fb43242..6c880d572b 100644 --- a/gtk2_ardour/splash.cc +++ b/gtk2_ardour/splash.cc @@ -165,6 +165,9 @@ Splash::pop_front_for (Gtk::Window& win) #else _window_stack.erase (&win); #endif + if (_window_stack.empty ()) { + display (); + } } void @@ -247,7 +250,7 @@ Splash::expose (GdkEventExpose* ev) void Splash::boot_message (std::string msg) { - if (!is_visible()) { + if (!is_visible() && _window_stack.empty ()) { display (); } message (msg); @@ -290,8 +293,6 @@ Splash::message (const string& msg) str += Gtkmm2ext::markup_escape_text (msg); str += ""; - show (); - layout->set_markup (str); Glib::RefPtr win = darea.get_window();