summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/bemenu.h16
-rw-r--r--lib/menu.c30
2 files changed, 46 insertions, 0 deletions
diff --git a/lib/bemenu.h b/lib/bemenu.h
index 6348693..d348ffa 100644
--- a/lib/bemenu.h
+++ b/lib/bemenu.h
@@ -401,6 +401,22 @@ void bmItemSetUserdata(bmItem *item, void *userdata);
void* bmItemGetUserdata(bmItem *item);
/**
+ * Set filter text to bmMenu instance.
+ *
+ * @param menu bmMenu instance where to set filter.
+ * @param filter Null terminated C "string" to act as filter.
+ */
+void bmMenuSetFilter(bmMenu *menu, const char *filter);
+
+/**
+ * Get filter text from bmMenu instance.
+ *
+ * @param menu bmMenu instance where to get filter.
+ * @return Const pointer to current filter text, may be **NULL** if empty.
+ */
+const char* bmMenuGetFilter(bmMenu *menu);
+
+/**
* Set text to bmItem instance.
*
* @param item bmItem instance where to set text.
diff --git a/lib/menu.c b/lib/menu.c
index c5c98ad..cb0d3ee 100644
--- a/lib/menu.c
+++ b/lib/menu.c
@@ -117,6 +117,36 @@ void* bmMenuGetUserdata(bmMenu *menu)
}
/**
+ * Set filter text to bmMenu instance.
+ *
+ * @param menu bmMenu instance where to set filter.
+ * @param filter Null terminated C "string" to act as filter.
+ */
+void bmMenuSetFilter(bmMenu *menu, const char *filter)
+{
+ assert(menu);
+
+ if (!filter) {
+ memset(menu->filter, 0, sizeof(menu->filter));
+ return;
+ }
+
+ strncpy(menu->filter, filter, sizeof(menu->filter));
+}
+
+/**
+ * Get filter text from bmMenu instance.
+ *
+ * @param menu bmMenu instance where to get filter.
+ * @return Const pointer to current filter text, may be **NULL** if empty.
+ */
+const char* bmMenuGetFilter(bmMenu *menu)
+{
+ assert(menu);
+ return menu->filter;
+}
+
+/**
* Set active filter mode to bmMenu instance.
*
* @param menu bmMenu instance where to set filter mode.