X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_selector.cc;h=2a1ce85ee393b03c3eb96462ceac2c07ba06e183;hb=2fd506c07c6e6d590137e8c5c197560827be2bc3;hp=f11753819a4405789c6fc524ac776982beba88c7;hpb=f4b5f4c72ee60b6f509e307c5bfd164108d1f30b;p=ardour.git diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index f11753819a..2a1ce85ee3 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -73,6 +73,7 @@ PluginSelector::PluginSelector (PluginManager& mgr) in_row_change = false; manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::build_plugin_menu, this), gui_context()); + manager.PluginListChanged.connect (plugin_list_changed_connection, invalidator (*this), boost::bind (&PluginSelector::refill, this), gui_context()); build_plugin_menu (); plugin_model = Gtk::ListStore::create (plugin_columns); @@ -186,6 +187,7 @@ PluginSelector::PluginSelector (PluginManager& mgr) btn_add->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_add_clicked)); btn_remove->signal_clicked().connect(sigc::mem_fun(*this, &PluginSelector::btn_remove_clicked)); added_list.get_selection()->signal_changed().connect (sigc::mem_fun(*this, &PluginSelector::added_list_selection_changed)); + added_list.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::added_row_clicked)); refill (); } @@ -201,6 +203,13 @@ PluginSelector::row_activated(Gtk::TreeModel::Path, Gtk::TreeViewColumn*) btn_add_clicked(); } +void +PluginSelector::added_row_clicked(GdkEventButton* event) +{ + if (event->type == GDK_2BUTTON_PRESS) + btn_remove_clicked(); +} + bool PluginSelector::show_this_plugin (const PluginInfoPtr& info, const std::string& filterstr) { @@ -310,9 +319,17 @@ PluginSelector::refiller (const PluginInfoList& plugs, const::std::string& filte string::size_type pos = 0; /* stupid LADSPA creator strings */ - +#ifdef PLATFORM_WINDOWS + while (pos < creator.length() && creator[pos] > -2 && creator[pos] < 256 && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; +#else while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; - creator = creator.substr (0, pos); +#endif + // If there were too few characters to create a + // meaningful name, mark this creator as 'Unknown' + if (creator.length()<2 || pos<3) + creator = "Unknown"; + else + creator = creator.substr (0, pos); newrow[plugin_columns.creator] = creator; @@ -433,7 +450,6 @@ void PluginSelector::btn_update_clicked() { manager.refresh (); - refill(); } void @@ -681,8 +697,21 @@ PluginSelector::create_by_creator_menu (ARDOUR::PluginInfoList& all_plugs) /* stupid LADSPA creator strings */ string::size_type pos = 0; +#ifdef PLATFORM_WINDOWS + while (pos < creator.length() && creator[pos]>(-2) && creator[pos]<256 && (isprint (creator[pos]))) ++pos; +#else while (pos < creator.length() && (isalnum (creator[pos]) || isspace (creator[pos]))) ++pos; - creator = creator.substr (0, pos); +#endif + + // Check to see if we found any invalid characters. + if (creator.length() != pos) { + // If there were too few characters to create a + // meaningful name, mark this creator as 'Unknown' + if (pos<3) + creator = "Unknown?"; + else + creator = creator.substr (0, pos); + } SubmenuMap::iterator x; Gtk::Menu* submenu;