mirror of https://github.com/OpenTTD/OpenTTD
(svn r21575) -Codechange: [OSX] Use the same class for the window delegate routines in windowed screen drivers
parent
7ab04792c5
commit
26575ab8f8
|
@ -124,4 +124,15 @@ void QZ_HideMouse();
|
||||||
|
|
||||||
uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int display_depth);
|
uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int display_depth);
|
||||||
|
|
||||||
|
/** Delegate for our NSWindow to send ask for quit on close */
|
||||||
|
@interface OTTD_CocoaWindowDelegate : NSObject {
|
||||||
|
CocoaSubdriver *driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setDriver:(CocoaSubdriver*)drv;
|
||||||
|
|
||||||
|
- (BOOL)windowShouldClose:(id)sender;
|
||||||
|
@end
|
||||||
|
|
||||||
|
|
||||||
#endif /* VIDEO_COCOA_H */
|
#endif /* VIDEO_COCOA_H */
|
||||||
|
|
|
@ -407,4 +407,40 @@ void cocoaReleaseAutoreleasePool()
|
||||||
[ _ottd_autorelease_pool release ];
|
[ _ottd_autorelease_pool release ];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@implementation OTTD_CocoaWindowDelegate
|
||||||
|
/** Initialize the video driver */
|
||||||
|
- (void)setDriver:(CocoaSubdriver*)drv
|
||||||
|
{
|
||||||
|
driver = drv;
|
||||||
|
}
|
||||||
|
/** Handle closure requests */
|
||||||
|
- (BOOL)windowShouldClose:(id)sender
|
||||||
|
{
|
||||||
|
HandleExitGameRequest();
|
||||||
|
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
/** Handle key acceptance */
|
||||||
|
- (void)windowDidBecomeKey:(NSNotification*)aNotification
|
||||||
|
{
|
||||||
|
driver->active = true;
|
||||||
|
}
|
||||||
|
/** Resign key acceptance */
|
||||||
|
- (void)windowDidResignKey:(NSNotification*)aNotification
|
||||||
|
{
|
||||||
|
driver->active = false;
|
||||||
|
}
|
||||||
|
/** Handle becoming main window */
|
||||||
|
- (void)windowDidBecomeMain:(NSNotification*)aNotification
|
||||||
|
{
|
||||||
|
driver->active = true;
|
||||||
|
}
|
||||||
|
/** Resign being main window */
|
||||||
|
- (void)windowDidResignMain:(NSNotification*)aNotification
|
||||||
|
{
|
||||||
|
driver->active = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
#endif /* WITH_COCOA */
|
#endif /* WITH_COCOA */
|
||||||
|
|
|
@ -62,16 +62,6 @@ class WindowQuartzSubdriver;
|
||||||
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
|
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
/* Delegate for our NSWindow to send ask for quit on close */
|
|
||||||
@interface OTTD_QuartzWindowDelegate : NSObject {
|
|
||||||
WindowQuartzSubdriver *driver;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setDriver:(WindowQuartzSubdriver*)drv;
|
|
||||||
|
|
||||||
- (BOOL)windowShouldClose:(id)sender;
|
|
||||||
@end
|
|
||||||
|
|
||||||
/* Subclass of NSView to fix Quartz rendering */
|
/* Subclass of NSView to fix Quartz rendering */
|
||||||
@interface OTTD_QuartzView : NSView {
|
@interface OTTD_QuartzView : NSView {
|
||||||
WindowQuartzSubdriver *driver;
|
WindowQuartzSubdriver *driver;
|
||||||
|
@ -243,42 +233,6 @@ static CGColorSpaceRef QZ_GetCorrectColorSpace()
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation OTTD_QuartzWindowDelegate
|
|
||||||
|
|
||||||
- (void)setDriver:(WindowQuartzSubdriver*)drv
|
|
||||||
{
|
|
||||||
driver = drv;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)windowShouldClose:(id)sender
|
|
||||||
{
|
|
||||||
HandleExitGameRequest();
|
|
||||||
|
|
||||||
return NO;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidBecomeKey:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidResignKey:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidBecomeMain:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidResignMain:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation OTTD_QuartzView
|
@implementation OTTD_QuartzView
|
||||||
|
|
||||||
- (void)setDriver:(WindowQuartzSubdriver*)drv
|
- (void)setDriver:(WindowQuartzSubdriver*)drv
|
||||||
|
@ -400,7 +354,7 @@ bool WindowQuartzSubdriver::SetVideoMode(int width, int height)
|
||||||
|
|
||||||
/* Check if we should recreate the window */
|
/* Check if we should recreate the window */
|
||||||
if (this->window == nil) {
|
if (this->window == nil) {
|
||||||
OTTD_QuartzWindowDelegate *delegate;
|
OTTD_CocoaWindowDelegate *delegate;
|
||||||
|
|
||||||
/* Set the window style */
|
/* Set the window style */
|
||||||
unsigned int style = NSTitledWindowMask;
|
unsigned int style = NSTitledWindowMask;
|
||||||
|
@ -436,7 +390,7 @@ bool WindowQuartzSubdriver::SetVideoMode(int width, int height)
|
||||||
|
|
||||||
[ this->window useOptimizedDrawing:YES ];
|
[ this->window useOptimizedDrawing:YES ];
|
||||||
|
|
||||||
delegate = [ [ OTTD_QuartzWindowDelegate alloc ] init ];
|
delegate = [ [ OTTD_CocoaWindowDelegate alloc ] init ];
|
||||||
[ delegate setDriver:this ];
|
[ delegate setDriver:this ];
|
||||||
[ this->window setDelegate:[ delegate autorelease ] ];
|
[ this->window setDelegate:[ delegate autorelease ] ];
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -62,16 +62,6 @@ class WindowQuickdrawSubdriver;
|
||||||
- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
|
- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
/* Delegate for our NSWindow to send ask for quit on close */
|
|
||||||
@interface OTTD_QuickdrawWindowDelegate : NSObject {
|
|
||||||
WindowQuickdrawSubdriver *driver;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)setDriver:(WindowQuickdrawSubdriver*)drv;
|
|
||||||
|
|
||||||
- (BOOL)windowShouldClose:(id)sender;
|
|
||||||
@end
|
|
||||||
|
|
||||||
class WindowQuickdrawSubdriver: public CocoaSubdriver {
|
class WindowQuickdrawSubdriver: public CocoaSubdriver {
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
@ -236,42 +226,6 @@ public:
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation OTTD_QuickdrawWindowDelegate
|
|
||||||
- (void)setDriver:(WindowQuickdrawSubdriver*)drv
|
|
||||||
{
|
|
||||||
driver = drv;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)windowShouldClose:(id)sender
|
|
||||||
{
|
|
||||||
HandleExitGameRequest();
|
|
||||||
|
|
||||||
return NO;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidBecomeKey:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidResignKey:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidBecomeMain:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)windowDidResignMain:(NSNotification*)aNotification
|
|
||||||
{
|
|
||||||
driver->active = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
|
|
||||||
static const int _resize_icon_width = 16;
|
static const int _resize_icon_width = 16;
|
||||||
static const int _resize_icon_height = 16;
|
static const int _resize_icon_height = 16;
|
||||||
|
|
||||||
|
@ -329,7 +283,7 @@ bool WindowQuickdrawSubdriver::SetVideoMode(int width, int height)
|
||||||
|
|
||||||
/* Check if we should recreate the window */
|
/* Check if we should recreate the window */
|
||||||
if (this->window == nil) {
|
if (this->window == nil) {
|
||||||
OTTD_QuickdrawWindowDelegate *delegate;
|
OTTD_CocoaWindowDelegate *delegate;
|
||||||
|
|
||||||
/* Set the window style */
|
/* Set the window style */
|
||||||
unsigned int style = NSTitledWindowMask;
|
unsigned int style = NSTitledWindowMask;
|
||||||
|
@ -360,7 +314,7 @@ bool WindowQuickdrawSubdriver::SetVideoMode(int width, int height)
|
||||||
[ this->window setAcceptsMouseMovedEvents:YES ];
|
[ this->window setAcceptsMouseMovedEvents:YES ];
|
||||||
[ this->window setViewsNeedDisplay:NO ];
|
[ this->window setViewsNeedDisplay:NO ];
|
||||||
|
|
||||||
delegate = [ [ OTTD_QuickdrawWindowDelegate alloc ] init ];
|
delegate = [ [ OTTD_CocoaWindowDelegate alloc ] init ];
|
||||||
[ delegate setDriver:this ];
|
[ delegate setDriver:this ];
|
||||||
[ this->window setDelegate: [ delegate autorelease ] ];
|
[ this->window setDelegate: [ delegate autorelease ] ];
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue