summaryrefslogtreecommitdiff
path: root/src/video/cocoa/cocoa_v.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/video/cocoa/cocoa_v.mm')
-rw-r--r--src/video/cocoa/cocoa_v.mm167
1 files changed, 31 insertions, 136 deletions
diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm
index 678fc75be..13a9cc9c4 100644
--- a/src/video/cocoa/cocoa_v.mm
+++ b/src/video/cocoa/cocoa_v.mm
@@ -45,10 +45,7 @@
*/
-@interface OTTDMain : NSObject
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
- <NSApplicationDelegate>
-#endif
+@interface OTTDMain : NSObject <NSApplicationDelegate>
@end
@@ -159,7 +156,9 @@ static void setApplicationMenu()
/* Tell the application object that this is now the application menu.
* This interesting Objective-C construct is used because not all SDK
* versions define this method publicly. */
- [ NSApp performSelector:@selector(setAppleMenu:) withObject:appleMenu ];
+ if ([ NSApp respondsToSelector:@selector(setAppleMenu:) ]) {
+ [ NSApp performSelector:@selector(setAppleMenu:) withObject:appleMenu ];
+ }
/* Finally give up our references to the objects */
[ appleMenu release ];
@@ -204,13 +203,9 @@ static void setupApplication()
/* Ensure the application object is initialised */
[ NSApplication sharedApplication ];
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
/* Tell the dock about us */
- if (MacOSVersionIsAtLeast(10, 3, 0)) {
- OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
- if (returnCode != 0) DEBUG(driver, 0, "Could not change to foreground application. Error %d", (int)returnCode);
- }
-#endif
+ OSStatus returnCode = TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+ if (returnCode != 0) DEBUG(driver, 0, "Could not change to foreground application. Error %d", (int)returnCode);
/* Disable the system-wide tab feature as we only have one window. */
if ([ NSWindow respondsToSelector:@selector(setAllowsAutomaticWindowTabbing:) ]) {
@@ -243,57 +238,27 @@ static bool ModeSorter(const OTTD_Point &p1, const OTTD_Point &p2)
static void QZ_GetDisplayModeInfo(CFArrayRef modes, CFIndex i, int &bpp, uint16 &width, uint16 &height)
{
- bpp = 0;
- width = 0;
- height = 0;
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
- if (MacOSVersionIsAtLeast(10, 6, 0)) {
- CGDisplayModeRef mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
+ CGDisplayModeRef mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
- width = (uint16)CGDisplayModeGetWidth(mode);
- height = (uint16)CGDisplayModeGetHeight(mode);
+ width = (uint16)CGDisplayModeGetWidth(mode);
+ height = (uint16)CGDisplayModeGetHeight(mode);
#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11)
- /* Extract bit depth from mode string. */
- CFAutoRelease<CFStringRef> pixEnc(CGDisplayModeCopyPixelEncoding(mode));
- if (CFStringCompare(pixEnc.get(), CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 32;
- if (CFStringCompare(pixEnc.get(), CFSTR(IO16BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 16;
- if (CFStringCompare(pixEnc.get(), CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 8;
+ /* Extract bit depth from mode string. */
+ CFAutoRelease<CFStringRef> pixEnc(CGDisplayModeCopyPixelEncoding(mode));
+ if (CFStringCompare(pixEnc.get(), CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 32;
+ if (CFStringCompare(pixEnc.get(), CFSTR(IO16BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 16;
+ if (CFStringCompare(pixEnc.get(), CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) bpp = 8;
#else
- /* CGDisplayModeCopyPixelEncoding is deprecated on OSX 10.11+, but there are no 8 bpp modes anyway... */
- bpp = 32;
+ /* CGDisplayModeCopyPixelEncoding is deprecated on OSX 10.11+, but there are no 8 bpp modes anyway... */
+ bpp = 32;
#endif
- } else
-#endif
- {
- int intvalue;
-
- CFDictionaryRef onemode = (const __CFDictionary*)CFArrayGetValueAtIndex(modes, i);
- CFNumberRef number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayBitsPerPixel);
- CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue);
- bpp = intvalue;
-
- number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayWidth);
- CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue);
- width = (uint16)intvalue;
-
- number = (const __CFNumber*)CFDictionaryGetValue(onemode, kCGDisplayHeight);
- CFNumberGetValue(number, kCFNumberSInt32Type, &intvalue);
- height = (uint16)intvalue;
- }
}
uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_id, int device_depth)
{
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6) && (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6)
- CFArrayRef mode_list = MacOSVersionIsAtLeast(10, 6, 0) ? CGDisplayCopyAllDisplayModes(display_id, NULL) : CGDisplayAvailableModes(display_id);
-#elif (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
- CFArrayRef mode_list = CGDisplayCopyAllDisplayModes(display_id, NULL);
-#else
- CFArrayRef mode_list = CGDisplayAvailableModes(display_id);
-#endif
- CFIndex num_modes = CFArrayGetCount(mode_list);
+ CFAutoRelease<CFArrayRef> mode_list(CGDisplayCopyAllDisplayModes(display_id, nullptr));
+ CFIndex num_modes = CFArrayGetCount(mode_list.get());
/* Build list of modes with the requested bpp */
uint count = 0;
@@ -301,7 +266,7 @@ uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_i
int bpp;
uint16 width, height;
- QZ_GetDisplayModeInfo(mode_list, i, bpp, width, height);
+ QZ_GetDisplayModeInfo(mode_list.get(), i, bpp, width, height);
if (bpp != device_depth) continue;
@@ -325,29 +290,9 @@ uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_i
/* Sort list smallest to largest */
std::sort(modes, modes + count, ModeSorter);
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
- if (MacOSVersionIsAtLeast(10, 6, 0)) CFRelease(mode_list);
-#endif
-
return count;
}
-/** Small function to test if the main display can display 8 bpp in fullscreen */
-bool QZ_CanDisplay8bpp()
-{
- /* 8bpp modes are deprecated starting in 10.5. CoreGraphics will return them
- * as available in the display list, but many features (e.g. palette animation)
- * will be broken. */
- if (MacOSVersionIsAtLeast(10, 5, 0)) return false;
-
- OTTD_Point p;
-
- /* We want to know if 8 bpp is possible in fullscreen and not anything about
- * resolutions. Because of this we want to fill a list of 1 resolution of 8 bpp
- * on display 0 (main) and return if we found one. */
- return QZ_ListModes(&p, 1, 0, 8);
-}
-
/**
* Update the video modus.
*
@@ -395,7 +340,7 @@ void QZ_GameSizeChanged()
*/
static CocoaSubdriver *QZ_CreateWindowSubdriver(int width, int height, int bpp)
{
-#if defined(ENABLE_COCOA_QUARTZ) && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
+#if defined(ENABLE_COCOA_QUARTZ)
return QZ_CreateWindowQuartzSubdriver(width, height, bpp);
#else
return nullptr;
@@ -453,7 +398,7 @@ void VideoDriver_Cocoa::Stop()
*/
const char *VideoDriver_Cocoa::Start(const char * const *parm)
{
- if (!MacOSVersionIsAtLeast(10, 3, 0)) return "The Cocoa video driver requires Mac OS X 10.3 or later.";
+ if (!MacOSVersionIsAtLeast(10, 6, 0)) return "The Cocoa video driver requires Mac OS X 10.6 or later.";
if (_cocoa_video_started) return "Already started";
_cocoa_video_started = true;
@@ -554,16 +499,7 @@ bool VideoDriver_Cocoa::AfterBlitterChange()
*/
void VideoDriver_Cocoa::EditBoxLostFocus()
{
- if (_cocoa_subdriver != NULL) {
- if ([ _cocoa_subdriver->cocoaview respondsToSelector:@selector(inputContext) ] && [ [ _cocoa_subdriver->cocoaview performSelector:@selector(inputContext) ] respondsToSelector:@selector(discardMarkedText) ]) {
- [ [ _cocoa_subdriver->cocoaview performSelector:@selector(inputContext) ] performSelector:@selector(discardMarkedText) ];
- }
-#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6)
- else {
- [ [ NSInputManager currentInputManager ] markedTextAbandoned:_cocoa_subdriver->cocoaview ];
- }
-#endif
- }
+ if (_cocoa_subdriver != NULL) [ [ _cocoa_subdriver->cocoaview inputContext ] discardMarkedText ];
/* Clear any marked string from the current edit box. */
HandleTextInput(NULL, true);
}
@@ -589,22 +525,13 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel
return;
}
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
- if (MacOSVersionIsAtLeast(10, 3, 0)) {
- NSAlert *alert = [ [ NSAlert alloc ] init ];
- [ alert setAlertStyle: NSCriticalAlertStyle ];
- [ alert setMessageText:[ NSString stringWithUTF8String:title ] ];
- [ alert setInformativeText:[ NSString stringWithUTF8String:message ] ];
- [ alert addButtonWithTitle: [ NSString stringWithUTF8String:buttonLabel ] ];
- [ alert runModal ];
- [ alert release ];
- } else
-#endif
- {
-#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_3)
- NSRunAlertPanel([ NSString stringWithUTF8String:title ], [ NSString stringWithUTF8String:message ], [ NSString stringWithUTF8String:buttonLabel ], nil, nil);
-#endif
- }
+ NSAlert *alert = [ [ NSAlert alloc ] init ];
+ [ alert setAlertStyle: NSCriticalAlertStyle ];
+ [ alert setMessageText:[ NSString stringWithUTF8String:title ] ];
+ [ alert setInformativeText:[ NSString stringWithUTF8String:message ] ];
+ [ alert addButtonWithTitle: [ NSString stringWithUTF8String:buttonLabel ] ];
+ [ alert runModal ];
+ [ alert release ];
if (!wasstarted && VideoDriver::GetInstance() != NULL) VideoDriver::GetInstance()->Stop();
@@ -1030,17 +957,7 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count)
{
if (!EditBoxInGlobalFocus()) return NSNotFound;
- NSPoint view_pt = NSZeroPoint;
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
- if ([ [ self window ] respondsToSelector:@selector(convertRectFromScreen:) ]) {
- view_pt = [ self convertRect:[ [ self window ] convertRectFromScreen:NSMakeRect(thePoint.x, thePoint.y, 0, 0) ] fromView:nil ].origin;
- } else
-#endif
- {
-#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7)
- view_pt = [ self convertPoint:[ [ self window ] convertScreenToBase:thePoint ] fromView:nil ];
-#endif
- }
+ NSPoint view_pt = [ self convertRect:[ [ self window ] convertRectFromScreen:NSMakeRect(thePoint.x, thePoint.y, 0, 0) ] fromView:nil ].origin;
Point pt = { (int)view_pt.x, (int)[ self frame ].size.height - (int)view_pt.y };
@@ -1063,19 +980,7 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count)
Rect r = _focused_window->GetTextBoundingRect(start, end);
NSRect view_rect = NSMakeRect(_focused_window->left + r.left, [ self frame ].size.height - _focused_window->top - r.bottom, r.right - r.left, r.bottom - r.top);
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
- if ([ [ self window ] respondsToSelector:@selector(convertRectToScreen:) ]) {
- return [ [ self window ] convertRectToScreen:[ self convertRect:view_rect toView:nil ] ];
- }
-#endif
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
- NSRect window_rect = [ self convertRect:view_rect toView:nil ];
- NSPoint origin = [ [ self window ] convertBaseToScreen:window_rect.origin ];
- return NSMakeRect(origin.x, origin.y, window_rect.size.width, window_rect.size.height);
-#else
- return NSMakeRect(0, 0, 0, 0);;
-#endif
+ return [ [ self window ] convertRectToScreen:[ self convertRect:view_rect toView:nil ] ];
}
/** Get the bounding rect for the given range. */
@@ -1090,16 +995,6 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count)
return [ NSArray array ];
}
-/** Identifier for this text input instance. */
-#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
-- (long)conversationIdentifier
-#else
-- (NSInteger)conversationIdentifier
-#endif
-{
- return 0;
-}
-
/** Delete single character left of the cursor. */
- (void)deleteBackward:(id)sender
{