summaryrefslogtreecommitdiff
path: root/libs/widgets
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-10-20 21:21:57 +0200
committerRobin Gareus <robin@gareus.org>2019-10-20 21:21:57 +0200
commit88fc226107fac56481b2b429865d93a526b5ab04 (patch)
tree5970871b48aa70685a9b9febf9677e1104fb1b4d /libs/widgets
parent20daca929001c27de3b4f238301b8b8af1beefc6 (diff)
Add API to set select item from ArdourDropdown
This fixes an issue with scroll-wheel control which uses `get_active()`. It work around an issue with gtkmm: const MenuItem* get_active () const void set_active (guint index) and MenuList::activate_item() not emitting activate_item().
Diffstat (limited to 'libs/widgets')
-rw-r--r--libs/widgets/ardour_dropdown.cc16
-rw-r--r--libs/widgets/widgets/ardour_dropdown.h3
2 files changed, 18 insertions, 1 deletions
diff --git a/libs/widgets/ardour_dropdown.cc b/libs/widgets/ardour_dropdown.cc
index 321992d632..822d1fdb26 100644
--- a/libs/widgets/ardour_dropdown.cc
+++ b/libs/widgets/ardour_dropdown.cc
@@ -80,6 +80,22 @@ ArdourDropdown::on_button_press_event (GdkEventButton* ev)
return true;
}
+void
+ArdourDropdown::set_active (std::string const& text)
+{
+ using namespace Menu_Helpers;
+ const MenuList& items = _menu.items ();
+ int c = 0;
+ for (MenuList::const_iterator i = items.begin(); i != items.end(); ++i, ++c) {
+ if (i->get_label() == text) {
+ _menu.set_active(c);
+ _menu.activate_item(*i);
+ break;
+ }
+ }
+ set_text (text);
+}
+
bool
ArdourDropdown::on_scroll_event (GdkEventScroll* ev)
{
diff --git a/libs/widgets/widgets/ardour_dropdown.h b/libs/widgets/widgets/ardour_dropdown.h
index 9f88c84a38..8b62d7e27a 100644
--- a/libs/widgets/widgets/ardour_dropdown.h
+++ b/libs/widgets/widgets/ardour_dropdown.h
@@ -51,9 +51,10 @@ public:
Gtk::Menu_Helpers::MenuList& items () { return _menu.items (); }
void append_text_item (std::string const& text);
+ void set_active (std::string const& text);
protected:
- void default_text_handler (std::string const& text);
+ void default_text_handler (std::string const&);
private:
Gtk::Menu _menu;