summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/blitter/32bpp_sse_type.h2
-rw-r--r--src/os/macosx/macos.mm8
-rw-r--r--src/video/cocoa/cocoa_v.h6
-rw-r--r--src/video/cocoa/cocoa_v.mm27
-rw-r--r--src/video/cocoa/event.mm4
-rw-r--r--src/video/cocoa/wnd_quartz.mm17
6 files changed, 53 insertions, 11 deletions
diff --git a/src/blitter/32bpp_sse_type.h b/src/blitter/32bpp_sse_type.h
index ac8da1be7..b32d3c5ab 100644
--- a/src/blitter/32bpp_sse_type.h
+++ b/src/blitter/32bpp_sse_type.h
@@ -27,6 +27,8 @@
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
+#undef ALIGN
+
#ifdef _MSC_VER
#define ALIGN(n) __declspec(align(n))
#else
diff --git a/src/os/macosx/macos.mm b/src/os/macosx/macos.mm
index 8d34cda58..087630332 100644
--- a/src/os/macosx/macos.mm
+++ b/src/os/macosx/macos.mm
@@ -21,6 +21,10 @@
#undef Rect
#undef Point
+#ifndef __clang__
+#define __bridge
+#endif
+
/*
* This file contains objective C
* Apple uses objective C instead of plain C to interact with OS specific/native functions
@@ -182,7 +186,7 @@ uint GetCPUCoreCount()
uint count = 1;
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
if (MacOSVersionIsAtLeast(10, 5, 0)) {
- count = [ [ NSProcessInfo processInfo ] activeProcessorCount ];
+ count = (uint)[ [ NSProcessInfo processInfo ] activeProcessorCount ];
} else
#endif
{
@@ -201,7 +205,7 @@ uint GetCPUCoreCount()
*/
bool IsMonospaceFont(CFStringRef name)
{
- NSFont *font = [ NSFont fontWithName:(NSString *)name size:0.0f ];
+ NSFont *font = [ NSFont fontWithName:(__bridge NSString *)name size:0.0f ];
return font != NULL ? [ font isFixedPitch ] : false;
}
diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h
index 86085da62..564daefe0 100644
--- a/src/video/cocoa/cocoa_v.h
+++ b/src/video/cocoa/cocoa_v.h
@@ -259,7 +259,11 @@ uint QZ_ListModes(OTTD_Point *modes, uint max_modes, CGDirectDisplayID display_i
@end
/** Delegate for our NSWindow to send ask for quit on close */
-@interface OTTD_CocoaWindowDelegate : NSObject {
+@interface OTTD_CocoaWindowDelegate : NSObject
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+ <NSWindowDelegate>
+#endif
+{
CocoaSubdriver *driver;
}
diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm
index 4df7cb003..0616ddb5d 100644
--- a/src/video/cocoa/cocoa_v.mm
+++ b/src/video/cocoa/cocoa_v.mm
@@ -48,6 +48,9 @@
@interface OTTDMain : NSObject
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
+ <NSApplicationDelegate>
+#endif
@end
@@ -212,8 +215,7 @@ static void setupApplication()
#endif
/* Become the front process, important when start from the command line. */
- OSErr err = SetFrontProcess(&psn);
- if (err != 0) DEBUG(driver, 0, "Could not bring the application to front. Error %d", (int)err);
+ [ [ NSApplication sharedApplication ] activateIgnoringOtherApps:YES ];
/* Set up the menubar */
[ NSApp setMainMenu:[ [ NSMenu alloc ] init ] ];
@@ -575,9 +577,12 @@ 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) ];
- } else {
+ }
+#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6)
+ else {
[ [ NSInputManager currentInputManager ] markedTextAbandoned:_cocoa_subdriver->cocoaview ];
}
+#endif
}
/* Clear any marked string from the current edit box. */
HandleTextInput(NULL, true);
@@ -1032,7 +1037,17 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count)
{
if (!EditBoxInGlobalFocus()) return NSNotFound;
- NSPoint view_pt = [ self convertPoint:[ [ self window ] convertScreenToBase:thePoint ] fromView:nil ];
+ 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
+ }
Point pt = { (int)view_pt.x, (int)[ self frame ].size.height - (int)view_pt.y };
@@ -1061,9 +1076,13 @@ static const char *Utf8AdvanceByUtf16Units(const char *str, NSUInteger count)
}
#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
}
/** Get the bounding rect for the given range. */
diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm
index 1298961dc..f4a7c2b42 100644
--- a/src/video/cocoa/event.mm
+++ b/src/video/cocoa/event.mm
@@ -100,10 +100,10 @@ static void QZ_WarpCursor(int x, int y)
NSPoint p = NSMakePoint(x, y);
CGPoint cgp = _cocoa_subdriver->PrivateLocalToCG(&p);
- /* this is the magic call that fixes cursor "freezing" after warp */
- CGSetLocalEventsSuppressionInterval(0.0);
/* Do the actual warp */
CGWarpMouseCursorPosition(cgp);
+ /* this is the magic call that fixes cursor "freezing" after warp */
+ CGAssociateMouseAndMouseCursorPosition(true);
}
diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm
index 795a311bc..d42749bac 100644
--- a/src/video/cocoa/wnd_quartz.mm
+++ b/src/video/cocoa/wnd_quartz.mm
@@ -333,7 +333,9 @@ bool WindowQuartzSubdriver::SetVideoMode(int width, int height, int bpp)
[ this->window setAcceptsMouseMovedEvents:YES ];
[ this->window setViewsNeedDisplay:NO ];
- [ this->window useOptimizedDrawing:YES ];
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
+ if ([ this->window respondsToSelector:@selector(useOptimizedDrawing:) ]) [ this->window useOptimizedDrawing:YES ];
+#endif
delegate = [ [ OTTD_CocoaWindowDelegate alloc ] init ];
[ delegate setDriver:this ];
@@ -517,7 +519,16 @@ CGPoint WindowQuartzSubdriver::PrivateLocalToCG(NSPoint *p)
p->y = this->window_height - p->y;
*p = [ this->cocoaview convertPoint:*p toView:nil ];
- *p = [ this->window convertBaseToScreen:*p ];
+#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
+ if ([ this->window respondsToSelector:@selector(convertRectToScreen:) ]) {
+ *p = [ this->window convertRectToScreen:NSMakeRect(p->x, p->y, 0, 0) ].origin;
+ } else
+#endif
+ {
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
+ *p = [ this->window convertBaseToScreen:*p ];
+#endif
+ }
p->y = this->device_height - p->y;
CGPoint cgp;
@@ -539,7 +550,9 @@ NSPoint WindowQuartzSubdriver::GetMouseLocation(NSEvent *event)
else
#endif
{
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
pt = [ this->cocoaview convertPoint:[ [ this->cocoaview window ] convertScreenToBase:[ event locationInWindow ] ] fromView:nil ];
+#endif
}
} else {
pt = [ event locationInWindow ];