summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/bemenu.h34
-rw-r--r--lib/internal.h12
-rw-r--r--lib/item.c25
-rw-r--r--lib/menu.c25
4 files changed, 96 insertions, 0 deletions
diff --git a/lib/bemenu.h b/lib/bemenu.h
index 250ad53..65625b3 100644
--- a/lib/bemenu.h
+++ b/lib/bemenu.h
@@ -123,6 +123,23 @@ void bmMenuFreeItems(bmMenu *menu);
* @{ */
/**
+ * Set userdata pointer to bmMenu instance.
+ * Userdata will be carried unmodified by the instance.
+ *
+ * @param menu bmMenu instance where to set userdata pointer.
+ * @param userdata Pointer to userdata.
+ */
+void bmMenuSetUserdata(bmMenu *menu, void *userdata);
+
+/**
+ * Get userdata pointer from bmMenu instance.
+ *
+ * @param menu bmMenu instance which userdata pointer to get.
+ * @return Pointer for unmodified userdata.
+ */
+void* bmMenuGetUserdata(bmMenu *menu);
+
+/**
* Set active filter mode to bmMenu instance.
*
* @param menu bmMenu instance where to set filter mode.
@@ -352,6 +369,23 @@ void bmItemFree(bmItem *item);
* @{ */
/**
+ * Set userdata pointer to bmItem instance.
+ * Userdata will be carried unmodified by the instance.
+ *
+ * @param item bmItem instance where to set userdata pointer.
+ * @param userdata Pointer to userdata.
+ */
+void bmItemSetUserdata(bmItem *item, void *userdata);
+
+/**
+ * Get userdata pointer from bmItem instance.
+ *
+ * @param item bmItem instance which userdata pointer to get.
+ * @return Pointer for unmodified userdata.
+ */
+void* bmItemGetUserdata(bmItem *item);
+
+/**
* Set text to bmItem instance.
*
* @param item bmItem instance where to set text.
diff --git a/lib/internal.h b/lib/internal.h
index d0a9848..790b4ed 100644
--- a/lib/internal.h
+++ b/lib/internal.h
@@ -10,6 +10,12 @@
*/
struct _bmItem {
/**
+ * Userdata pointer.
+ * This pointer will be passed around with the item untouched.
+ */
+ void *userdata;
+
+ /**
* Primary text shown on item as null terminated C "string".
* Matching will be done against this text as well.
*/
@@ -60,6 +66,12 @@ struct _bmItemList {
*/
struct _bmMenu {
/**
+ * Userdata pointer.
+ * This pointer will be passed around with the menu untouched.
+ */
+ void *userdata;
+
+ /**
* Underlying renderer access.
*/
struct _bmRenderApi renderApi;
diff --git a/lib/item.c b/lib/item.c
index e6ccc7a..f2a879a 100644
--- a/lib/item.c
+++ b/lib/item.c
@@ -36,6 +36,31 @@ void bmItemFree(bmItem *item)
}
/**
+ * Set userdata pointer to bmItem instance.
+ * Userdata will be carried unmodified by the instance.
+ *
+ * @param item bmItem instance where to set userdata pointer.
+ * @param userdata Pointer to userdata.
+ */
+void bmItemSetUserdata(bmItem *item, void *userdata)
+{
+ assert(item);
+ item->userdata = userdata;
+}
+
+/**
+ * Get userdata pointer from bmItem instance.
+ *
+ * @param item bmItem instance which userdata pointer to get.
+ * @return Pointer for unmodified userdata.
+ */
+void* bmItemGetUserdata(bmItem *item)
+{
+ assert(item);
+ return item->userdata;
+}
+
+/**
* Set text to bmItem instance.
*
* @param item bmItem instance where to set text.
diff --git a/lib/menu.c b/lib/menu.c
index 6274fe3..a011194 100644
--- a/lib/menu.c
+++ b/lib/menu.c
@@ -103,6 +103,31 @@ void bmMenuFreeItems(bmMenu *menu)
}
/**
+ * Set userdata pointer to bmMenu instance.
+ * Userdata will be carried unmodified by the instance.
+ *
+ * @param menu bmMenu instance where to set userdata pointer.
+ * @param userdata Pointer to userdata.
+ */
+void bmMenuSetUserdata(bmMenu *menu, void *userdata)
+{
+ assert(menu);
+ menu->userdata = userdata;
+}
+
+/**
+ * Get userdata pointer from bmMenu instance.
+ *
+ * @param menu bmMenu instance which userdata pointer to get.
+ * @return Pointer for unmodified userdata.
+ */
+void* bmMenuGetUserdata(bmMenu *menu)
+{
+ assert(menu);
+ return menu->userdata;
+}
+
+/**
* Set active filter mode to bmMenu instance.
*
* @param menu bmMenu instance where to set filter mode.