From 7fe9fb1f4e127e312a9475cb75c9fa0cab6e5523 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 17 Dec 2019 01:53:33 +0100 Subject: [PATCH] Indicate current Disk-I/O setting --- gtk2_ardour/processor_box.cc | 17 ++++++++++++++--- gtk2_ardour/processor_box.h | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index c1d67cffca..5eb60d2cca 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -40,6 +40,8 @@ #include +#include "pbd/unwind.h" + #include "gtkmm2ext/colors.h" #include "gtkmm2ext/gtk_ui.h" #include "gtkmm2ext/menu_elems.h" @@ -114,6 +116,8 @@ using namespace Gtkmm2ext; using namespace ArdourWidgets; ProcessorBox* ProcessorBox::_current_processor_box = 0; +bool ProcessorBox::_ignore_disk_io_change = false; + RefPtr ProcessorBox::paste_action; RefPtr ProcessorBox::cut_action; RefPtr ProcessorBox::copy_action; @@ -2276,6 +2280,10 @@ ProcessorBox::show_processor_menu (int arg) manage_pins_action->set_sensitive (pi != 0); if (boost::dynamic_pointer_cast(_route)) { disk_io_action->set_sensitive (true); + PBD::Unwinder uw (_ignore_disk_io_change, true); + ActionManager::get_toggle_action (X_("ProcessorMenu"), "disk-io-prefader")->set_active (_route->disk_io_point () == DiskIOPreFader); + ActionManager::get_toggle_action (X_("ProcessorMenu"), "disk-io-postfader")->set_active (_route->disk_io_point () == DiskIOPostFader); + ActionManager::get_toggle_action (X_("ProcessorMenu"), "disk-io-custom")->set_active (_route->disk_io_point () == DiskIOCustom); } else { disk_io_action->set_sensitive (false); } @@ -3841,9 +3849,9 @@ ProcessorBox::register_actions () /* Disk IO stuff */ disk_io_action = ActionManager::register_action (processor_box_actions, X_("disk-io-menu"), _("Disk I/O ...")); - ActionManager::register_action (processor_box_actions, X_("disk-io-prefader"), _("Pre-Fader."), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOPreFader)); - ActionManager::register_action (processor_box_actions, X_("disk-io-postfader"), _("Post-Fader."), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOPostFader)); - ActionManager::register_action (processor_box_actions, X_("disk-io-custom"), _("Custom."), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOCustom)); + ActionManager::register_toggle_action (processor_box_actions, X_("disk-io-prefader"), _("Pre-Fader"), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOPreFader)); + ActionManager::register_toggle_action (processor_box_actions, X_("disk-io-postfader"), _("Post-Fader"), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOPostFader)); + ActionManager::register_toggle_action (processor_box_actions, X_("disk-io-custom"), _("Custom"), sigc::bind (sigc::ptr_fun (ProcessorBox::rb_set_disk_io_position), DiskIOCustom)); /* show editors */ edit_action = ActionManager::register_action ( @@ -3882,6 +3890,9 @@ ProcessorBox::rb_set_disk_io_position (DiskIOPoint diop) if (_current_processor_box == 0) { return; } + if (_ignore_disk_io_change) { + return; + } _current_processor_box->set_disk_io_position (diop); } diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 5389a404ce..4b49dbe67f 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -628,6 +628,8 @@ private: XMLNode* entry_gui_object_state (ProcessorEntry *); PBD::ScopedConnection amp_config_connection; + + static bool _ignore_disk_io_change; }; #endif /* __ardour_gtk_processor_box__ */