From 71252aee8e98e25f4aa4b9b4a9da9cb1d9f177cd Mon Sep 17 00:00:00 2001 From: Nikolay Date: Fri, 23 Jan 2015 11:34:56 +0200 Subject: [PATCH] [Summary] Fixed bug #45537 "System Lock button is not active when locked from main menu item" [Feature reviewed] MKolsharnyy [Reviewed] YPozdnyakov --- gtk2_ardour/ardour_ui.cc | 14 ++++++++++++-- gtk2_ardour/ardour_ui.h | 2 ++ gtk2_ardour/session_lock_dialog.cc | 14 ++++++++++++++ gtk2_ardour/session_lock_dialog.h | 3 +++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 673fa1135d..bc69e93304 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -2211,12 +2211,22 @@ ARDOUR_UI::on_lock_button_pressed () { } void -ARDOUR_UI::lock_session () { +ARDOUR_UI::on_lock_session () +{ editor->get_waves_button ("lock_session_button").set_active (true); - session_lock_dialog->run (); +} + +void +ARDOUR_UI::on_unlock_session () +{ editor->get_waves_button ("lock_session_button").set_active (false); } +void +ARDOUR_UI::lock_session () { + session_lock_dialog->run (); +} + bool ARDOUR_UI::screen_lock_is_allowed() const { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 51c22aaaae..2e395f88bf 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -369,6 +369,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool screen_lock_is_allowed() const; void on_lock_button_pressed (); + void on_lock_session (); + void on_unlock_session (); PBD::Signal0 lock_button_was_pressed; bool session_auto_save_is_allowed() const; diff --git a/gtk2_ardour/session_lock_dialog.cc b/gtk2_ardour/session_lock_dialog.cc index 7985a7cdef..91e387a2ca 100644 --- a/gtk2_ardour/session_lock_dialog.cc +++ b/gtk2_ardour/session_lock_dialog.cc @@ -31,6 +31,7 @@ #include "session_lock_dialog.h" #include "i18n.h" #include "dbg_msg.h" +#include "ardour_ui.h" using namespace std; using namespace Gtk; @@ -61,6 +62,19 @@ SessionLockDialog::on_ok (WavesButton*) response (Gtk::RESPONSE_OK); } +void +SessionLockDialog::on_show () +{ + WavesDialog::on_show (); + ARDOUR_UI::instance()->on_lock_session (); +} + +void +SessionLockDialog::on_hide () +{ + ARDOUR_UI::instance()->on_unlock_session (); + WavesDialog::on_hide (); +} bool SessionLockDialog::on_key_press_event (GdkEventKey*) diff --git a/gtk2_ardour/session_lock_dialog.h b/gtk2_ardour/session_lock_dialog.h index 6b20e421ab..9d76e9ec8d 100644 --- a/gtk2_ardour/session_lock_dialog.h +++ b/gtk2_ardour/session_lock_dialog.h @@ -50,6 +50,9 @@ class SessionLockDialog : public WavesDialog { SessionLockDialog (); ~SessionLockDialog (); bool on_key_press_event (GdkEventKey*); + + void on_show (); + void on_hide (); private: WavesButton& _ok_button;