Mercurial > sdl-ios-xcode
comparison src/video/cocoa/SDL_cocoawindow.m @ 3688:6512cba48440
Fixed Cocoa and OpenGL builds
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 21 Jan 2010 07:28:01 +0000 |
parents | 64ce267332c6 |
children | 3e69e077cb95 d79939f20c45 |
comparison
equal
deleted
inserted
replaced
3687:8e5186a99af4 | 3688:6512cba48440 |
---|---|
42 | 42 |
43 _data = data; | 43 _data = data; |
44 | 44 |
45 center = [NSNotificationCenter defaultCenter]; | 45 center = [NSNotificationCenter defaultCenter]; |
46 | 46 |
47 [_data->window setNextResponder:self]; | 47 [_data->nswindow setNextResponder:self]; |
48 if ([_data->window delegate] != nil) { | 48 if ([_data->nswindow delegate] != nil) { |
49 [center addObserver:self selector:@selector(windowDisExpose:) name:NSWindowDidExposeNotification object:_data->window]; | 49 [center addObserver:self selector:@selector(windowDisExpose:) name:NSWindowDidExposeNotification object:_data->nswindow]; |
50 [center addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:_data->window]; | 50 [center addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:_data->nswindow]; |
51 [center addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:_data->window]; | 51 [center addObserver:self selector:@selector(windowDidResize:) name:NSWindowDidResizeNotification object:_data->nswindow]; |
52 [center addObserver:self selector:@selector(windowDidMiniaturize:) name:NSWindowDidMiniaturizeNotification object:_data->window]; | 52 [center addObserver:self selector:@selector(windowDidMiniaturize:) name:NSWindowDidMiniaturizeNotification object:_data->nswindow]; |
53 [center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:_data->window]; | 53 [center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:_data->nswindow]; |
54 [center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:_data->window]; | 54 [center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:_data->nswindow]; |
55 [center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:_data->window]; | 55 [center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:_data->nswindow]; |
56 } else { | 56 } else { |
57 [_data->window setDelegate:self]; | 57 [_data->nswindow setDelegate:self]; |
58 } | 58 } |
59 [center addObserver:self selector:@selector(windowDidHide:) name:NSApplicationDidHideNotification object:NSApp]; | 59 [center addObserver:self selector:@selector(windowDidHide:) name:NSApplicationDidHideNotification object:NSApp]; |
60 [center addObserver:self selector:@selector(windowDidUnhide:) name:NSApplicationDidUnhideNotification object:NSApp]; | 60 [center addObserver:self selector:@selector(windowDidUnhide:) name:NSApplicationDidUnhideNotification object:NSApp]; |
61 | 61 |
62 [_data->window setAcceptsMouseMovedEvents:YES]; | 62 [_data->nswindow setAcceptsMouseMovedEvents:YES]; |
63 } | 63 } |
64 | 64 |
65 - (void)close | 65 - (void)close |
66 { | 66 { |
67 NSNotificationCenter *center; | 67 NSNotificationCenter *center; |
68 | 68 |
69 center = [NSNotificationCenter defaultCenter]; | 69 center = [NSNotificationCenter defaultCenter]; |
70 | 70 |
71 [_data->window setNextResponder:nil]; | 71 [_data->nswindow setNextResponder:nil]; |
72 if ([_data->window delegate] != self) { | 72 if ([_data->nswindow delegate] != self) { |
73 [center removeObserver:self name:NSWindowDidExposeNotification object:_data->window]; | 73 [center removeObserver:self name:NSWindowDidExposeNotification object:_data->nswindow]; |
74 [center removeObserver:self name:NSWindowDidMoveNotification object:_data->window]; | 74 [center removeObserver:self name:NSWindowDidMoveNotification object:_data->nswindow]; |
75 [center removeObserver:self name:NSWindowDidResizeNotification object:_data->window]; | 75 [center removeObserver:self name:NSWindowDidResizeNotification object:_data->nswindow]; |
76 [center removeObserver:self name:NSWindowDidMiniaturizeNotification object:_data->window]; | 76 [center removeObserver:self name:NSWindowDidMiniaturizeNotification object:_data->nswindow]; |
77 [center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:_data->window]; | 77 [center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:_data->nswindow]; |
78 [center removeObserver:self name:NSWindowDidBecomeKeyNotification object:_data->window]; | 78 [center removeObserver:self name:NSWindowDidBecomeKeyNotification object:_data->nswindow]; |
79 [center removeObserver:self name:NSWindowDidResignKeyNotification object:_data->window]; | 79 [center removeObserver:self name:NSWindowDidResignKeyNotification object:_data->nswindow]; |
80 } else { | 80 } else { |
81 [_data->window setDelegate:nil]; | 81 [_data->nswindow setDelegate:nil]; |
82 } | 82 } |
83 [center removeObserver:self name:NSApplicationDidHideNotification object:NSApp]; | 83 [center removeObserver:self name:NSApplicationDidHideNotification object:NSApp]; |
84 [center removeObserver:self name:NSApplicationDidUnhideNotification object:NSApp]; | 84 [center removeObserver:self name:NSApplicationDidUnhideNotification object:NSApp]; |
85 } | 85 } |
86 | 86 |
96 } | 96 } |
97 | 97 |
98 - (void)windowDidMove:(NSNotification *)aNotification | 98 - (void)windowDidMove:(NSNotification *)aNotification |
99 { | 99 { |
100 int x, y; | 100 int x, y; |
101 NSRect rect = [_data->window contentRectForFrameRect:[_data->window frame]]; | 101 NSRect rect = [_data->nswindow contentRectForFrameRect:[_data->nswindow frame]]; |
102 ConvertNSRect(&rect); | 102 ConvertNSRect(&rect); |
103 x = (int)rect.origin.x; | 103 x = (int)rect.origin.x; |
104 y = (int)rect.origin.y; | 104 y = (int)rect.origin.y; |
105 SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_MOVED, x, y); | 105 SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_MOVED, x, y); |
106 } | 106 } |
107 | 107 |
108 - (void)windowDidResize:(NSNotification *)aNotification | 108 - (void)windowDidResize:(NSNotification *)aNotification |
109 { | 109 { |
110 int w, h; | 110 int w, h; |
111 NSRect rect = [_data->window contentRectForFrameRect:[_data->window frame]]; | 111 NSRect rect = [_data->nswindow contentRectForFrameRect:[_data->nswindow frame]]; |
112 w = (int)rect.size.width; | 112 w = (int)rect.size.width; |
113 h = (int)rect.size.height; | 113 h = (int)rect.size.height; |
114 SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_RESIZED, w, h); | 114 SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_RESIZED, w, h); |
115 } | 115 } |
116 | 116 |
307 if (!data) { | 307 if (!data) { |
308 SDL_OutOfMemory(); | 308 SDL_OutOfMemory(); |
309 return -1; | 309 return -1; |
310 } | 310 } |
311 data->window = window; | 311 data->window = window; |
312 data->window = nswindow; | 312 data->nswindow = nswindow; |
313 data->created = created; | 313 data->created = created; |
314 data->display = displaydata->display; | 314 data->display = displaydata->display; |
315 data->videodata = videodata; | 315 data->videodata = videodata; |
316 | 316 |
317 pool = [[NSAutoreleasePool alloc] init]; | 317 pool = [[NSAutoreleasePool alloc] init]; |
469 | 469 |
470 void | 470 void |
471 Cocoa_SetWindowTitle(_THIS, SDL_Window * window) | 471 Cocoa_SetWindowTitle(_THIS, SDL_Window * window) |
472 { | 472 { |
473 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 473 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
474 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 474 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
475 NSString *string; | 475 NSString *string; |
476 | 476 |
477 if(window->title) { | 477 if(window->title) { |
478 string = [[NSString alloc] initWithUTF8String:window->title]; | 478 string = [[NSString alloc] initWithUTF8String:window->title]; |
479 } else { | 479 } else { |
487 | 487 |
488 void | 488 void |
489 Cocoa_SetWindowPosition(_THIS, SDL_Window * window) | 489 Cocoa_SetWindowPosition(_THIS, SDL_Window * window) |
490 { | 490 { |
491 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 491 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
492 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 492 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
493 SDL_VideoDisplay *display = window->display; | 493 SDL_VideoDisplay *display = window->display; |
494 NSRect rect; | 494 NSRect rect; |
495 SDL_Rect bounds; | 495 SDL_Rect bounds; |
496 | 496 |
497 Cocoa_GetDisplayBounds(_this, display, &bounds); | 497 Cocoa_GetDisplayBounds(_this, display, &bounds); |
517 | 517 |
518 void | 518 void |
519 Cocoa_SetWindowSize(_THIS, SDL_Window * window) | 519 Cocoa_SetWindowSize(_THIS, SDL_Window * window) |
520 { | 520 { |
521 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 521 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
522 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 522 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
523 NSSize size; | 523 NSSize size; |
524 | 524 |
525 size.width = window->w; | 525 size.width = window->w; |
526 size.height = window->h; | 526 size.height = window->h; |
527 [nswindow setContentSize:size]; | 527 [nswindow setContentSize:size]; |
530 | 530 |
531 void | 531 void |
532 Cocoa_ShowWindow(_THIS, SDL_Window * window) | 532 Cocoa_ShowWindow(_THIS, SDL_Window * window) |
533 { | 533 { |
534 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 534 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
535 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 535 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
536 | 536 |
537 if (![nswindow isMiniaturized]) { | 537 if (![nswindow isMiniaturized]) { |
538 [nswindow makeKeyAndOrderFront:nil]; | 538 [nswindow makeKeyAndOrderFront:nil]; |
539 } | 539 } |
540 [pool release]; | 540 [pool release]; |
542 | 542 |
543 void | 543 void |
544 Cocoa_HideWindow(_THIS, SDL_Window * window) | 544 Cocoa_HideWindow(_THIS, SDL_Window * window) |
545 { | 545 { |
546 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 546 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
547 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 547 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
548 | 548 |
549 [nswindow orderOut:nil]; | 549 [nswindow orderOut:nil]; |
550 [pool release]; | 550 [pool release]; |
551 } | 551 } |
552 | 552 |
553 void | 553 void |
554 Cocoa_RaiseWindow(_THIS, SDL_Window * window) | 554 Cocoa_RaiseWindow(_THIS, SDL_Window * window) |
555 { | 555 { |
556 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 556 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
557 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 557 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
558 | 558 |
559 [nswindow makeKeyAndOrderFront:nil]; | 559 [nswindow makeKeyAndOrderFront:nil]; |
560 [pool release]; | 560 [pool release]; |
561 } | 561 } |
562 | 562 |
563 void | 563 void |
564 Cocoa_MaximizeWindow(_THIS, SDL_Window * window) | 564 Cocoa_MaximizeWindow(_THIS, SDL_Window * window) |
565 { | 565 { |
566 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 566 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
567 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 567 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
568 | 568 |
569 [nswindow zoom:nil]; | 569 [nswindow zoom:nil]; |
570 [pool release]; | 570 [pool release]; |
571 } | 571 } |
572 | 572 |
573 void | 573 void |
574 Cocoa_MinimizeWindow(_THIS, SDL_Window * window) | 574 Cocoa_MinimizeWindow(_THIS, SDL_Window * window) |
575 { | 575 { |
576 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 576 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
577 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 577 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
578 | 578 |
579 [nswindow miniaturize:nil]; | 579 [nswindow miniaturize:nil]; |
580 [pool release]; | 580 [pool release]; |
581 } | 581 } |
582 | 582 |
583 void | 583 void |
584 Cocoa_RestoreWindow(_THIS, SDL_Window * window) | 584 Cocoa_RestoreWindow(_THIS, SDL_Window * window) |
585 { | 585 { |
586 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; | 586 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; |
587 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 587 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
588 | 588 |
589 if ([nswindow isMiniaturized]) { | 589 if ([nswindow isMiniaturized]) { |
590 [nswindow deminiaturize:nil]; | 590 [nswindow deminiaturize:nil]; |
591 } else if ([nswindow isZoomed]) { | 591 } else if ([nswindow isZoomed]) { |
592 [nswindow zoom:nil]; | 592 [nswindow zoom:nil]; |
613 | 613 |
614 if (data) { | 614 if (data) { |
615 [data->listener close]; | 615 [data->listener close]; |
616 [data->listener release]; | 616 [data->listener release]; |
617 if (data->created) { | 617 if (data->created) { |
618 [data->window close]; | 618 [data->nswindow close]; |
619 } | 619 } |
620 SDL_free(data); | 620 SDL_free(data); |
621 } | 621 } |
622 [pool release]; | 622 [pool release]; |
623 } | 623 } |
624 | 624 |
625 SDL_bool | 625 SDL_bool |
626 Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info) | 626 Cocoa_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info) |
627 { | 627 { |
628 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->window; | 628 NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; |
629 | 629 |
630 if (info->version.major <= SDL_MAJOR_VERSION) { | 630 if (info->version.major <= SDL_MAJOR_VERSION) { |
631 //info->window = nswindow; | 631 //info->window = nswindow; |
632 return SDL_TRUE; | 632 return SDL_TRUE; |
633 } else { | 633 } else { |