summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-01 16:40:07 +0200
committerRobin Gareus <robin@gareus.org>2017-04-01 16:40:07 +0200
commit3e43585fa133d052b27aba10d1fe89dea3061904 (patch)
tree5f4237264193cf8975a150e0793349f7ff5b37dd /gtk2_ardour
parentdae7e8dbd312d2d47b8eb4ffb1025555d537711c (diff)
Pop splash on dialog response - not d'tor.
A Dialog Window may not be tightly scoped, and may be around for a while (query settings from the dialog instance). The destructor may only be called later.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_dialog.cc19
-rw-r--r--gtk2_ardour/ardour_dialog.h2
-rw-r--r--gtk2_ardour/engine_dialog.cc9
3 files changed, 19 insertions, 11 deletions
diff --git a/gtk2_ardour/ardour_dialog.cc b/gtk2_ardour/ardour_dialog.cc
index 99722d426f..0287d8c48b 100644
--- a/gtk2_ardour/ardour_dialog.cc
+++ b/gtk2_ardour/ardour_dialog.cc
@@ -53,15 +53,30 @@ ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool
ArdourDialog::~ArdourDialog ()
{
+ pop_splash ();
+ Keyboard::the_keyboard().focus_out_window (0, this);
+ WM::Manager::instance().remove (proxy);
+}
+
+void
+ArdourDialog::on_response (int response_id)
+{
+ pop_splash ();
+ hide ();
+ Gtk::Dialog::on_response (response_id);
+}
+
+void
+ArdourDialog::pop_splash ()
+{
if (_splash_pushed) {
Splash* spl = Splash::instance();
if (spl) {
spl->pop_front();
}
+ _splash_pushed = false;
}
- Keyboard::the_keyboard().focus_out_window (0, this);
- WM::Manager::instance().remove (proxy);
}
bool
diff --git a/gtk2_ardour/ardour_dialog.h b/gtk2_ardour/ardour_dialog.h
index 3c1b869e73..c65eaa5a09 100644
--- a/gtk2_ardour/ardour_dialog.h
+++ b/gtk2_ardour/ardour_dialog.h
@@ -47,11 +47,13 @@ public:
bool on_delete_event (GdkEventAny*);
void on_unmap ();
void on_show ();
+ void on_response (int);
private:
WM::ProxyTemporary* proxy;
bool _splash_pushed;
void init ();
+ void pop_splash ();
static sigc::signal<void> CloseAllDialogs;
};
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc
index 8b93cbf799..1a836f919c 100644
--- a/gtk2_ardour/engine_dialog.cc
+++ b/gtk2_ardour/engine_dialog.cc
@@ -417,9 +417,6 @@ void
EngineControl::on_show ()
{
ArdourDialog::on_show ();
- if (Splash::instance()) {
- Splash::instance()->hide ();
- }
if (!ARDOUR::AudioEngine::instance()->current_backend() || !ARDOUR::AudioEngine::instance()->running()) {
// re-check _have_control (jackd running) see #6041
backend_changed ();
@@ -2736,9 +2733,6 @@ EngineControl::start_stop_button_clicked ()
start_engine ();
if (!ARDOUR_UI::instance()->session_loaded) {
ArdourDialog::on_response (RESPONSE_OK);
- if (Splash::instance()) {
- Splash::instance()->pop_front ();
- }
}
}
}
@@ -3152,9 +3146,6 @@ EngineControl::connect_disconnect_click()
start_engine ();
if (!ARDOUR_UI::instance()->session_loaded) {
ArdourDialog::on_response (RESPONSE_OK);
- if (Splash::instance()) {
- Splash::instance()->pop_front ();
- }
}
}
}