diff options
author | Robin Gareus <robin@gareus.org> | 2019-10-20 21:21:57 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-10-20 21:21:57 +0200 |
commit | 88fc226107fac56481b2b429865d93a526b5ab04 (patch) | |
tree | 5970871b48aa70685a9b9febf9677e1104fb1b4d /libs/widgets | |
parent | 20daca929001c27de3b4f238301b8b8af1beefc6 (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.cc | 16 | ||||
-rw-r--r-- | libs/widgets/widgets/ardour_dropdown.h | 3 |
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; |