summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/ios/qiosscreen.mm13
-rw-r--r--src/plugins/platforms/ios/qiostheme.h5
-rw-r--r--src/plugins/platforms/ios/qiostheme.mm38
3 files changed, 51 insertions, 5 deletions
diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm
index 9aba658479..c3376c08e8 100644
--- a/src/plugins/platforms/ios/qiosscreen.mm
+++ b/src/plugins/platforms/ios/qiosscreen.mm
@@ -45,6 +45,7 @@
#include "qiosapplicationdelegate.h"
#include "qiosviewcontroller.h"
#include "quiview.h"
+#include "qiostheme.h"
#include <QtCore/private/qcore_mac_p.h>
@@ -207,6 +208,18 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen)
[super sendEvent:event];
}
+- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
+{
+ [super traitCollectionDidChange:previousTraitCollection];
+
+ if (self.screen == UIScreen.mainScreen) {
+ if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) {
+ QIOSTheme::initializeSystemPalette();
+ QWindowSystemInterface::handleThemeChange<QWindowSystemInterface::SynchronousDelivery>(nullptr);
+ }
+ }
+}
+
@end
// -------------------------------------------------------------------------
diff --git a/src/plugins/platforms/ios/qiostheme.h b/src/plugins/platforms/ios/qiostheme.h
index c917679a91..c9d833713d 100644
--- a/src/plugins/platforms/ios/qiostheme.h
+++ b/src/plugins/platforms/ios/qiostheme.h
@@ -65,9 +65,12 @@ public:
static const char *name;
+ static void initializeSystemPalette();
+
private:
mutable QHash<QPlatformTheme::Font, QFont *> m_fonts;
- QPalette m_systemPalette;
+
+ static QPalette s_systemPalette;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/ios/qiostheme.mm b/src/plugins/platforms/ios/qiostheme.mm
index 5534264a60..626fbb66fe 100644
--- a/src/plugins/platforms/ios/qiostheme.mm
+++ b/src/plugins/platforms/ios/qiostheme.mm
@@ -44,6 +44,7 @@
#include <QtCore/private/qcore_mac_p.h>
#include <QtGui/QFont>
+#include <QtGui/private/qcoregraphics_p.h>
#include <QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h>
#include <QtGui/private/qguiapplication_p.h>
@@ -63,10 +64,8 @@ QT_BEGIN_NAMESPACE
const char *QIOSTheme::name = "ios";
QIOSTheme::QIOSTheme()
- : m_systemPalette(*QPlatformTheme::palette(QPlatformTheme::SystemPalette))
{
- m_systemPalette.setBrush(QPalette::Highlight, QColor(204, 221, 237));
- m_systemPalette.setBrush(QPalette::HighlightedText, Qt::black);
+ initializeSystemPalette();
}
QIOSTheme::~QIOSTheme()
@@ -74,10 +73,41 @@ QIOSTheme::~QIOSTheme()
qDeleteAll(m_fonts);
}
+QPalette QIOSTheme::s_systemPalette;
+
+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::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::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::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);
+ }
+}
+
const QPalette *QIOSTheme::palette(QPlatformTheme::Palette type) const
{
if (type == QPlatformTheme::SystemPalette)
- return &m_systemPalette;
+ return &s_systemPalette;
return 0;
}