libui/darwin/sierra.h

80 lines
3.6 KiB
C

// 2 june 2017
// The OS X 10.12 SDK introduces a number of new names for
// existing constants to align the naming conventions of
// Objective-C and Swift (particularly in AppKit).
//
// Unfortunately, in a baffling move, instead of using the existing
// AvailabilityMacros.h method of marking things deprecated, they
// rewrote the relevant constants in ways that make
// source-compatible building much more annoying:
//
// - The replacement names are now the only names in the enum
// or define sets they used to be in.
// - The old names are provided as static const variables, which
// means any code that used the old names in a switch case now
// spit out a compiler warning in strict C99 mode (TODO and in C++ mode?).
// - The old names are marked with new deprecated-symbol
// macros that are *not* compatible with the AvailabilityMacros.h
// macros, meaning their deprecation warnings still come
// through. (It should be noted that AvailabilityMacros.h was still
// updated for 10.12 regardless, hence our #ifdef below.)
//
// As far as I can gather, these facts are not documented *at all*, so
// in the meantime, other open-source projects just use their own
// #defines to maintain source compatibility, either by making the
// new names available everywhere or the old ones un-deprecated.
// We choose the latter.
// TODO file a radar on the issue (after determining C++ compatibility) so this can be pinned down once and for all
// TODO after that, link my stackoverflow question here too
// TODO make sure this #ifdef does actually work on older systems
#ifdef MAC_OS_X_VERSION_10_12
#define NSControlKeyMask NSEventModifierFlagControl
#define NSAlternateKeyMask NSEventModifierFlagOption
#define NSShiftKeyMask NSEventModifierFlagShift
#define NSCommandKeyMask NSEventModifierFlagCommand
#define NSLeftMouseDown NSEventTypeLeftMouseDown
#define NSRightMouseDown NSEventTypeRightMouseDown
#define NSOtherMouseDown NSEventTypeOtherMouseDown
#define NSLeftMouseUp NSEventTypeLeftMouseUp
#define NSRightMouseUp NSEventTypeRightMouseUp
#define NSOtherMouseUp NSEventTypeOtherMouseUp
#define NSLeftMouseDragged NSEventTypeLeftMouseDragged
#define NSRightMouseDragged NSEventTypeRightMouseDragged
#define NSOtherMouseDragged NSEventTypeOtherMouseDragged
#define NSKeyDown NSEventTypeKeyDown
#define NSKeyUp NSEventTypeKeyUp
#define NSFlagsChanged NSEventTypeFlagsChanged
#define NSApplicationDefined NSEventTypeApplicationDefined
#define NSPeriodic NSEventTypePeriodic
#define NSMouseMoved NSEventTypeMouseMoved
#define NSRegularControlSize NSControlSizeRegular
#define NSSmallControlSize NSControlSizeSmall
#define NSAnyEventMask NSEventMaskAny
#define NSLeftMouseDraggedMask NSEventMaskLeftMouseDragged
#define NSLeftMouseUpMask NSEventMaskLeftMouseUp
#define NSTickMarkAbove NSTickMarkPositionAbove
#define NSLinearSlider NSSliderTypeLinear
#define NSInformationalAlertStyle NSAlertStyleInformational
#define NSCriticalAlertStyle NSAlertStyleCritical
#define NSBorderlessWindowMask NSWindowStyleMaskBorderless
#define NSTitledWindowMask NSWindowStyleMaskTitled
#define NSClosableWindowMask NSWindowStyleMaskClosable
#define NSMiniaturizableWindowMask NSWindowStyleMaskMiniaturizable
#define NSResizableWindowMask NSWindowStyleMaskResizable
#endif
// TODO /Users/pietro/src/github.com/andlabs/libui/darwin/stddialogs.m:83:15: warning: 'beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:' is deprecated: first deprecated in macOS 10.10 - Use -beginSheetModalForWindow:completionHandler: instead [-Wdeprecated-declarations]
// TODO https://developer.apple.com/library/content/releasenotes/Miscellaneous/RN-Foundation-OSX10.12/