diff options
| author | Pietro Gagliardi <[email protected]> | 2015-04-06 20:01:14 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2015-04-06 20:01:14 -0400 |
| commit | 685844c5940dab356c348c51ceee29954305ec8b (patch) | |
| tree | 8516bcb1633a22a3f041af2d2df0a2115a2b5328 | |
| parent | e4d6d11925e7da8eb8b6c2960ddff88245b876ff (diff) | |
Fixed initial Mac OS X code.
| -rw-r--r-- | new/alloc_darwin.m | 6 | ||||
| -rw-r--r-- | new/init_darwin.m | 3 | ||||
| -rw-r--r-- | new/test.c | 1 | ||||
| -rw-r--r-- | new/ui_darwin.h | 2 | ||||
| -rw-r--r-- | new/window_darwin.m | 11 |
5 files changed, 16 insertions, 7 deletions
diff --git a/new/alloc_darwin.m b/new/alloc_darwin.m index 48b2a12..059152a 100644 --- a/new/alloc_darwin.m +++ b/new/alloc_darwin.m @@ -1,12 +1,14 @@ // 4 december 2014 #include "ui_darwin.h" +// TODO is there a better alternative to NSCAssert()? preferably a built-in allocator that panics on out of memory for us? + void *uiAlloc(size_t size) { void *out; out = malloc(size); - NSAssert(out != NULL, @"out of memory in uiAlloc()"); + NSCAssert(out != NULL, @"out of memory in uiAlloc()"); memset(out, 0, size); return out; } @@ -18,7 +20,7 @@ void *uiRealloc(void *p, size_t size) if (p == NULL) return uiAlloc(size); out = realloc(p, size); - NSAssert(out != NULL, @"out of memory in uiRealloc()"); + NSCAssert(out != NULL, @"out of memory in uiRealloc()"); // TODO zero the extra memory return out; } diff --git a/new/init_darwin.m b/new/init_darwin.m index 86f271c..6d71152 100644 --- a/new/init_darwin.m +++ b/new/init_darwin.m @@ -1,5 +1,5 @@ // 6 april 2015 -#include "ui_darwin.m" +#include "ui_darwin.h" @interface uiApplication : NSApplication @end @@ -31,6 +31,7 @@ uiInitError *uiInit(uiInitOptions *o) const char *uiInitErrorMessage(uiInitError *err) { + return ""; } void uiInitErrorFree(uiInitError *err) @@ -26,5 +26,6 @@ int main(void) uiWindowShow(w); uiMain(); + printf("after uiMain()\n"); return 0; } diff --git a/new/ui_darwin.h b/new/ui_darwin.h index 60826e4..159939c 100644 --- a/new/ui_darwin.h +++ b/new/ui_darwin.h @@ -8,6 +8,8 @@ #import <Cocoa/Cocoa.h> #import "ui.h" +#define toNSString(str) [NSString stringWithUTF8String:(str)] + // alloc_darwin.m extern void *uiAlloc(size_t); extern void *uiRealloc(void *, size_t); diff --git a/new/window_darwin.m b/new/window_darwin.m index 4469690..1a60f8b 100644 --- a/new/window_darwin.m +++ b/new/window_darwin.m @@ -1,8 +1,9 @@ // 6 april 2015 #include "ui_darwin.h" -@interface uiWindowDelegate : NSWindowDelegate -@property void (*onClosing)(uiWindow *, void *); +@interface uiWindowDelegate : NSObject <NSWindowDelegate> +@property uiWindow *w; +@property int (*onClosing)(uiWindow *, void *); @property void *onClosingData; @end @@ -12,7 +13,7 @@ - (BOOL)windowShouldClose:(id)win { // return exact constants to be safe - if ((*(self.onClosing))(self.onClosingData)) + if ((*(self.onClosing))(self.w, self.onClosingData)) return YES; return NO; } @@ -39,9 +40,11 @@ uiWindow *uiNewWindow(char *title, int width, int height) styleMask:(NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask) backing:NSBackingStoreBuffered defer:YES]; + [w->w setTitle:toNSString(title)]; // TODO substitutions w->d = [uiWindowDelegate new]; + w->d.w = w; w->d.onClosing = defaultOnClosing; [w->w setDelegate:w->d]; @@ -71,7 +74,7 @@ void uiWindowHide(uiWindow *w) [w->w orderOut:w->w]; } -void uiWindowOnClosing(uiWindow *w, int (*)(uiWindow *f, void *), void *data) +void uiWindowOnClosing(uiWindow *w, int (*f)(uiWindow *, void *), void *data) { w->d.onClosing = f; w->d.onClosingData = data; |
