diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bemenu.h | 34 | ||||
-rw-r--r-- | lib/internal.h | 12 | ||||
-rw-r--r-- | lib/item.c | 25 | ||||
-rw-r--r-- | lib/menu.c | 25 |
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; @@ -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. @@ -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. |