summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/gtkmm2ext/searchbar.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gtkmm2ext/gtkmm2ext/searchbar.h')
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/searchbar.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/searchbar.h b/libs/gtkmm2ext/gtkmm2ext/searchbar.h
new file mode 100644
index 0000000000..5096ed53f9
--- /dev/null
+++ b/libs/gtkmm2ext/gtkmm2ext/searchbar.h
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <gtkmm/entry.h>
+#include <string>
+
+namespace Gtkmm2ext {
+
+class SearchBar : public Gtk::Entry
+{
+public:
+ SearchBar(const std::string& placeholder_text = "Search...", bool icon_click_resets = true);
+
+ void reset ();
+ // emitted when the filter has been updated
+ sigc::signal<void, const std::string&> signal_search_string_updated () { return sig_search_string_updated; }
+protected:
+ bool focus_in_event (GdkEventFocus*);
+ bool focus_out_event (GdkEventFocus*);
+
+ bool key_press_event (GdkEventKey*);
+ void icon_clicked_event (Gtk::EntryIconPosition, const GdkEventButton*);
+
+ const std::string placeholder_text;
+ sigc::signal<void, const std::string&> sig_search_string_updated;
+private:
+ void search_string_changed () const;
+
+ Glib::RefPtr<Gdk::Pixbuf> icon;
+ bool icon_click_resets;
+};
+
+}