80 lines
3.6 KiB
C
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/
|