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 {