Migrated menu.m for now. Need to figure out what to do about ivars and methods and properties. Also still not happy with the property and autoreleasepool mess of main.m...

This commit is contained in:
Pietro Gagliardi 2018-05-03 23:19:42 -04:00
parent b8316c61dd
commit 60e71c7174
5 changed files with 24 additions and 23 deletions

View File

@ -1,20 +1,4 @@
// menu.m
@interface menuManager : NSObject {
uiprivMap *items;
BOOL hasQuit;
BOOL hasPreferences;
BOOL hasAbout;
}
@property (strong) NSMenuItem *quitItem;
@property (strong) NSMenuItem *preferencesItem;
@property (strong) NSMenuItem *aboutItem;
// NSMenuValidation is only informal
- (BOOL)validateMenuItem:(NSMenuItem *)item;
- (NSMenu *)makeMenubar;
@end
extern void finalizeMenus(void);
extern void uninitMenus(void);
// main.m
@interface applicationClass : NSApplication
@ -22,7 +6,7 @@ extern void uninitMenus(void);
// this is needed because NSApp is of type id, confusing clang
#define realNSApp() ((applicationClass *) NSApp)
@interface appDelegate : NSObject <NSApplicationDelegate>
@property (strong) menuManager *menuManager;
@property (strong) uiprivMenuManager *menuManager;
@end
#define appDelegate() ((appDelegate *) [realNSApp() delegate])
struct nextEventArgs {

View File

@ -124,7 +124,7 @@ const char *uiInit(uiInitOptions *o)
loadUndocumented();
// always do this so we always have an application menu
appDelegate().menuManager = [[menuManager new] autorelease];
appDelegate().menuManager = [[uiprivMenuManager new] autorelease];
[realNSApp() setMainMenu:[appDelegate().menuManager makeMenubar]];
uiprivSetupFontPanel();

View File

@ -35,7 +35,7 @@ static void mapItemReleaser(void *key, void *value)
[item->item release];
}
@implementation menuManager
@implementation uiprivMenuManager
- (id)init
{
@ -54,7 +54,7 @@ static void mapItemReleaser(void *key, void *value)
uiprivMapWalk(self->items, mapItemReleaser);
uiprivMapReset(self->items);
uiprivMapDestroy(self->items);
uninitMenus();
uiprivUninitMenus();
[super dealloc];
}
@ -338,12 +338,12 @@ uiMenu *uiNewMenu(const char *name)
} // @autoreleasepool
}
void finalizeMenus(void)
void uiprivFinalizeMenus(void)
{
menusFinalized = YES;
}
void uninitMenus(void)
void uiprivUninitMenus(void)
{
if (menus == NULL)
return;

View File

@ -32,4 +32,21 @@ extern void uiprivMapDelete(uiprivMap *m, void *key);
extern void uiprivMapWalk(uiprivMap *m, void (*f)(void *key, void *value));
extern void uiprivMapReset(uiprivMap *m);
// menu.m
@interface uiprivMenuManager : NSObject {
uiprivMap *items;
BOOL hasQuit;
BOOL hasPreferences;
BOOL hasAbout;
}
@property (strong) NSMenuItem *quitItem;
@property (strong) NSMenuItem *preferencesItem;
@property (strong) NSMenuItem *aboutItem;
// NSMenuValidation is only informal
- (BOOL)validateMenuItem:(NSMenuItem *)item;
- (NSMenu *)makeMenubar;
@end
extern void uiprivFinalizeMenus(void);
extern void uiprivUninitMenus(void);
#import "OLD_uipriv_darwin.h"

View File

@ -371,7 +371,7 @@ uiWindow *uiNewWindow(const char *title, int width, int height, int hasMenubar)
{
uiWindow *w;
finalizeMenus();
uiprivFinalizeMenus();
uiDarwinNewControl(uiWindow, w);