+
+ Gtkmm2ext::Bindings* bindings;
+
+ protected:
+ friend class DisplaySuspender;
+ virtual void suspend_route_redisplay () = 0;
+ virtual void resume_route_redisplay () = 0;
+ gint _suspend_route_redisplay_counter;
+};
+
+class DisplaySuspender {
+ public:
+ DisplaySuspender() {
+ if (g_atomic_int_add(&PublicEditor::instance()._suspend_route_redisplay_counter, 1) == 0) {
+ PublicEditor::instance().suspend_route_redisplay ();
+ }
+ }
+ ~DisplaySuspender () {
+ if (g_atomic_int_dec_and_test (&PublicEditor::instance()._suspend_route_redisplay_counter)) {
+ PublicEditor::instance().resume_route_redisplay ();
+ }
+ }
+};
+
+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 ();
+ }