Mercurial > hg > openttd
changeset 16841:6d8851188a34 draft
(svn r21575) -Codechange: [OSX] Use the same class for the window delegate routines in windowed screen drivers
author | planetmaker <planetmaker@openttd.org> |
---|---|
date | Tue, 21 Dec 2010 15:57:55 +0000 |
parents | ff18b4be8c8d |
children | 61bbac9b2b61 |
files | src/video/cocoa/cocoa_v.h src/video/cocoa/cocoa_v.mm src/video/cocoa/wnd_quartz.mm src/video/cocoa/wnd_quickdraw.mm |
diffstat | 4 files changed, 51 insertions(+), 96 deletions(-) [+] |
line wrap: on
line diff
--- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -124,4 +124,15 @@ 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 */
--- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -407,4 +407,40 @@ [ _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 */
--- a/src/video/cocoa/wnd_quartz.mm +++ b/src/video/cocoa/wnd_quartz.mm @@ -62,16 +62,6 @@ - (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag; @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 */ @interface OTTD_QuartzView : NSView { WindowQuartzSubdriver *driver; @@ -243,42 +233,6 @@ @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 - (void)setDriver:(WindowQuartzSubdriver*)drv @@ -400,7 +354,7 @@ /* Check if we should recreate the window */ if (this->window == nil) { - OTTD_QuartzWindowDelegate *delegate; + OTTD_CocoaWindowDelegate *delegate; /* Set the window style */ unsigned int style = NSTitledWindowMask; @@ -436,7 +390,7 @@ [ this->window useOptimizedDrawing:YES ]; - delegate = [ [ OTTD_QuartzWindowDelegate alloc ] init ]; + delegate = [ [ OTTD_CocoaWindowDelegate alloc ] init ]; [ delegate setDriver:this ]; [ this->window setDelegate:[ delegate autorelease ] ]; } else {
--- a/src/video/cocoa/wnd_quickdraw.mm +++ b/src/video/cocoa/wnd_quickdraw.mm @@ -62,16 +62,6 @@ - (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag; @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 { private: /** @@ -236,42 +226,6 @@ @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_height = 16; @@ -329,7 +283,7 @@ /* Check if we should recreate the window */ if (this->window == nil) { - OTTD_QuickdrawWindowDelegate *delegate; + OTTD_CocoaWindowDelegate *delegate; /* Set the window style */ unsigned int style = NSTitledWindowMask; @@ -360,7 +314,7 @@ [ this->window setAcceptsMouseMovedEvents:YES ]; [ this->window setViewsNeedDisplay:NO ]; - delegate = [ [ OTTD_QuickdrawWindowDelegate alloc ] init ]; + delegate = [ [ OTTD_CocoaWindowDelegate alloc ] init ]; [ delegate setDriver:this ]; [ this->window setDelegate: [ delegate autorelease ] ]; } else {