1 #include "gtkmm2ext/searchbar.h"
2 #include "gtkmm2ext/keyboard.h"
7 SearchBar::SearchBar (const std::string& label, bool icon_resets)
8 : placeholder_text (label)
9 , icon_click_resets (icon_resets)
11 set_text (placeholder_text);
12 set_alignment (Gtk::ALIGN_CENTER);
13 signal_key_press_event().connect (sigc::mem_fun (*this, &SearchBar::key_press_event));
14 signal_focus_in_event().connect (sigc::mem_fun (*this, &SearchBar::focus_in_event));
15 signal_focus_out_event().connect (sigc::mem_fun (*this, &SearchBar::focus_out_event));
16 signal_changed().connect (sigc::mem_fun (*this, &SearchBar::search_string_changed));
17 signal_icon_release().connect (sigc::mem_fun (*this, &SearchBar::icon_clicked_event));
21 SearchBar::focus_in_event (GdkEventFocus*)
23 if (get_text ().compare (placeholder_text) == 0) {
27 icon = get_icon_pixbuf ();
29 set_icon_from_pixbuf (Glib::RefPtr<Gdk::Pixbuf> ());
35 SearchBar::focus_out_event (GdkEventFocus*)
37 if (get_text ().empty ()) {
38 set_text (placeholder_text);
42 set_icon_from_pixbuf (icon);
46 search_string_changed ();
51 SearchBar::key_press_event (GdkEventKey* ev)
55 set_text (placeholder_text);
65 SearchBar::icon_clicked_event (Gtk::EntryIconPosition, const GdkEventButton*)
67 if (icon_click_resets) {
71 search_string_changed ();
76 SearchBar::search_string_changed () const
78 const std::string& text = get_text ();
79 if (text.empty() || text.compare (placeholder_text) == 0) {
80 sig_search_string_updated ("");
83 sig_search_string_updated (text);
89 set_text (placeholder_text);
90 search_string_changed ();