fix close window notif and unused vars (#10)
It wasn't detecting that the window was closed when I closed it by clicking the red X button. As a result, the window would close, but mfb_update() didn't return -1, so the program kept running. This was fixed by listening to the willClose event and using it to set a flag. I'm not sure if this is the best way to do it, I really know nothing about OSX/Cocoa. Also, I fixed a few unused varible warnings. And warnings related to NSUInteger not matching the expected signature with NSWindowStyleMask.
This commit is contained in:
parent
b0f1590fc5
commit
a5e8dd4e2e
@ -2,14 +2,14 @@
|
|||||||
#include "OSXWindow.h"
|
#include "OSXWindow.h"
|
||||||
#include <Cocoa/Cocoa.h>
|
#include <Cocoa/Cocoa.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <MiniFB.h>
|
#include "MiniFB.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void* g_updateBuffer = 0;
|
void* g_updateBuffer = 0;
|
||||||
int g_width = 0;
|
int g_width = 0;
|
||||||
int g_height = 0;
|
int g_height = 0;
|
||||||
static NSWindow* window_;
|
static OSXWindow* window_;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
@ -83,6 +83,9 @@ static int updateEvents()
|
|||||||
}
|
}
|
||||||
[pool release];
|
[pool release];
|
||||||
|
|
||||||
|
if (window_->closed)
|
||||||
|
state = -1;
|
||||||
|
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
@interface OSXWindow : NSWindow
|
@interface OSXWindow : NSWindow
|
||||||
{
|
{
|
||||||
NSView* childContentView;
|
NSView* childContentView;
|
||||||
|
@public bool closed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
- (id)initWithContentRect:(NSRect)contentRect
|
- (id)initWithContentRect:(NSRect)contentRect
|
||||||
styleMask:(NSUInteger)windowStyle
|
styleMask:(NSWindowStyleMask)windowStyle
|
||||||
backing:(NSBackingStoreType)bufferingType
|
backing:(NSBackingStoreType)bufferingType
|
||||||
defer:(BOOL)deferCreation
|
defer:(BOOL)deferCreation
|
||||||
{
|
{
|
||||||
@ -31,6 +31,14 @@
|
|||||||
selector:@selector(mainWindowChanged:)
|
selector:@selector(mainWindowChanged:)
|
||||||
name:NSWindowDidResignMainNotification
|
name:NSWindowDidResignMainNotification
|
||||||
object:self];
|
object:self];
|
||||||
|
|
||||||
|
[[NSNotificationCenter defaultCenter]
|
||||||
|
addObserver:self
|
||||||
|
selector:@selector(willClose)
|
||||||
|
name:NSWindowWillCloseNotification
|
||||||
|
object:self];
|
||||||
|
|
||||||
|
closed = false;
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@ -65,6 +73,7 @@
|
|||||||
|
|
||||||
- (void)mainWindowChanged:(NSNotification *)aNotification
|
- (void)mainWindowChanged:(NSNotification *)aNotification
|
||||||
{
|
{
|
||||||
|
(void)aNotification;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -128,9 +137,17 @@
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
+ (NSRect)frameRectForContentRect:(NSRect)windowContentRect styleMask:(NSUInteger)windowStyle
|
+ (NSRect)frameRectForContentRect:(NSRect)windowContentRect styleMask:(NSWindowStyleMask)windowStyle
|
||||||
{
|
{
|
||||||
|
(void)windowStyle;
|
||||||
return NSInsetRect(windowContentRect, 0, 0);
|
return NSInsetRect(windowContentRect, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
- (void)willClose
|
||||||
|
{
|
||||||
|
closed = true;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -27,6 +27,8 @@ extern int g_height;
|
|||||||
|
|
||||||
- (void)drawRect:(NSRect)rect
|
- (void)drawRect:(NSRect)rect
|
||||||
{
|
{
|
||||||
|
(void)rect;
|
||||||
|
|
||||||
if (!g_updateBuffer)
|
if (!g_updateBuffer)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user