diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index fdd680a669..865fba97db 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3802,7 +3802,22 @@ static MessageDialog *scan_dlg = NULL; void ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin, bool can_cancel) { - if (!Config->get_show_plugin_scan_window()) { return; } + if (type == X_("closeme") && !(scan_dlg && scan_dlg->is_mapped())) { + return; + } + + const bool cancelled = PluginManager::instance().cancelled(); + if (type != X_("closeme") && !Config->get_show_plugin_scan_window()) { + if (cancelled && scan_dlg->is_mapped()) { + scan_dlg->hide(); + gui_idle_handler(); + return; + } + if (cancelled || !can_cancel) { + return; + } + } + static Gtk::Button *cancel_button; if (!scan_dlg) { scan_dlg = new MessageDialog("", false, MESSAGE_INFO, BUTTONS_NONE); @@ -3823,19 +3838,16 @@ ARDOUR_UI::plugin_scan_dialog (std::string type, std::string plugin, bool can_ca scan_dlg->set_message(type + ": " + Glib::path_get_basename(plugin)); scan_dlg->show_all(); } - cancel_button->set_sensitive(can_cancel); + cancel_button->set_sensitive(can_cancel && !cancelled); - /* due to idle calls, gtk_events_pending() may always return true */ - int timeout = 30; - while (gtk_events_pending() && --timeout) { - gtk_main_iteration (); - } + gui_idle_handler(); } void ARDOUR_UI::gui_idle_handler () { int timeout = 30; + /* due to idle calls, gtk_events_pending() may always return true */ while (gtk_events_pending() && --timeout) { gtk_main_iteration (); } diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index b3f95f4547..f465aade1d 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -999,7 +999,7 @@ class PluginOptions : public OptionEditorBox public: PluginOptions (RCConfiguration* c) : _rc_config (c) - , _display_plugin_scan_progress (_("Display Plugin Scan Progress")) + , _display_plugin_scan_progress (_("Always Display Plugin Scan Progress")) , _discover_vst_on_start (_("Scan for new VST Plugins on Application Start")) { Label *l; @@ -1015,16 +1015,17 @@ public: t->attach (*manage (new Label ("")), 0, 3, n, n+1, FILL | EXPAND); ++n; t->attach (*l, 0, 2, n, n+1, FILL | EXPAND); ++n; - b = manage (new Button (_("Refresh Plugin List"))); + b = manage (new Button (_("Scan for Plugins"))); b->signal_clicked().connect (sigc::mem_fun (*this, &PluginOptions::refresh_clicked)); t->attach (*b, 0, 2, n, n+1, FILL); ++n; t->attach (_display_plugin_scan_progress, 0, 2, n, n+1); ++n; _display_plugin_scan_progress.signal_toggled().connect (sigc::mem_fun (*this, &PluginOptions::display_plugin_scan_progress_toggled)); Gtkmm2ext::UI::instance()->set_tip (_display_plugin_scan_progress, - _("When enabled display a popup window showing plugin scan progress.")); + _("When enabled a popup window showing plugin scan progress is displayed for indexing (cache load) and discovery (detect new plugins)")); + ss.str(""); ss << "" << _("VST") << ""; l = manage (left_aligned_label (ss.str())); l->set_use_markup (true); @@ -1043,7 +1044,7 @@ public: t->attach (_discover_vst_on_start, 0, 2, n, n+1); ++n; _discover_vst_on_start.signal_toggled().connect (sigc::mem_fun (*this, &PluginOptions::discover_vst_on_start_toggled)); Gtkmm2ext::UI::instance()->set_tip (_discover_vst_on_start, - _("When enabled VST plugins are searched and tested on application start. When disabled they a Refresh will have to be tiggered manually")); + _("When enabled new VST plugins are searched, tested and added to the cache index on application start. When disabled new plugins will only be available after triggering a 'Scan' manually")); #ifdef WINDOWS_VST_SUPPORT t->attach (*manage (left_aligned_label (_("Windows VST Path:"))), 0, 1, n, n+1);