(svn r21575) -Codechange: [OSX] Use the same class for the window delegate routines in windowed screen drivers
This commit is contained in:
		@@ -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 {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user