Remove codepaths and checks for unsupported Apple platforms
We no longer support macOS 10.11, iOS/tvOS 10, or watchOS 3. Change-Id: Ide03d8fac06185ef4162ba75ee54a0adf6916905 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This commit is contained in:
parent
29c0377f07
commit
b02fe1bfe7
@ -24,5 +24,3 @@ load(default_pre)
|
||||
!versionAtLeast(QMAKE_XCODE_VERSION, 4.3): \
|
||||
error("This mkspec requires Xcode 4.3 or later")
|
||||
|
||||
ios:shared:!versionAtLeast(QMAKE_IOS_DEPLOYMENT_TARGET, 8.0): \
|
||||
QMAKE_IOS_DEPLOYMENT_TARGET = 8.0
|
||||
|
@ -1768,8 +1768,7 @@ static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &con
|
||||
# elif defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED)
|
||||
handledStderr |= android_default_message_handler(type, context, message);
|
||||
# elif defined(QT_USE_APPLE_UNIFIED_LOGGING)
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *))
|
||||
handledStderr |= AppleUnifiedLogger::messageHandler(type, context, message);
|
||||
handledStderr |= AppleUnifiedLogger::messageHandler(type, context, message);
|
||||
# elif defined Q_OS_WASM
|
||||
handledStderr |= wasm_default_message_handler(type, context, message);
|
||||
# endif
|
||||
|
@ -76,9 +76,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_DARWIN)
|
||||
# if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(101200, 100000, 100000, 30000)
|
||||
# include <sys/clonefile.h>
|
||||
# endif
|
||||
# include <sys/clonefile.h>
|
||||
# include <copyfile.h>
|
||||
// We cannot include <Foundation/Foundation.h> (it's an Objective-C header), but
|
||||
// we need these declarations:
|
||||
@ -1258,20 +1256,18 @@ bool QFileSystemEngine::createLink(const QFileSystemEntry &source, const QFileSy
|
||||
//static
|
||||
bool QFileSystemEngine::copyFile(const QFileSystemEntry &source, const QFileSystemEntry &target, QSystemError &error)
|
||||
{
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(101200, 100000, 100000, 30000)
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
|
||||
if (::clonefile(source.nativeFilePath().constData(),
|
||||
target.nativeFilePath().constData(), 0) == 0)
|
||||
return true;
|
||||
error = QSystemError(errno, QSystemError::StandardLibraryError);
|
||||
return false;
|
||||
}
|
||||
#if defined(Q_OS_DARWIN)
|
||||
if (::clonefile(source.nativeFilePath().constData(),
|
||||
target.nativeFilePath().constData(), 0) == 0)
|
||||
return true;
|
||||
error = QSystemError(errno, QSystemError::StandardLibraryError);
|
||||
return false;
|
||||
#else
|
||||
Q_UNUSED(source);
|
||||
Q_UNUSED(target);
|
||||
#endif
|
||||
error = QSystemError(ENOSYS, QSystemError::StandardLibraryError); //Function not implemented
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
//static
|
||||
@ -1295,13 +1291,11 @@ bool QFileSystemEngine::renameFile(const QFileSystemEntry &source, const QFileSy
|
||||
}
|
||||
#endif
|
||||
#if defined(Q_OS_DARWIN) && defined(RENAME_EXCL)
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
|
||||
if (renameatx_np(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_EXCL) == 0)
|
||||
return true;
|
||||
if (errno != ENOTSUP) {
|
||||
error = QSystemError(errno, QSystemError::StandardLibraryError);
|
||||
return false;
|
||||
}
|
||||
if (renameatx_np(AT_FDCWD, srcPath, AT_FDCWD, tgtPath, RENAME_EXCL) == 0)
|
||||
return true;
|
||||
if (errno != ENOTSUP) {
|
||||
error = QSystemError(errno, QSystemError::StandardLibraryError);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -59,36 +59,6 @@
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#if !defined(QT_BOOTSTRAPPED) && (QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12) || !defined(Q_OS_MACOS))
|
||||
#define QT_USE_APPLE_ACTIVITIES
|
||||
|
||||
#if defined(OS_ACTIVITY_OBJECT_API)
|
||||
#error The file <os/activity.h> has already been included
|
||||
#endif
|
||||
|
||||
// We runtime-check all use of the activity APIs, so we can safely build
|
||||
// with them included, even if the deployment target is macOS 10.11
|
||||
#if QT_MACOS_DEPLOYMENT_TARGET_BELOW(__MAC_10_12)
|
||||
#undef __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
#define __MAC_OS_X_VERSION_MIN_REQUIRED __MAC_10_12
|
||||
#define DID_OVERRIDE_DEPLOYMENT_TARGET
|
||||
#endif
|
||||
|
||||
#include <os/activity.h>
|
||||
#if !OS_ACTIVITY_OBJECT_API
|
||||
#error "Expected activity API to be available"
|
||||
#endif
|
||||
|
||||
#if defined(DID_OVERRIDE_DEPLOYMENT_TARGET)
|
||||
#undef __MAC_OS_X_VERSION_MIN_REQUIRED
|
||||
#define __MAC_OS_X_VERSION_MIN_REQUIRED __MAC_10_11
|
||||
#undef DID_OVERRIDE_DEPLOYMENT_TARGET
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#if defined(QT_BOOTSTRAPPED)
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#else
|
||||
@ -220,41 +190,31 @@ Q_CORE_EXPORT AppleApplication *qt_apple_sharedApplication();
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#if !defined(QT_BOOTSTRAPPED) && (QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12) || !defined(Q_OS_MACOS))
|
||||
#if !defined(QT_BOOTSTRAPPED)
|
||||
#define QT_USE_APPLE_UNIFIED_LOGGING
|
||||
|
||||
QT_END_NAMESPACE
|
||||
#include <os/log.h>
|
||||
|
||||
// The compiler isn't smart enough to realize that we're calling these functions
|
||||
// guarded by __builtin_available, so we need to also tag each function with the
|
||||
// runtime requirements.
|
||||
#include <os/availability.h>
|
||||
#define OS_LOG_AVAILABILITY API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class Q_CORE_EXPORT AppleUnifiedLogger
|
||||
{
|
||||
public:
|
||||
static bool messageHandler(QtMsgType msgType, const QMessageLogContext &context, const QString &message,
|
||||
const QString &subsystem = QString()) OS_LOG_AVAILABILITY;
|
||||
const QString &subsystem = QString());
|
||||
private:
|
||||
static os_log_type_t logTypeForMessageType(QtMsgType msgType) OS_LOG_AVAILABILITY;
|
||||
static os_log_t cachedLog(const QString &subsystem, const QString &category) OS_LOG_AVAILABILITY;
|
||||
static os_log_type_t logTypeForMessageType(QtMsgType msgType);
|
||||
static os_log_t cachedLog(const QString &subsystem, const QString &category);
|
||||
};
|
||||
|
||||
#undef OS_LOG_AVAILABILITY
|
||||
|
||||
#endif
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
#if defined(QT_USE_APPLE_ACTIVITIES)
|
||||
#if !defined(QT_BOOTSTRAPPED)
|
||||
|
||||
QT_END_NAMESPACE
|
||||
#include <os/availability.h>
|
||||
#define OS_ACTIVITY_AVAILABILITY API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
|
||||
#define OS_ACTIVITY_AVAILABILITY_CHECK __builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)
|
||||
#include <os/activity.h>
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
template <typename T> using QAppleOsType = QAppleRefCounted<T, void *, os_retain, os_release>;
|
||||
@ -263,7 +223,7 @@ class Q_CORE_EXPORT QAppleLogActivity
|
||||
{
|
||||
public:
|
||||
QAppleLogActivity() : activity(nullptr) {}
|
||||
QAppleLogActivity(os_activity_t activity) OS_ACTIVITY_AVAILABILITY : activity(activity) {}
|
||||
QAppleLogActivity(os_activity_t activity) : activity(activity) {}
|
||||
~QAppleLogActivity() { if (activity) leave(); }
|
||||
|
||||
QAppleLogActivity(const QAppleLogActivity &) = delete;
|
||||
@ -284,21 +244,17 @@ public:
|
||||
|
||||
QAppleLogActivity&& enter()
|
||||
{
|
||||
if (activity) {
|
||||
if (OS_ACTIVITY_AVAILABILITY_CHECK)
|
||||
os_activity_scope_enter(static_cast<os_activity_t>(*this), &state);
|
||||
}
|
||||
if (activity)
|
||||
os_activity_scope_enter(static_cast<os_activity_t>(*this), &state);
|
||||
return std::move(*this);
|
||||
}
|
||||
|
||||
void leave() {
|
||||
if (activity) {
|
||||
if (OS_ACTIVITY_AVAILABILITY_CHECK)
|
||||
os_activity_scope_leave(&state);
|
||||
}
|
||||
if (activity)
|
||||
os_activity_scope_leave(&state);
|
||||
}
|
||||
|
||||
operator os_activity_t() OS_ACTIVITY_AVAILABILITY
|
||||
operator os_activity_t()
|
||||
{
|
||||
return reinterpret_cast<os_activity_t>(static_cast<void *>(activity));
|
||||
}
|
||||
@ -312,9 +268,7 @@ private:
|
||||
#define QT_APPLE_LOG_ACTIVITY_CREATE(condition, description, parent) []() { \
|
||||
if (!(condition)) \
|
||||
return QAppleLogActivity(); \
|
||||
if (OS_ACTIVITY_AVAILABILITY_CHECK) \
|
||||
return QAppleLogActivity(os_activity_create(description, parent, OS_ACTIVITY_FLAG_DEFAULT)); \
|
||||
return QAppleLogActivity(); \
|
||||
return QAppleLogActivity(os_activity_create(description, parent, OS_ACTIVITY_FLAG_DEFAULT)); \
|
||||
}()
|
||||
|
||||
#define QT_VA_ARGS_CHOOSE(_1, _2, _3, _4, _5, _6, _7, _8, _9, N, ...) N
|
||||
@ -335,12 +289,7 @@ QT_MAC_WEAK_IMPORT(_os_activity_current);
|
||||
|
||||
#define QT_APPLE_SCOPED_LOG_ACTIVITY(...) QAppleLogActivity scopedLogActivity = QT_APPLE_LOG_ACTIVITY(__VA_ARGS__).enter();
|
||||
|
||||
#else
|
||||
// No-ops for macOS 10.11. We don't need to provide QT_APPLE_SCOPED_LOG_ACTIVITY,
|
||||
// as all the call sites for that are in code that's only built on 10.12 and above.
|
||||
#define QT_APPLE_LOG_ACTIVITY_WITH_PARENT(...)
|
||||
#define QT_APPLE_LOG_ACTIVITY(...)
|
||||
#endif // QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE
|
||||
#endif // !defined(QT_BOOTSTRAPPED)
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
|
@ -267,13 +267,11 @@ QT_USE_NAMESPACE
|
||||
inLaunch = false;
|
||||
|
||||
if (qEnvironmentVariableIsEmpty("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM")) {
|
||||
if (__builtin_available(macOS 10.12, *)) {
|
||||
// Move the application window to front to avoid launching behind the terminal.
|
||||
// Ignoring other apps is necessary (we must ignore the terminal), but makes
|
||||
// Qt apps play slightly less nice with other apps when lanching from Finder
|
||||
// (See the activateIgnoringOtherApps docs.)
|
||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||
}
|
||||
// Move the application window to front to avoid launching behind the terminal.
|
||||
// Ignoring other apps is necessary (we must ignore the terminal), but makes
|
||||
// Qt apps play slightly less nice with other apps when lanching from Finder
|
||||
// (See the activateIgnoringOtherApps docs.)
|
||||
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,11 +67,6 @@ QImage::Format QCocoaBackingStore::format() const
|
||||
return QRasterBackingStore::format();
|
||||
}
|
||||
|
||||
#if !QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12)
|
||||
static const NSCompositingOperation NSCompositingOperationCopy = NSCompositeCopy;
|
||||
static const NSCompositingOperation NSCompositingOperationSourceOver = NSCompositeSourceOver;
|
||||
#endif
|
||||
|
||||
/*!
|
||||
Flushes the given \a region from the specified \a window onto the
|
||||
screen.
|
||||
|
@ -262,29 +262,20 @@ static bool isMouseEvent(NSEvent *ev)
|
||||
NSEnumerator<NSWindow*> *windowEnumerator = nullptr;
|
||||
NSApplication *application = [NSApplication sharedApplication];
|
||||
|
||||
#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12)
|
||||
if (__builtin_available(macOS 10.12, *)) {
|
||||
// Unfortunately there's no NSWindowListOrderedBackToFront,
|
||||
// so we have to manually reverse the order using an array.
|
||||
NSMutableArray<NSWindow *> *windows = [NSMutableArray<NSWindow *> new];
|
||||
[application enumerateWindowsWithOptions:NSWindowListOrderedFrontToBack
|
||||
usingBlock:^(NSWindow *window, BOOL *) {
|
||||
// For some reason AppKit will give us nil-windows, skip those
|
||||
if (!window)
|
||||
return;
|
||||
// Unfortunately there's no NSWindowListOrderedBackToFront,
|
||||
// so we have to manually reverse the order using an array.
|
||||
NSMutableArray<NSWindow *> *windows = [NSMutableArray<NSWindow *> new];
|
||||
[application enumerateWindowsWithOptions:NSWindowListOrderedFrontToBack
|
||||
usingBlock:^(NSWindow *window, BOOL *) {
|
||||
// For some reason AppKit will give us nil-windows, skip those
|
||||
if (!window)
|
||||
return;
|
||||
|
||||
[windows addObject:window];
|
||||
}
|
||||
];
|
||||
[windows addObject:window];
|
||||
}
|
||||
];
|
||||
|
||||
windowEnumerator = windows.reverseObjectEnumerator;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
// No way to get ordered list of windows, so fall back to unordered,
|
||||
// list, which typically corresponds to window creation order.
|
||||
windowEnumerator = application.windows.objectEnumerator;
|
||||
}
|
||||
windowEnumerator = windows.reverseObjectEnumerator;
|
||||
|
||||
for (NSWindow *window in windowEnumerator) {
|
||||
// We're meddling with normal and floating windows, so leave others alone
|
||||
|
@ -115,10 +115,8 @@ void QIOSIntegration::initialize()
|
||||
m_touchDevice = new QTouchDevice;
|
||||
m_touchDevice->setType(QTouchDevice::TouchScreen);
|
||||
QTouchDevice::Capabilities touchCapabilities = QTouchDevice::Position | QTouchDevice::NormalizedPosition;
|
||||
if (__builtin_available(iOS 9, *)) {
|
||||
if (mainScreen.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
|
||||
touchCapabilities |= QTouchDevice::Pressure;
|
||||
}
|
||||
if (mainScreen.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
|
||||
touchCapabilities |= QTouchDevice::Pressure;
|
||||
m_touchDevice->setCapabilities(touchCapabilities);
|
||||
QWindowSystemInterface::registerTouchDevice(m_touchDevice);
|
||||
#if QT_CONFIG(tabletevent)
|
||||
|
@ -456,12 +456,7 @@ qreal QIOSScreen::devicePixelRatio() const
|
||||
|
||||
qreal QIOSScreen::refreshRate() const
|
||||
{
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, 100300, 110000, __WATCHOS_NA)
|
||||
if (__builtin_available(iOS 10.3, tvOS 11, *))
|
||||
return m_uiScreen.maximumFramesPerSecond;
|
||||
#endif
|
||||
|
||||
return 60.0;
|
||||
return m_uiScreen.maximumFramesPerSecond;
|
||||
}
|
||||
|
||||
Qt::ScreenOrientation QIOSScreen::nativeOrientation() const
|
||||
|
@ -244,17 +244,15 @@
|
||||
self.inputAccessoryView = [[[WrapperView alloc] initWithView:accessoryView] autorelease];
|
||||
|
||||
#ifndef Q_OS_TVOS
|
||||
if (__builtin_available(iOS 9, *)) {
|
||||
if (platformData.value(kImePlatformDataHideShortcutsBar).toBool()) {
|
||||
// According to the docs, leadingBarButtonGroups/trailingBarButtonGroups should be set to nil to hide the shortcuts bar.
|
||||
// However, starting with iOS 10, the API has been surrounded with NS_ASSUME_NONNULL, which contradicts this and causes
|
||||
// compiler warnings. Still it is the way to go to really hide the space reserved for that.
|
||||
if (platformData.value(kImePlatformDataHideShortcutsBar).toBool()) {
|
||||
// According to the docs, leadingBarButtonGroups/trailingBarButtonGroups should be set to nil to hide the shortcuts bar.
|
||||
// However, starting with iOS 10, the API has been surrounded with NS_ASSUME_NONNULL, which contradicts this and causes
|
||||
// compiler warnings. Still it is the way to go to really hide the space reserved for that.
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wnonnull"
|
||||
self.inputAssistantItem.leadingBarButtonGroups = nil;
|
||||
self.inputAssistantItem.trailingBarButtonGroups = nil;
|
||||
self.inputAssistantItem.leadingBarButtonGroups = nil;
|
||||
self.inputAssistantItem.trailingBarButtonGroups = nil;
|
||||
#pragma clang diagnostic pop
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -128,21 +128,17 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
self.layer.borderWidth = 1.0;
|
||||
}
|
||||
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, 110000, 110000, __WATCHOS_NA)
|
||||
if (qEnvironmentVariableIsSet("QT_IOS_DEBUG_WINDOW_SAFE_AREAS")) {
|
||||
if (__builtin_available(iOS 11, tvOS 11, *)) {
|
||||
UIView *safeAreaOverlay = [[UIView alloc] initWithFrame:CGRectZero];
|
||||
[safeAreaOverlay setBackgroundColor:[UIColor colorWithRed:0.3 green:0.7 blue:0.9 alpha:0.3]];
|
||||
[self addSubview:safeAreaOverlay];
|
||||
UIView *safeAreaOverlay = [[UIView alloc] initWithFrame:CGRectZero];
|
||||
[safeAreaOverlay setBackgroundColor:[UIColor colorWithRed:0.3 green:0.7 blue:0.9 alpha:0.3]];
|
||||
[self addSubview:safeAreaOverlay];
|
||||
|
||||
safeAreaOverlay.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[safeAreaOverlay.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor].active = YES;
|
||||
[safeAreaOverlay.leftAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.leftAnchor].active = YES;
|
||||
[safeAreaOverlay.rightAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.rightAnchor].active = YES;
|
||||
[safeAreaOverlay.bottomAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.bottomAnchor].active = YES;
|
||||
}
|
||||
safeAreaOverlay.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[safeAreaOverlay.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor].active = YES;
|
||||
[safeAreaOverlay.leftAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.leftAnchor].active = YES;
|
||||
[safeAreaOverlay.rightAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.rightAnchor].active = YES;
|
||||
[safeAreaOverlay.bottomAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.bottomAnchor].active = YES;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return self;
|
||||
@ -355,12 +351,10 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
QTouchDevice *touchDevice = QIOSIntegration::instance()->touchDevice();
|
||||
QTouchDevice::Capabilities touchCapabilities = touchDevice->capabilities();
|
||||
|
||||
if (__builtin_available(iOS 9, *)) {
|
||||
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
|
||||
touchCapabilities |= QTouchDevice::Pressure;
|
||||
else
|
||||
touchCapabilities &= ~QTouchDevice::Pressure;
|
||||
}
|
||||
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable)
|
||||
touchCapabilities |= QTouchDevice::Pressure;
|
||||
else
|
||||
touchCapabilities &= ~QTouchDevice::Pressure;
|
||||
|
||||
touchDevice->setCapabilities(touchCapabilities);
|
||||
}
|
||||
@ -668,18 +662,7 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
|
||||
- (UIEdgeInsets)qt_safeAreaInsets
|
||||
{
|
||||
#if QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, 110000, 110000, __WATCHOS_NA)
|
||||
if (__builtin_available(iOS 11, tvOS 11, *))
|
||||
return self.safeAreaInsets;
|
||||
#endif
|
||||
|
||||
// Fallback for iOS < 11
|
||||
UIEdgeInsets safeAreaInsets = UIEdgeInsetsZero;
|
||||
CGPoint topInset = [self convertPoint:CGPointMake(0, self.viewController.topLayoutGuide.length) fromView:nil];
|
||||
CGPoint bottomInset = [self convertPoint:CGPointMake(0, self.viewController.bottomLayoutGuide.length) fromView:nil];
|
||||
safeAreaInsets.top = topInset.y;
|
||||
safeAreaInsets.bottom = bottomInset.y;
|
||||
return safeAreaInsets;
|
||||
return self.safeAreaInsets;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1735,17 +1735,10 @@ NSView *QMacStylePrivate::cocoaControl(CocoaControl widget) const
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
} ();
|
||||
#if QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_12)
|
||||
const auto styleMask = NSWindowStyleMaskTitled
|
||||
| NSWindowStyleMaskClosable
|
||||
| NSWindowStyleMaskMiniaturizable
|
||||
| NSWindowStyleMaskResizable;
|
||||
#else
|
||||
const auto styleMask = NSTitledWindowMask
|
||||
| NSClosableWindowMask
|
||||
| NSMiniaturizableWindowMask
|
||||
| NSResizableWindowMask;
|
||||
#endif
|
||||
bv = [NSWindow standardWindowButton:button forStyleMask:styleMask];
|
||||
[bv retain];
|
||||
break;
|
||||
|
@ -52,10 +52,7 @@ bool QAppleTestLogger::debugLoggingEnabled()
|
||||
// Debug-level messages are only captured in memory when debug logging is
|
||||
// enabled through a configuration change, which can happen automatically
|
||||
// when running inside Xcode, or with the Console application open.
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *))
|
||||
return os_log_type_enabled(OS_LOG_DEFAULT, OS_LOG_TYPE_DEBUG);
|
||||
|
||||
return false;
|
||||
return os_log_type_enabled(OS_LOG_DEFAULT, OS_LOG_TYPE_DEBUG);
|
||||
}
|
||||
|
||||
QAppleTestLogger::QAppleTestLogger(QAbstractTestLogger *logger)
|
||||
@ -71,15 +68,13 @@ void QAppleTestLogger::enterTestFunction(const char *function)
|
||||
// Re-create activity each time
|
||||
testFunctionActivity = QT_APPLE_LOG_ACTIVITY("Running test function").enter();
|
||||
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
|
||||
QTestCharBuffer testIdentifier;
|
||||
QTestPrivate::generateTestIdentifier(&testIdentifier);
|
||||
QString identifier = QString::fromLatin1(testIdentifier.data());
|
||||
QMessageLogContext context(nullptr, 0, nullptr, "qt.test.enter");
|
||||
QString message = identifier;
|
||||
if (AppleUnifiedLogger::messageHandler(QtDebugMsg, context, message, identifier))
|
||||
return; // AUL already printed to stderr
|
||||
}
|
||||
QTestCharBuffer testIdentifier;
|
||||
QTestPrivate::generateTestIdentifier(&testIdentifier);
|
||||
QString identifier = QString::fromLatin1(testIdentifier.data());
|
||||
QMessageLogContext context(nullptr, 0, nullptr, "qt.test.enter");
|
||||
QString message = identifier;
|
||||
if (AppleUnifiedLogger::messageHandler(QtDebugMsg, context, message, identifier))
|
||||
return; // AUL already printed to stderr
|
||||
|
||||
m_logger->enterTestFunction(function);
|
||||
}
|
||||
@ -113,41 +108,38 @@ static IncidentClassification incidentTypeToClassification(QAbstractTestLogger::
|
||||
void QAppleTestLogger::addIncident(IncidentTypes type, const char *description,
|
||||
const char *file, int line)
|
||||
{
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
|
||||
IncidentClassification incidentClassification = incidentTypeToClassification(type);
|
||||
|
||||
QTestCharBuffer category;
|
||||
QTest::qt_asprintf(&category, "qt.test.%s", incidentClassification.second);
|
||||
QMessageLogContext context(file, line, /* function = */ nullptr, category.data());
|
||||
IncidentClassification incidentClassification = incidentTypeToClassification(type);
|
||||
|
||||
QTestCharBuffer subsystemBuffer;
|
||||
// It would be nice to have the data tag as part of the subsystem too, but that
|
||||
// will for some tests results in hundreds of thousands of log objects being
|
||||
// created, so we limit the subsystem to test functions, which we can hope
|
||||
// are reasonably limited.
|
||||
generateTestIdentifier(&subsystemBuffer, TestObject | TestFunction);
|
||||
QString subsystem = QString::fromLatin1(subsystemBuffer.data());
|
||||
QTestCharBuffer category;
|
||||
QTest::qt_asprintf(&category, "qt.test.%s", incidentClassification.second);
|
||||
QMessageLogContext context(file, line, /* function = */ nullptr, category.data());
|
||||
|
||||
// We still want the full identifier as part of the message though
|
||||
QTestCharBuffer testIdentifier;
|
||||
generateTestIdentifier(&testIdentifier);
|
||||
QString message = QString::fromLatin1(testIdentifier.data());
|
||||
if (qstrlen(description))
|
||||
message += QLatin1Char('\n') % QString::fromLatin1(description);
|
||||
QTestCharBuffer subsystemBuffer;
|
||||
// It would be nice to have the data tag as part of the subsystem too, but that
|
||||
// will for some tests results in hundreds of thousands of log objects being
|
||||
// created, so we limit the subsystem to test functions, which we can hope
|
||||
// are reasonably limited.
|
||||
generateTestIdentifier(&subsystemBuffer, TestObject | TestFunction);
|
||||
QString subsystem = QString::fromLatin1(subsystemBuffer.data());
|
||||
|
||||
if (AppleUnifiedLogger::messageHandler(incidentClassification.first, context, message, subsystem))
|
||||
return; // AUL already printed to stderr
|
||||
}
|
||||
// We still want the full identifier as part of the message though
|
||||
QTestCharBuffer testIdentifier;
|
||||
generateTestIdentifier(&testIdentifier);
|
||||
QString message = QString::fromLatin1(testIdentifier.data());
|
||||
if (qstrlen(description))
|
||||
message += QLatin1Char('\n') % QString::fromLatin1(description);
|
||||
|
||||
if (AppleUnifiedLogger::messageHandler(incidentClassification.first, context, message, subsystem))
|
||||
return; // AUL already printed to stderr
|
||||
|
||||
m_logger->addIncident(type, description, file, line);
|
||||
}
|
||||
|
||||
void QAppleTestLogger::addMessage(QtMsgType type, const QMessageLogContext &context, const QString &message)
|
||||
{
|
||||
if (__builtin_available(macOS 10.12, iOS 10, tvOS 10, watchOS 3, *)) {
|
||||
if (AppleUnifiedLogger::messageHandler(type, context, message))
|
||||
return; // AUL already printed to stderr
|
||||
}
|
||||
if (AppleUnifiedLogger::messageHandler(type, context, message))
|
||||
return; // AUL already printed to stderr
|
||||
|
||||
m_logger->addMessage(type, context, message);
|
||||
}
|
||||
|
@ -456,8 +456,7 @@ void tst_QTimer::moveToThread()
|
||||
#if defined(Q_OS_WIN32)
|
||||
QSKIP("Does not work reliably on Windows :(");
|
||||
#elif defined(Q_OS_MACOS)
|
||||
if (__builtin_available(macOS 10.12, *))
|
||||
QSKIP("Does not work reliably on macOS 10.12 (QTBUG-59679)");
|
||||
QSKIP("Does not work reliably on macOS 10.12+ (QTBUG-59679)");
|
||||
#endif
|
||||
QTimer ti1;
|
||||
QTimer ti2;
|
||||
|
Loading…
x
Reference in New Issue
Block a user