summaryrefslogtreecommitdiff
path: root/src/video/cocoa/wnd_quickdraw.mm
diff options
context:
space:
mode:
authorplanetmaker <planetmaker@openttd.org>2010-12-21 16:02:55 +0000
committerplanetmaker <planetmaker@openttd.org>2010-12-21 16:02:55 +0000
commit30eef98ec0e5db58cb214624bd0eef8d8bf34c20 (patch)
tree793f0647438022e7ba33699dbd6bebbbb8207aad /src/video/cocoa/wnd_quickdraw.mm
parente38f96d60910846cdfed516f80282789bdb685f5 (diff)
downloadopenttd-30eef98ec0e5db58cb214624bd0eef8d8bf34c20.tar.xz
(svn r21577) -Codechange: [OSX] Deduplicate code by moving the handling of the window class for screen drivers to a common class
Diffstat (limited to 'src/video/cocoa/wnd_quickdraw.mm')
-rw-r--r--src/video/cocoa/wnd_quickdraw.mm114
1 files changed, 1 insertions, 113 deletions
diff --git a/src/video/cocoa/wnd_quickdraw.mm b/src/video/cocoa/wnd_quickdraw.mm
index 0e5340a62..5ec3af6f5 100644
--- a/src/video/cocoa/wnd_quickdraw.mm
+++ b/src/video/cocoa/wnd_quickdraw.mm
@@ -46,22 +46,6 @@
class WindowQuickdrawSubdriver;
-/* Subclass of NSWindow to fix genie effect and support resize events */
-@interface OTTD_QuickdrawWindow : NSWindow {
- WindowQuickdrawSubdriver *driver;
-}
-
-- (void)setDriver:(WindowQuickdrawSubdriver*)drv;
-
-- (void)miniaturize:(id)sender;
-- (void)display;
-- (void)setFrame:(NSRect)frameRect display:(BOOL)flag;
-- (void)appDidHide:(NSNotification*)note;
-- (void)appWillUnhide:(NSNotification*)note;
-- (void)appDidUnhide:(NSNotification*)note;
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag;
-@end
-
class WindowQuickdrawSubdriver: public CocoaSubdriver {
private:
/**
@@ -130,102 +114,6 @@ public:
bool WindowResized();
};
-
-@implementation OTTD_QuickdrawWindow
-
-- (void)setDriver:(WindowQuickdrawSubdriver*)drv
-{
- driver = drv;
-}
-
-
-/* we override these methods to fix the miniaturize animation/dock icon bug */
-- (void)miniaturize:(id)sender
-{
- /* make the alpha channel opaque so anim won't have holes in it */
- driver->SetPortAlphaOpaque ();
-
- /* window is hidden now */
- driver->active = false;
-
- QZ_ShowMouse();
-
- [ super miniaturize:sender ];
-}
-
-- (void)display
-{
- /* This method fires just before the window deminaturizes from the Dock.
- * We'll save the current visible surface, let the window manager redraw any
- * UI elements, and restore the surface. This way, no expose event
- * is required, and the deminiaturize works perfectly.
- */
-
- driver->SetPortAlphaOpaque();
-
- /* save current visible surface */
- [ self cacheImageInRect:[ driver->cocoaview frame ] ];
-
- /* let the window manager redraw controls, border, etc */
- [ super display ];
-
- /* restore visible surface */
- [ self restoreCachedImage ];
-
- /* window is visible again */
- driver->active = true;
-}
-
-- (void)setFrame:(NSRect)frameRect display:(BOOL)flag
-{
- [ super setFrame:frameRect display:flag ];
-
- /* Don't do anything if the window is currently being created */
- if (driver->setup) return;
-
- if (!driver->WindowResized()) error("Cocoa: Failed to resize window.");
-}
-
-- (void)appDidHide:(NSNotification*)note
-{
- driver->active = false;
-}
-
-
-- (void)appWillUnhide:(NSNotification*)note
-{
- driver->SetPortAlphaOpaque ();
-
- /* save current visible surface */
- [ self cacheImageInRect:[ driver->cocoaview frame ] ];
-}
-
-- (void)appDidUnhide:(NSNotification*)note
-{
- /* restore cached image, since it may not be current, post expose event too */
- [ self restoreCachedImage ];
-
- driver->active = true;
-}
-
-
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(unsigned int)styleMask backing:(NSBackingStoreType)backingType defer:(BOOL)flag
-{
- /* Make our window subclass receive these application notifications */
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appDidHide:) name:NSApplicationDidHideNotification object:NSApp ];
-
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appDidUnhide:) name:NSApplicationDidUnhideNotification object:NSApp ];
-
- [ [ NSNotificationCenter defaultCenter ] addObserver:self
- selector:@selector(appWillUnhide:) name:NSApplicationWillUnhideNotification object:NSApp ];
-
- return [ super initWithContentRect:contentRect styleMask:styleMask backing:backingType defer:flag ];
-}
-
-@end
-
static const int _resize_icon_width = 16;
static const int _resize_icon_height = 16;
@@ -291,7 +179,7 @@ bool WindowQuickdrawSubdriver::SetVideoMode(int width, int height)
style |= NSResizableWindowMask;
/* Manually create a window, avoids having a nib file resource */
- this->window = [ [ OTTD_QuickdrawWindow alloc ] initWithContentRect:contentRect
+ this->window = [ [ OTTD_CocoaWindow alloc ] initWithContentRect:contentRect
styleMask:style backing:NSBackingStoreBuffered defer:NO ];
if (this->window == nil) {