diff --git a/v2/internal/ffenestri/menu_darwin.c b/v2/internal/ffenestri/menu_darwin.c index bb839233e..562e4e691 100644 --- a/v2/internal/ffenestri/menu_darwin.c +++ b/v2/internal/ffenestri/menu_darwin.c @@ -574,7 +574,7 @@ id processCheckboxMenuItem(Menu *menu, id parentmenu, const char *title, const c return item; } -id processTextMenuItem(Menu *menu, id parentMenu, const char *title, const char *menuid, bool disabled, const char *acceleratorkey, const char **modifiers, const char* tooltip) { +id processTextMenuItem(Menu *menu, id parentMenu, const char *title, const char *menuid, bool disabled, const char *acceleratorkey, const char **modifiers, const char* tooltip, const char* image) { id item = ALLOC("NSMenuItem"); // Create a MenuItemCallbackData @@ -587,6 +587,18 @@ id processTextMenuItem(Menu *menu, id parentMenu, const char *title, const char msg(item, s("initWithTitle:action:keyEquivalent:"), str(title), s("menuItemCallback:"), key); + if( tooltip != NULL ) { + msg(item, s("setToolTip:"), str(tooltip)); + } + + if( image != NULL && strlen(image) > 0) { + id data = ALLOC("NSData"); + id imageData = msg(data, s("initWithBase64EncodedString:options:"), str(image), 0); + id nsimage = ALLOC("NSImage"); + msg(nsimage, s("initWithData:"), imageData); + msg(item, s("setImage:"), nsimage); + } + msg(item, s("setEnabled:"), !disabled); msg(item, s("autorelease")); @@ -668,6 +680,9 @@ void processMenuItem(Menu *menu, id parentMenu, JsonNode *item) { const char *acceleratorkey = NULL; const char **modifiers = NULL; + const char *tooltip = getJSONString(item, "Tooltip"); + const char *image = getJSONString(item, "Image"); + // If we have an accelerator if( accelerator != NULL ) { // Get the key