Remove unneeded @available check for macOS <= 10.14 and iOS <= 13
All versions down to Qt 6.2 require macOS 10.14 or iOS 13. Change-Id: I5048921ea5a149346a0fa84228227d9156004675 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> (cherry picked from commit 1e97a44e765a61305f3d8ffbca5d33c05008744c) Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
This commit is contained in:
parent
310e74411c
commit
d5804f86ce
@ -263,16 +263,9 @@ QMacAutoReleasePool::QMacAutoReleasePool()
|
||||
|
||||
#ifdef QT_DEBUG
|
||||
void *poolFrame = nullptr;
|
||||
if (__builtin_available(macOS 10.14, iOS 12.0, tvOS 12.0, watchOS 5.0, *)) {
|
||||
void *frame;
|
||||
if (backtrace_from_fp(__builtin_frame_address(0), &frame, 1))
|
||||
poolFrame = frame;
|
||||
} else {
|
||||
static const int maxFrames = 3;
|
||||
void *callstack[maxFrames];
|
||||
if (backtrace(callstack, maxFrames) == maxFrames)
|
||||
poolFrame = callstack[maxFrames - 1];
|
||||
}
|
||||
void *frame;
|
||||
if (backtrace_from_fp(__builtin_frame_address(0), &frame, 1))
|
||||
poolFrame = frame;
|
||||
|
||||
if (poolFrame) {
|
||||
Dl_info info;
|
||||
@ -343,12 +336,9 @@ QDebug operator<<(QDebug debug, const QCFString &string)
|
||||
#ifdef Q_OS_MACOS
|
||||
bool qt_mac_applicationIsInDarkMode()
|
||||
{
|
||||
if (__builtin_available(macOS 10.14, *)) {
|
||||
auto appearance = [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames:
|
||||
@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
|
||||
return [appearance isEqualToString:NSAppearanceNameDarkAqua];
|
||||
}
|
||||
return false;
|
||||
auto appearance = [NSApp.effectiveAppearance bestMatchFromAppearancesWithNames:
|
||||
@[ NSAppearanceNameAqua, NSAppearanceNameDarkAqua ]];
|
||||
return [appearance isEqualToString:NSAppearanceNameDarkAqua];
|
||||
}
|
||||
|
||||
bool qt_mac_runningUnderRosetta()
|
||||
|
@ -98,14 +98,9 @@ static QPalette *qt_mac_createSystemPalette()
|
||||
// System palette initialization:
|
||||
QBrush br = qt_mac_toQBrush([NSColor selectedControlColor]);
|
||||
palette->setBrush(QPalette::Active, QPalette::Highlight, br);
|
||||
if (__builtin_available(macOS 10.14, *)) {
|
||||
const auto inactiveHighlight = qt_mac_toQBrush([NSColor unemphasizedSelectedContentBackgroundColor]);
|
||||
palette->setBrush(QPalette::Inactive, QPalette::Highlight, inactiveHighlight);
|
||||
palette->setBrush(QPalette::Disabled, QPalette::Highlight, inactiveHighlight);
|
||||
} else {
|
||||
palette->setBrush(QPalette::Inactive, QPalette::Highlight, br);
|
||||
palette->setBrush(QPalette::Disabled, QPalette::Highlight, br);
|
||||
}
|
||||
const auto inactiveHighlight = qt_mac_toQBrush([NSColor unemphasizedSelectedContentBackgroundColor]);
|
||||
palette->setBrush(QPalette::Inactive, QPalette::Highlight, inactiveHighlight);
|
||||
palette->setBrush(QPalette::Disabled, QPalette::Highlight, inactiveHighlight);
|
||||
|
||||
palette->setBrush(QPalette::Shadow, qt_mac_toQColor([NSColor shadowColor]));
|
||||
|
||||
@ -190,17 +185,8 @@ static QHash<QPlatformTheme::Palette, QPalette*> qt_mac_createRolePalettes()
|
||||
}
|
||||
if (mac_widget_colors[i].paletteRole == QPlatformTheme::MenuPalette
|
||||
|| mac_widget_colors[i].paletteRole == QPlatformTheme::MenuBarPalette) {
|
||||
NSColor *selectedMenuItemColor = nil;
|
||||
if (__builtin_available(macOS 10.14, *)) {
|
||||
// Cheap approximation for NSVisualEffectView (see deprecation note for selectedMenuItemTextColor)
|
||||
selectedMenuItemColor = [[NSColor selectedContentBackgroundColor] highlightWithLevel:0.4];
|
||||
} else {
|
||||
// selectedMenuItemColor would presumably be the correct color to use as the background
|
||||
// for selected menu items. But that color is always blue, and doesn't follow the
|
||||
// appearance color in system preferences. So we therefore deliberately choose to use
|
||||
// keyboardFocusIndicatorColor instead, which appears to have the same color value.
|
||||
selectedMenuItemColor = [NSColor keyboardFocusIndicatorColor];
|
||||
}
|
||||
// Cheap approximation for NSVisualEffectView (see deprecation note for selectedMenuItemTextColor)
|
||||
auto selectedMenuItemColor = [[NSColor selectedContentBackgroundColor] highlightWithLevel:0.4];
|
||||
pal.setBrush(QPalette::Highlight, qt_mac_toQColor(selectedMenuItemColor));
|
||||
qc = qt_mac_toQColor([NSColor labelColor]);
|
||||
pal.setBrush(QPalette::ButtonText, qc);
|
||||
@ -221,17 +207,10 @@ static QHash<QPlatformTheme::Palette, QPalette*> qt_mac_createRolePalettes()
|
||||
} else if (mac_widget_colors[i].paletteRole == QPlatformTheme::ItemViewPalette) {
|
||||
NSArray<NSColor *> *baseColors = nil;
|
||||
NSColor *activeHighlightColor = nil;
|
||||
if (__builtin_available(macOS 10.14, *)) {
|
||||
baseColors = [NSColor alternatingContentBackgroundColors];
|
||||
activeHighlightColor = [NSColor selectedContentBackgroundColor];
|
||||
pal.setBrush(QPalette::Inactive, QPalette::HighlightedText,
|
||||
qt_mac_toQBrush([NSColor unemphasizedSelectedTextColor]));
|
||||
} else {
|
||||
baseColors = [NSColor controlAlternatingRowBackgroundColors];
|
||||
activeHighlightColor = [NSColor alternateSelectedControlColor];
|
||||
pal.setBrush(QPalette::Inactive, QPalette::HighlightedText,
|
||||
pal.brush(QPalette::Active, QPalette::Text));
|
||||
}
|
||||
baseColors = [NSColor alternatingContentBackgroundColors];
|
||||
activeHighlightColor = [NSColor selectedContentBackgroundColor];
|
||||
pal.setBrush(QPalette::Inactive, QPalette::HighlightedText,
|
||||
qt_mac_toQBrush([NSColor unemphasizedSelectedTextColor]));
|
||||
pal.setBrush(QPalette::Base, qt_mac_toQBrush(baseColors[0]));
|
||||
pal.setBrush(QPalette::AlternateBase, qt_mac_toQBrush(baseColors[1]));
|
||||
pal.setBrush(QPalette::Active, QPalette::Highlight,
|
||||
@ -267,9 +246,7 @@ QCocoaTheme::QCocoaTheme()
|
||||
{
|
||||
if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave) {
|
||||
m_appearanceObserver = QMacKeyValueObserver(NSApp, @"effectiveAppearance", [this] {
|
||||
if (__builtin_available(macOS 10.14, *))
|
||||
NSAppearance.currentAppearance = NSApp.effectiveAppearance;
|
||||
|
||||
NSAppearance.currentAppearance = NSApp.effectiveAppearance;
|
||||
handleSystemThemeChange();
|
||||
});
|
||||
}
|
||||
|
@ -77,8 +77,7 @@
|
||||
if (m_fileDialog->options()->fileMode() == QFileDialogOptions::ExistingFiles)
|
||||
self.allowsMultipleSelection = YES;
|
||||
|
||||
if (@available(ios 13.0, *))
|
||||
self.directoryURL = m_fileDialog->options()->initialDirectory().toNSURL();
|
||||
self.directoryURL = m_fileDialog->options()->initialDirectory().toNSURL();
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -213,12 +213,10 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen)
|
||||
{
|
||||
[super traitCollectionDidChange:previousTraitCollection];
|
||||
|
||||
if (@available(iOS 12, *)) {
|
||||
if (self.screen == UIScreen.mainScreen) {
|
||||
if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
|
||||
QIOSTheme::initializeSystemPalette();
|
||||
QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
|
||||
}
|
||||
if (self.screen == UIScreen.mainScreen) {
|
||||
if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
|
||||
QIOSTheme::initializeSystemPalette();
|
||||
QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -79,28 +79,23 @@ void QIOSTheme::initializeSystemPalette()
|
||||
Q_DECL_IMPORT QPalette qt_fusionPalette(void);
|
||||
s_systemPalette = qt_fusionPalette();
|
||||
|
||||
if (@available(ios 13.0, *)) {
|
||||
s_systemPalette.setBrush(QPalette::Window, qt_mac_toQBrush(UIColor.systemGroupedBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::WindowText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Window, qt_mac_toQBrush(UIColor.systemGroupedBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::WindowText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
|
||||
s_systemPalette.setBrush(QPalette::Base, qt_mac_toQBrush(UIColor.secondarySystemGroupedBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::Text, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Base, qt_mac_toQBrush(UIColor.secondarySystemGroupedBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::Text, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
|
||||
s_systemPalette.setBrush(QPalette::Button, qt_mac_toQBrush(UIColor.secondarySystemBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::ButtonText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Button, qt_mac_toQBrush(UIColor.secondarySystemBackgroundColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::ButtonText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::BrightText, qt_mac_toQBrush(UIColor.lightTextColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::PlaceholderText, qt_mac_toQBrush(UIColor.placeholderTextColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::BrightText, qt_mac_toQBrush(UIColor.lightTextColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::PlaceholderText, qt_mac_toQBrush(UIColor.placeholderTextColor.CGColor));
|
||||
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::Link, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::LinkVisited, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::Link, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||
s_systemPalette.setBrush(QPalette::Active, QPalette::LinkVisited, qt_mac_toQBrush(UIColor.linkColor.CGColor));
|
||||
|
||||
s_systemPalette.setBrush(QPalette::Highlight, QColor(11, 70, 150, 60));
|
||||
s_systemPalette.setBrush(QPalette::HighlightedText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
} else {
|
||||
s_systemPalette.setBrush(QPalette::Highlight, QColor(204, 221, 237));
|
||||
s_systemPalette.setBrush(QPalette::HighlightedText, Qt::black);
|
||||
}
|
||||
s_systemPalette.setBrush(QPalette::Highlight, QColor(11, 70, 150, 60));
|
||||
s_systemPalette.setBrush(QPalette::HighlightedText, qt_mac_toQBrush(UIColor.labelColor.CGColor));
|
||||
}
|
||||
|
||||
const QPalette *QIOSTheme::palette(QPlatformTheme::Palette type) const
|
||||
|
@ -747,15 +747,7 @@ Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
|
||||
|
||||
+ (Class)layerClass
|
||||
{
|
||||
#ifdef TARGET_IPHONE_SIMULATOR
|
||||
if (@available(ios 13.0, *))
|
||||
#endif
|
||||
|
||||
return [CAMetalLayer class];
|
||||
|
||||
#ifdef TARGET_IPHONE_SIMULATOR
|
||||
return nil;
|
||||
#endif
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1849,13 +1849,9 @@ NSView *QMacStylePrivate::cocoaControl(CocoaControl widget) const
|
||||
|| widget.size == QStyleHelper::SizeDefault)
|
||||
return nil;
|
||||
|
||||
if (widget.type == Box) {
|
||||
if (__builtin_available(macOS 10.14, *)) {
|
||||
if (isDarkMode()) {
|
||||
// See render code in drawPrimitive(PE_FrameTabWidget)
|
||||
widget.type = Box_Dark;
|
||||
}
|
||||
}
|
||||
if (widget.type == Box && isDarkMode()) {
|
||||
// See render code in drawPrimitive(PE_FrameTabWidget)
|
||||
widget.type = Box_Dark;
|
||||
}
|
||||
|
||||
NSView *bv = cocoaControls.value(widget, nil);
|
||||
|
@ -354,32 +354,30 @@ void TlsCryptographSecureTransport::continueHandshake()
|
||||
// (and send it during handshake) and then receive what our peer has sent to us.
|
||||
// And here we can finally try to find a match (if any).
|
||||
const auto &configuration = q->sslConfiguration();
|
||||
if (__builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
const auto &requestedProtocols = configuration.allowedNextProtocols();
|
||||
if (const int requestedCount = requestedProtocols.size()) {
|
||||
QTlsBackend::setAlpnStatus(d, QSslConfiguration::NextProtocolNegotiationNone);
|
||||
QTlsBackend::setNegotiatedProtocol(d, {});
|
||||
const auto &requestedProtocols = configuration.allowedNextProtocols();
|
||||
if (const int requestedCount = requestedProtocols.size()) {
|
||||
QTlsBackend::setAlpnStatus(d, QSslConfiguration::NextProtocolNegotiationNone);
|
||||
QTlsBackend::setNegotiatedProtocol(d, {});
|
||||
|
||||
QCFType<CFArrayRef> cfArray;
|
||||
const OSStatus result = SSLCopyALPNProtocols(context, &cfArray);
|
||||
if (result == errSecSuccess && cfArray && CFArrayGetCount(cfArray)) {
|
||||
const int size = CFArrayGetCount(cfArray);
|
||||
QList<QString> peerProtocols(size);
|
||||
for (int i = 0; i < size; ++i)
|
||||
peerProtocols[i] = QString::fromCFString((CFStringRef)CFArrayGetValueAtIndex(cfArray, i));
|
||||
QCFType<CFArrayRef> cfArray;
|
||||
const OSStatus result = SSLCopyALPNProtocols(context, &cfArray);
|
||||
if (result == errSecSuccess && cfArray && CFArrayGetCount(cfArray)) {
|
||||
const int size = CFArrayGetCount(cfArray);
|
||||
QList<QString> peerProtocols(size);
|
||||
for (int i = 0; i < size; ++i)
|
||||
peerProtocols[i] = QString::fromCFString((CFStringRef)CFArrayGetValueAtIndex(cfArray, i));
|
||||
|
||||
for (int i = 0; i < requestedCount; ++i) {
|
||||
const auto requestedName = QString::fromLatin1(requestedProtocols[i]);
|
||||
for (int j = 0; j < size; ++j) {
|
||||
if (requestedName == peerProtocols[j]) {
|
||||
QTlsBackend::setNegotiatedProtocol(d, requestedName.toLatin1());
|
||||
QTlsBackend::setAlpnStatus(d, QSslConfiguration::NextProtocolNegotiationNegotiated);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (configuration.nextProtocolNegotiationStatus() == QSslConfiguration::NextProtocolNegotiationNegotiated)
|
||||
for (int i = 0; i < requestedCount; ++i) {
|
||||
const auto requestedName = QString::fromLatin1(requestedProtocols[i]);
|
||||
for (int j = 0; j < size; ++j) {
|
||||
if (requestedName == peerProtocols[j]) {
|
||||
QTlsBackend::setNegotiatedProtocol(d, requestedName.toLatin1());
|
||||
QTlsBackend::setAlpnStatus(d, QSslConfiguration::NextProtocolNegotiationNegotiated);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (configuration.nextProtocolNegotiationStatus() == QSslConfiguration::NextProtocolNegotiationNegotiated)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -723,32 +721,30 @@ bool TlsCryptographSecureTransport::initSslContext()
|
||||
return false;
|
||||
}
|
||||
|
||||
if (__builtin_available(macOS 10.13, iOS 11.0, tvOS 11.0, watchOS 4.0, *)) {
|
||||
const auto protocolNames = configuration.allowedNextProtocols();
|
||||
QCFType<CFMutableArrayRef> cfNames(CFArrayCreateMutable(nullptr, 0, &kCFTypeArrayCallBacks));
|
||||
if (cfNames) {
|
||||
for (const QByteArray &name : protocolNames) {
|
||||
if (name.size() > 255) {
|
||||
qCWarning(lcSecureTransport) << "TLS ALPN extension" << name
|
||||
<< "is too long and will be ignored.";
|
||||
continue;
|
||||
} else if (name.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
QCFString cfName(QString::fromLatin1(name).toCFString());
|
||||
CFArrayAppendValue(cfNames, cfName);
|
||||
const auto protocolNames = configuration.allowedNextProtocols();
|
||||
QCFType<CFMutableArrayRef> cfNames(CFArrayCreateMutable(nullptr, 0, &kCFTypeArrayCallBacks));
|
||||
if (cfNames) {
|
||||
for (const QByteArray &name : protocolNames) {
|
||||
if (name.size() > 255) {
|
||||
qCWarning(lcSecureTransport) << "TLS ALPN extension" << name
|
||||
<< "is too long and will be ignored.";
|
||||
continue;
|
||||
} else if (name.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CFArrayGetCount(cfNames)) {
|
||||
// Up to the application layer to check that negotiation
|
||||
// failed, and handle this non-TLS error, we do not handle
|
||||
// the result of this call as an error:
|
||||
if (SSLSetALPNProtocols(context, cfNames) != errSecSuccess)
|
||||
qCWarning(lcSecureTransport) << "SSLSetALPNProtocols failed - too long protocol names?";
|
||||
}
|
||||
} else {
|
||||
qCWarning(lcSecureTransport) << "failed to allocate ALPN names array";
|
||||
QCFString cfName(QString::fromLatin1(name).toCFString());
|
||||
CFArrayAppendValue(cfNames, cfName);
|
||||
}
|
||||
|
||||
if (CFArrayGetCount(cfNames)) {
|
||||
// Up to the application layer to check that negotiation
|
||||
// failed, and handle this non-TLS error, we do not handle
|
||||
// the result of this call as an error:
|
||||
if (SSLSetALPNProtocols(context, cfNames) != errSecSuccess)
|
||||
qCWarning(lcSecureTransport) << "SSLSetALPNProtocols failed - too long protocol names?";
|
||||
}
|
||||
} else {
|
||||
qCWarning(lcSecureTransport) << "failed to allocate ALPN names array";
|
||||
}
|
||||
|
||||
if (mode == QSslSocket::SslClientMode) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user