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:
parent
b8316c61dd
commit
60e71c7174
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -371,7 +371,7 @@ uiWindow *uiNewWindow(const char *title, int width, int height, int hasMenubar)
|
|||
{
|
||||
uiWindow *w;
|
||||
|
||||
finalizeMenus();
|
||||
uiprivFinalizeMenus();
|
||||
|
||||
uiDarwinNewControl(uiWindow, w);
|
||||
|
||||
|
|
Loading…
Reference in New Issue