use Tracks' MainMenuDisabler during session lock (could be improved with more RAII)

This commit is contained in:
Paul Davis 2015-05-06 12:10:41 -04:00
parent 37077f6b8c
commit d6511acd18
4 changed files with 24 additions and 11 deletions

View file

@ -300,6 +300,7 @@ Editor::Editor ()
, _following_mixer_selection (false)
, _control_point_toggled_on_press (false)
, _stepping_axis_view (0)
, _main_menu_disabler (0)
{
constructed = false;

View file

@ -2237,6 +2237,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void update_bring_in_message (Gtk::Label* label, uint32_t n, uint32_t total, std::string name);
void bring_all_sources_into_session ();
MainMenuDisabler* _main_menu_disabler;
friend class Drag;
friend class RegionDrag;
friend class RegionMoveDrag;

View file

@ -7541,15 +7541,10 @@ Editor::lock ()
lock_dialog->get_vbox()->show_all ();
lock_dialog->set_size_request (200, 200);
}
delete _main_menu_disabler;
_main_menu_disabler = new MainMenuDisabler;
#ifdef __APPLE__
/* The global menu bar continues to be accessible to applications
with modal dialogs, which means that we need to desensitize
all items in the menu bar. Since those items are really just
proxies for actions, that means disabling all actions.
*/
ActionManager::disable_all_actions ();
#endif
lock_dialog->present ();
}
@ -7558,9 +7553,7 @@ Editor::unlock ()
{
lock_dialog->hide ();
#ifdef __APPLE__
ActionManager::pop_action_state ();
#endif
delete _main_menu_disabler;
if (ARDOUR_UI::config()->get_lock_gui_after_seconds()) {
start_lock_event_timing ();

View file

@ -40,6 +40,8 @@
#include "pbd/statefuldestructible.h"
#include "canvas/fwd.h"
#include "gtkmm2ext/actions.h"
#include "gtkmm2ext/visibility_tracker.h"
#include "editing.h"
@ -459,4 +461,19 @@ class DisplaySuspender {
}
};
class MainMenuDisabler {
public:
MainMenuDisabler () {
/* The global menu bar continues to be accessible to applications
with modal dialogs on mac, which means that we need to desensitize
all items in the menu bar.
*/
ActionManager::disable_active_actions ();
}
~MainMenuDisabler () {
ActionManager::enable_active_actions ();
}
};
#endif // __gtk_ardour_public_editor_h__