use Tracks' MainMenuDisabler during session lock (could be improved with more RAII)
This commit is contained in:
parent
2363fb71e3
commit
a81bfbfc41
@ -302,6 +302,7 @@ Editor::Editor ()
|
||||
, _control_point_toggled_on_press (false)
|
||||
, _stepping_axis_view (0)
|
||||
, quantize_dialog (0)
|
||||
, _main_menu_disabler (0)
|
||||
{
|
||||
constructed = false;
|
||||
|
||||
|
@ -2239,6 +2239,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
||||
void bring_all_sources_into_session ();
|
||||
|
||||
QuantizeDialog* quantize_dialog;
|
||||
MainMenuDisabler* _main_menu_disabler;
|
||||
|
||||
friend class Drag;
|
||||
friend class RegionDrag;
|
||||
|
@ -7547,15 +7547,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 ();
|
||||
}
|
||||
|
||||
@ -7564,9 +7559,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 ();
|
||||
|
@ -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__
|
||||
|
Loading…
Reference in New Issue
Block a user