ikeh1024のブログ

ZennやQiitaに書くにはちょっと小粒なネタをこちらに書いています

NSAlertのWindowLevelはどれなのか

  • macOS 10.14 frameworks内の定義より引用
  • 単純に数字の大小では決まらない…?
    • NSFloatingWindowLevelは最前面に来ますよね…
typedef NSInteger NSWindowLevel NS_TYPED_EXTENSIBLE_ENUM;
static const NSWindowLevel NSNormalWindowLevel = kCGNormalWindowLevel;
static const NSWindowLevel NSFloatingWindowLevel = kCGFloatingWindowLevel;
static const NSWindowLevel NSSubmenuWindowLevel = kCGTornOffMenuWindowLevel;
static const NSWindowLevel NSTornOffMenuWindowLevel = kCGTornOffMenuWindowLevel;
static const NSWindowLevel NSMainMenuWindowLevel = kCGMainMenuWindowLevel;
static const NSWindowLevel NSStatusWindowLevel = kCGStatusWindowLevel;
static const NSWindowLevel NSModalPanelWindowLevel = kCGModalPanelWindowLevel;
static const NSWindowLevel NSPopUpMenuWindowLevel = kCGPopUpMenuWindowLevel;
static const NSWindowLevel NSScreenSaverWindowLevel = kCGScreenSaverWindowLevel;
/* Definitions of older constant values. */
#define kCGBaseWindowLevel              ((CGWindowLevel)INT32_MIN)
#define kCGMinimumWindowLevel           ((CGWindowLevel)(kCGBaseWindowLevel + kCGNumReservedBaseWindowLevels))
#define kCGMaximumWindowLevel           ((CGWindowLevel)(INT32_MAX - kCGNumReservedWindowLevels))

#define kCGDesktopWindowLevel           ((CGWindowLevel)(kCGMinimumWindowLevel + 20))
#define kCGDesktopIconWindowLevel       ((CGWindowLevel)(kCGDesktopWindowLevel + 20))
#define kCGBackstopMenuLevel            ((CGWindowLevel)-20)
#define kCGNormalWindowLevel            ((CGWindowLevel)0)
#define kCGFloatingWindowLevel          ((CGWindowLevel)3)
#define kCGTornOffMenuWindowLevel       ((CGWindowLevel)3)
#define kCGModalPanelWindowLevel        ((CGWindowLevel)8)
#define kCGUtilityWindowLevel           ((CGWindowLevel)19)
#define kCGDockWindowLevel              ((CGWindowLevel)20)
#define kCGMainMenuWindowLevel          ((CGWindowLevel)24)
#define kCGStatusWindowLevel            ((CGWindowLevel)25)
#define kCGPopUpMenuWindowLevel         ((CGWindowLevel)101)
#define kCGOverlayWindowLevel           ((CGWindowLevel)102)
#define kCGHelpWindowLevel              ((CGWindowLevel)200)
#define kCGDraggingWindowLevel          ((CGWindowLevel)500)
#define kCGScreenSaverWindowLevel       ((CGWindowLevel)1000)
#define kCGAssistiveTechHighWindowLevel ((CGWindowLevel)1500)
#define kCGCursorWindowLevel            ((CGWindowLevel)(kCGMaximumWindowLevel - 1))

(デスクトップ) < kCGDesktopWindowLevel < (アイコン)  < kCGDesktopWindowIconWindowLevel  < NSNormalWindowLevel < kCGDockWindowLevel < (ドック)  < kCGUtilityWindowLevel < kCGHelpWindowLevel < kCGDraggingWindowLevel  < NSFloatingWindowLevel < NSModalPanelWindowLevel  < NSStatusWindowLevel < NSPopUpMenuWindowLevel  < NSTornOffMenuWindowLevel < NSMainMenuWindowLevel < (メニュー)  < NSScreenSaverWindowLevel < kCGAssistiveTechHighWindowLevel  < kCGCursorWindowLevel