Mercurial > sdl-ios-xcode
diff src/video/cocoa/SDL_cocoawindow.m @ 1956:ba0d62354872
Simplified driver window creation code.
Implemented several Cocoa window functions
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 29 Jul 2006 21:51:00 +0000 |
parents | 420716272158 |
children | c7803e4c21d3 |
line wrap: on
line diff
--- a/src/video/cocoa/SDL_cocoawindow.m Sat Jul 29 03:57:55 2006 +0000 +++ b/src/video/cocoa/SDL_cocoawindow.m Sat Jul 29 21:51:00 2006 +0000 @@ -195,6 +195,7 @@ - (void)mouseMoved:(NSEvent *)theEvent { + SDL_Window *window = SDL_GetWindowFromID(_data->windowID); int index; SDL_Mouse *mouse; NSPoint point; @@ -207,6 +208,18 @@ } point = [NSEvent mouseLocation]; + if (point.x < rect.origin.x || + point.x > (rect.origin.x + rect.size.width) || + point.y < rect.origin.y || + point.y > (rect.origin.y + rect.size.height)) { + if (window->flags & SDL_WINDOW_MOUSE_FOCUS) { + SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_LEAVE, 0, 0); + } + } else { + if (!(window->flags & SDL_WINDOW_MOUSE_FOCUS)) { + SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_ENTER, 0, 0); + } + } point.x = point.x - rect.origin.x; point.y = rect.size.height - (point.y - rect.origin.y); SDL_SendMouseMotion(index, 0, (int)point.x, (int)point.y); @@ -217,18 +230,6 @@ fprintf(stderr, "scrollWheel\n"); } -- (void)mouseEntered:(NSEvent *)theEvent -{ -fprintf(stderr, "mouseEntered\n"); - SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_ENTER, 0, 0); -} - -- (void)mouseExited:(NSEvent *)theEvent -{ -fprintf(stderr, "mouseExited\n"); - SDL_SendWindowEvent(_data->windowID, SDL_WINDOWEVENT_LEAVE, 0, 0); -} - - (void)keyDown:(NSEvent *)theEvent { fprintf(stderr, "keyDown\n"); @@ -282,7 +283,7 @@ { unsigned int style = [nswindow styleMask]; - if (style == NSBorderlessWindowMask) { + if ((style & ~NSResizableWindowMask) == NSBorderlessWindowMask) { window->flags |= SDL_WINDOW_BORDERLESS; } else { window->flags &= ~SDL_WINDOW_BORDERLESS; @@ -331,16 +332,14 @@ pool = [[NSAutoreleasePool alloc] init]; - if ((window->flags & SDL_WINDOW_FULLSCREEN) || - window->x == SDL_WINDOWPOS_CENTERED) { + if (window->x == SDL_WINDOWPOS_CENTERED) { rect.origin.x = (CGDisplayPixelsWide(kCGDirectMainDisplay) - window->w) / 2; } else if (window->x == SDL_WINDOWPOS_UNDEFINED) { rect.origin.x = 0; } else { rect.origin.x = window->x; } - if ((window->flags & SDL_WINDOW_FULLSCREEN) || - window->y == SDL_WINDOWPOS_CENTERED) { + if (window->y == SDL_WINDOWPOS_CENTERED) { rect.origin.y = (CGDisplayPixelsHigh(kCGDirectMainDisplay) - window->h) / 2; } else if (window->y == SDL_WINDOWPOS_UNDEFINED) { rect.origin.y = 0; @@ -362,23 +361,6 @@ nswindow = [[NSWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:FALSE]; - if (window->flags & SDL_WINDOW_SHOWN) { - [nswindow makeKeyAndOrderFront:nil]; - } - if (window->flags & SDL_WINDOW_MAXIMIZED) { - [nswindow performZoom:nil]; - } - if (window->flags & SDL_WINDOW_MINIMIZED) { - [nswindow performMiniaturize:nil]; - } - - if (window->title) { - title = [[NSString alloc] initWithUTF8String:window->title]; - [nswindow setTitle:title]; - [nswindow setMiniwindowTitle:title]; - [title release]; - } - [pool release]; if (SetupWindowData(_this, window, nswindow, SDL_TRUE) < 0) { @@ -424,10 +406,14 @@ NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; NSString *string; - string = [[NSString alloc] initWithUTF8String:window->title]; + if(window->title) { + string = [[NSString alloc] initWithUTF8String:window->title]; + } else { + string = [[NSString alloc] init]; + } [nswindow setTitle:string]; - [nswindow setMiniwindowTitle:string]; [string release]; + [pool release]; } @@ -467,16 +453,20 @@ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - [nswindow makeKeyAndOrderFront:nil]; + if (![nswindow isMiniaturized]) { + [nswindow makeKeyAndOrderFront:nil]; + } [pool release]; } void Cocoa_HideWindow(_THIS, SDL_Window * window) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - /* FIXME */ + [nswindow orderOut:nil]; + [pool release]; } void @@ -495,7 +485,7 @@ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - [nswindow performZoom:nil]; + [nswindow zoom:nil]; [pool release]; } @@ -505,16 +495,22 @@ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - [nswindow performMiniaturize:nil]; + [nswindow miniaturize:nil]; [pool release]; } void Cocoa_RestoreWindow(_THIS, SDL_Window * window) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; - /* FIXME */ + if ([nswindow isMiniaturized]) { + [nswindow deminiaturize:nil]; + } else if ([nswindow isZoomed]) { + [nswindow zoom:nil]; + } + [pool release]; } void