diff options
author | Michael Lutz <michi@icosahedron.de> | 2021-06-21 23:37:49 +0200 |
---|---|---|
committer | Michael Lutz <michi@icosahedron.de> | 2021-06-22 21:09:37 +0200 |
commit | 0d5d3083bd6f0f3c51b15d58a6cb525912e1b775 (patch) | |
tree | 5d76eeb4100c7ba023212b773c21a925983fe743 | |
parent | 8c1b89e1079e411a2a87f2faae4c8546de6979de (diff) | |
download | openttd-0d5d3083bd6f0f3c51b15d58a6cb525912e1b775.tar.xz |
Codechange: [OSX] Use more exact enum names where introduced with the 10.12 SDK.
The enum values still have the exact same numerical values, but the 10.12
SDK introduced more explicit names (e.g. like NSEventTypeApplicationDefined
instead of NSApplicationDefined) for several enum constants.
Use them when available.
-rw-r--r-- | src/os/macosx/macos.mm | 4 | ||||
-rw-r--r-- | src/os/macosx/osx_stdafx.h | 4 | ||||
-rw-r--r-- | src/video/cocoa/cocoa_v.mm | 28 | ||||
-rw-r--r-- | src/video/cocoa/cocoa_wnd.mm | 47 |
4 files changed, 63 insertions, 20 deletions
diff --git a/src/os/macosx/macos.mm b/src/os/macosx/macos.mm index 6f0ab8d63..90bcd6dc4 100644 --- a/src/os/macosx/macos.mm +++ b/src/os/macosx/macos.mm @@ -191,13 +191,13 @@ const char *GetCurrentLocale(const char *) bool GetClipboardContents(char *buffer, const char *last) { NSPasteboard *pb = [ NSPasteboard generalPasteboard ]; - NSArray *types = [ NSArray arrayWithObject:NSStringPboardType ]; + NSArray *types = [ NSArray arrayWithObject:NSPasteboardTypeString ]; NSString *bestType = [ pb availableTypeFromArray:types ]; /* Clipboard has no text data available. */ if (bestType == nil) return false; - NSString *string = [ pb stringForType:NSStringPboardType ]; + NSString *string = [ pb stringForType:NSPasteboardTypeString ]; if (string == nil || [ string length ] == 0) return false; strecpy(buffer, [ string UTF8String ], last); diff --git a/src/os/macosx/osx_stdafx.h b/src/os/macosx/osx_stdafx.h index e147fcf74..9c4276d05 100644 --- a/src/os/macosx/osx_stdafx.h +++ b/src/os/macosx/osx_stdafx.h @@ -26,6 +26,10 @@ #define HAVE_OSX_1011_SDK #endif +#ifdef MAC_OS_X_VERSION_10_12 +#define HAVE_OSX_1012_SDK +#endif + /* It would seem that to ensure backward compatibility we have to ensure that we have defined MAC_OS_X_VERSION_10_x everywhere */ #ifndef MAC_OS_X_VERSION_10_3 #define MAC_OS_X_VERSION_10_3 1030 diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 2a8737333..f43ea9b28 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -45,6 +45,17 @@ #import <sys/time.h> /* gettimeofday */ #include <array> +/* The 10.12 SDK added new names for some enum constants and + * deprecated the old ones. As there's no functional change in any + * way, just use a define for older SDKs to the old names. */ +#ifndef HAVE_OSX_1012_SDK +# define NSEventModifierFlagCommand NSCommandKeyMask +# define NSEventModifierFlagControl NSControlKeyMask +# define NSEventModifierFlagOption NSAlternateKeyMask +# define NSEventModifierFlagShift NSShiftKeyMask +# define NSEventModifierFlagCapsLock NSAlphaShiftKeyMask +#endif + /** * Important notice regarding all modifications!!!!!!! * There are certain limitations because the file is objective C++. @@ -360,7 +371,11 @@ bool VideoDriver_Cocoa::MakeWindow(int width, int height) NSRect contentRect = NSMakeRect(0, 0, width, height); /* Create main window. */ +#ifdef HAVE_OSX_1012_SDK + unsigned int style = NSWindowStyleMaskTitled | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskClosable; +#else unsigned int style = NSTitledWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask | NSClosableWindowMask; +#endif this->window = [ [ OTTD_CocoaWindow alloc ] initWithContentRect:contentRect styleMask:style backing:NSBackingStoreBuffered defer:NO driver:this ]; if (this->window == nil) { Debug(driver, 0, "Could not create the Cocoa window."); @@ -376,7 +391,7 @@ bool VideoDriver_Cocoa::MakeWindow(int width, int height) behavior |= NSWindowCollectionBehaviorFullScreenPrimary; [ this->window setCollectionBehavior:behavior ]; - NSButton* fullscreenButton = [ this->window standardWindowButton:NSWindowFullScreenButton ]; + NSButton* fullscreenButton = [ this->window standardWindowButton:NSWindowZoomButton ]; [ fullscreenButton setAction:@selector(toggleFullScreen:) ]; [ fullscreenButton setTarget:this->window ]; } @@ -430,7 +445,12 @@ bool VideoDriver_Cocoa::MakeWindow(int width, int height) */ bool VideoDriver_Cocoa::PollEvent() { - NSEvent *event = [ NSApp nextEventMatchingMask:NSAnyEventMask untilDate:[ NSDate distantPast ] inMode:NSDefaultRunLoopMode dequeue:YES ]; +#ifdef HAVE_OSX_1012_SDK + NSEventMask mask = NSEventMaskAny; +#else + NSEventMask mask = NSAnyEventMask; +#endif + NSEvent *event = [ NSApp nextEventMatchingMask:mask untilDate:[ NSDate distantPast ] inMode:NSDefaultRunLoopMode dequeue:YES ]; if (event == nil) return false; @@ -445,8 +465,8 @@ void VideoDriver_Cocoa::InputLoop() bool old_ctrl_pressed = _ctrl_pressed; - _ctrl_pressed = (cur_mods & ( _settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? NSControlKeyMask : NSCommandKeyMask)) != 0; - _shift_pressed = (cur_mods & NSShiftKeyMask) != 0; + _ctrl_pressed = (cur_mods & ( _settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? NSEventModifierFlagControl : NSEventModifierFlagCommand)) != 0; + _shift_pressed = (cur_mods & NSEventModifierFlagShift) != 0; #if defined(_DEBUG) this->fast_forward_key_pressed = _shift_pressed; diff --git a/src/video/cocoa/cocoa_wnd.mm b/src/video/cocoa/cocoa_wnd.mm index c0a1bb694..1f470a948 100644 --- a/src/video/cocoa/cocoa_wnd.mm +++ b/src/video/cocoa/cocoa_wnd.mm @@ -37,6 +37,16 @@ /* Table data for key mapping. */ #include "cocoa_keys.h" +/* The 10.12 SDK added new names for some enum constants and + * deprecated the old ones. As there's no functional change in any + * way, just use a define for older SDKs to the old names. */ +#ifndef HAVE_OSX_1012_SDK +# define NSEventModifierFlagCommand NSCommandKeyMask +# define NSEventModifierFlagControl NSControlKeyMask +# define NSEventModifierFlagOption NSAlternateKeyMask +# define NSEventModifierFlagShift NSShiftKeyMask +# define NSEventModifierFlagCapsLock NSAlphaShiftKeyMask +#endif /** * Important notice regarding all modifications!!!!!!! @@ -135,7 +145,12 @@ static std::vector<WChar> NSStringToUTF32(NSString *s) [ NSApp stop:self ]; /* Send an empty event to return from the run loop. Without that, application is stuck waiting for an event. */ - NSEvent *event = [ NSEvent otherEventWithType:NSApplicationDefined location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0.0 windowNumber:0 context:nil subtype:0 data1:0 data2:0 ]; +#ifdef HAVE_OSX_1012_SDK + NSEventType type = NSEventTypeApplicationDefined; +#else + NSEventType type = NSApplicationDefined; +#endif + NSEvent *event = [ NSEvent otherEventWithType:type location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0.0 windowNumber:0 context:nil subtype:0 data1:0 data2:0 ]; [ NSApp postEvent:event atStart:YES ]; } @@ -207,7 +222,7 @@ static void setApplicationMenu() [ appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h" ]; NSMenuItem *menuItem = [ appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h" ]; - [ menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask | NSCommandKeyMask) ]; + [ menuItem setKeyEquivalentModifierMask:(NSEventModifierFlagOption | NSEventModifierFlagCommand) ]; [ appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@"" ]; @@ -329,7 +344,11 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel @autoreleasepool { NSAlert *alert = [ [ NSAlert alloc ] init ]; +#ifdef HAVE_OSX_1012_SDK + [ alert setAlertStyle: NSAlertStyleCritical ]; +#else [ alert setAlertStyle: NSCriticalAlertStyle ]; +#endif [ alert setMessageText:[ NSString stringWithUTF8String:title ] ]; [ alert setInformativeText:[ NSString stringWithUTF8String:message ] ]; [ alert addButtonWithTitle: [ NSString stringWithUTF8String:buttonLabel ] ]; @@ -536,8 +555,8 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel - (BOOL)emulateRightButton:(NSEvent *)event { uint32 keymask = 0; - if (_settings_client.gui.right_mouse_btn_emulation == RMBE_COMMAND) keymask |= NSCommandKeyMask; - if (_settings_client.gui.right_mouse_btn_emulation == RMBE_CONTROL) keymask |= NSControlKeyMask; + if (_settings_client.gui.right_mouse_btn_emulation == RMBE_COMMAND) keymask |= NSEventModifierFlagCommand; + if (_settings_client.gui.right_mouse_btn_emulation == RMBE_CONTROL) keymask |= NSEventModifierFlagControl; return (event.modifierFlags & keymask) != 0; } @@ -653,18 +672,18 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel case QZ_RETURN: case QZ_f: - if (down && (modifiers & NSCommandKeyMask)) { + if (down && (modifiers & NSEventModifierFlagCommand)) { VideoDriver::GetInstance()->ToggleFullscreen(!_fullscreen); } break; case QZ_v: - if (down && EditBoxInGlobalFocus() && (modifiers & (NSCommandKeyMask | NSControlKeyMask))) { + if (down && EditBoxInGlobalFocus() && (modifiers & (NSEventModifierFlagCommand | NSEventModifierFlagControl))) { HandleKeypress(WKC_CTRL | 'V', unicode); } break; case QZ_u: - if (down && EditBoxInGlobalFocus() && (modifiers & (NSCommandKeyMask | NSControlKeyMask))) { + if (down && EditBoxInGlobalFocus() && (modifiers & (NSEventModifierFlagCommand | NSEventModifierFlagControl))) { HandleKeypress(WKC_CTRL | 'U', unicode); } break; @@ -676,10 +695,10 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel auto vk = std::find_if(std::begin(_vk_mapping), std::end(_vk_mapping), [=](const CocoaVkMapping &m) { return m.vk_from == keycode; }); uint32 pressed_key = vk != std::end(_vk_mapping) ? vk->map_to : 0; - if (modifiers & NSShiftKeyMask) pressed_key |= WKC_SHIFT; - if (modifiers & NSControlKeyMask) pressed_key |= (_settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_CTRL : WKC_META); - if (modifiers & NSAlternateKeyMask) pressed_key |= WKC_ALT; - if (modifiers & NSCommandKeyMask) pressed_key |= (_settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_META : WKC_CTRL); + if (modifiers & NSEventModifierFlagShift) pressed_key |= WKC_SHIFT; + if (modifiers & NSEventModifierFlagControl) pressed_key |= (_settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_CTRL : WKC_META); + if (modifiers & NSEventModifierFlagOption) pressed_key |= WKC_ALT; + if (modifiers & NSEventModifierFlagCommand) pressed_key |= (_settings_client.gui.right_mouse_btn_emulation != RMBE_CONTROL ? WKC_META : WKC_CTRL); static bool console = false; @@ -715,7 +734,7 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel case QZ_q: case QZ_h: case QZ_m: - if (event.modifierFlags & NSCommandKeyMask) { + if (event.modifierFlags & NSEventModifierFlagCommand) { [ self interpretKeyEvents:[ NSArray arrayWithObject:event ] ]; } break; @@ -744,7 +763,7 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel case QZ_q: case QZ_h: case QZ_m: - if (event.modifierFlags & NSCommandKeyMask) { + if (event.modifierFlags & NSEventModifierFlagCommand) { [ self interpretKeyEvents:[ NSArray arrayWithObject:event ] ]; } break; @@ -765,7 +784,7 @@ void CocoaDialog(const char *title, const char *message, const char *buttonLabel if (self->_current_mods == newMods) return; /* Iterate through the bits, testing each against the current modifiers */ - for (unsigned int i = 0, bit = NSAlphaShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) { + for (unsigned int i = 0, bit = NSEventModifierFlagCapsLock; bit <= NSEventModifierFlagCommand; bit <<= 1, ++i) { unsigned int currentMask, newMask; currentMask = self->_current_mods & bit; |