|
@@ -58,31 +58,6 @@ struct SDL_Tray {
|
|
|
SDL_TrayMenu *menu;
|
|
|
};
|
|
|
|
|
|
-static NSApplication *app = NULL;
|
|
|
-
|
|
|
-@interface AppDelegate: NSObject <NSApplicationDelegate>
|
|
|
- - (IBAction)menu:(id)sender;
|
|
|
-@end
|
|
|
-
|
|
|
-@implementation AppDelegate{}
|
|
|
- - (IBAction)menu:(id)sender
|
|
|
- {
|
|
|
- SDL_TrayEntry *entry = [[sender representedObject] pointerValue];
|
|
|
-
|
|
|
- if (!entry) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (entry->flags & SDL_TRAYENTRY_CHECKBOX) {
|
|
|
- SDL_SetTrayEntryChecked(entry, !SDL_GetTrayEntryChecked(entry));
|
|
|
- }
|
|
|
-
|
|
|
- if (entry->callback) {
|
|
|
- entry->callback(entry->userdata, entry);
|
|
|
- }
|
|
|
- }
|
|
|
-@end
|
|
|
-
|
|
|
static void DestroySDLMenu(SDL_TrayMenu *menu)
|
|
|
{
|
|
|
for (int i = 0; i < menu->nEntries; i++) {
|
|
@@ -106,11 +81,6 @@ static void DestroySDLMenu(SDL_TrayMenu *menu)
|
|
|
SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
|
|
|
{
|
|
|
SDL_Tray *tray = (SDL_Tray *)SDL_calloc(1, sizeof(*tray));
|
|
|
-
|
|
|
- AppDelegate *delegate = [[AppDelegate alloc] init];
|
|
|
- app = [NSApplication sharedApplication];
|
|
|
- [app setDelegate:delegate];
|
|
|
-
|
|
|
if (!tray) {
|
|
|
return NULL;
|
|
|
}
|
|
@@ -118,7 +88,7 @@ SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
|
|
|
tray->statusItem = nil;
|
|
|
tray->statusBar = [NSStatusBar systemStatusBar];
|
|
|
tray->statusItem = [tray->statusBar statusItemWithLength:NSVariableStatusItemLength];
|
|
|
- [app activateIgnoringOtherApps:TRUE];
|
|
|
+ [[NSApplication sharedApplication] activateIgnoringOtherApps:TRUE];
|
|
|
|
|
|
if (tooltip) {
|
|
|
tray->statusItem.button.toolTip = [NSString stringWithUTF8String:tooltip];
|
|
@@ -421,6 +391,21 @@ void SDL_SetTrayEntryCallback(SDL_TrayEntry *entry, SDL_TrayCallback callback, v
|
|
|
entry->userdata = userdata;
|
|
|
}
|
|
|
|
|
|
+void SDL_ClickTrayEntry(SDL_TrayEntry *entry)
|
|
|
+{
|
|
|
+ if (!entry) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (entry->flags & SDL_TRAYENTRY_CHECKBOX) {
|
|
|
+ SDL_SetTrayEntryChecked(entry, !SDL_GetTrayEntryChecked(entry));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (entry->callback) {
|
|
|
+ entry->callback(entry->userdata, entry);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
SDL_TrayMenu *SDL_GetTrayEntryParent(SDL_TrayEntry *entry)
|
|
|
{
|
|
|
return entry->parent;
|