3 #include "gtkmm2ext/keyboard.h"
4 #include "widgets/searchbar.h"
6 using namespace ArdourWidgets;
8 SearchBar::SearchBar (const std::string& label, bool icon_resets)
9 : placeholder_text (label)
10 , icon_click_resets (icon_resets)
12 set_text (placeholder_text);
13 set_alignment (Gtk::ALIGN_CENTER);
14 signal_key_press_event().connect (sigc::mem_fun (*this, &SearchBar::key_press_event));
15 signal_focus_in_event().connect (sigc::mem_fun (*this, &SearchBar::focus_in_event));
16 signal_focus_out_event().connect (sigc::mem_fun (*this, &SearchBar::focus_out_event));
17 signal_changed().connect (sigc::mem_fun (*this, &SearchBar::search_string_changed));
18 signal_icon_release().connect (sigc::mem_fun (*this, &SearchBar::icon_clicked_event));
22 SearchBar::focus_in_event (GdkEventFocus*)
24 if (get_text ().compare (placeholder_text) == 0) {
28 icon = get_icon_pixbuf ();
30 set_icon_from_pixbuf (Glib::RefPtr<Gdk::Pixbuf> ());
36 SearchBar::focus_out_event (GdkEventFocus*)
38 if (get_text ().empty ()) {
39 set_text (placeholder_text);
43 set_icon_from_pixbuf (icon);
47 search_string_changed ();
52 SearchBar::key_press_event (GdkEventKey* ev)
56 set_text (placeholder_text);
66 SearchBar::icon_clicked_event (Gtk::EntryIconPosition, const GdkEventButton*)
68 if (icon_click_resets) {
72 search_string_changed ();
77 SearchBar::search_string_changed () const
79 const std::string& text = get_text ();
80 if (text.empty() || text.compare (placeholder_text) == 0) {
81 sig_search_string_updated ("");
84 sig_search_string_updated (text);
90 set_text (placeholder_text);
91 search_string_changed ();