diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformintegration.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformintegration.cpp | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp index c81cc66166..6fe0caba2e 100644 --- a/src/plugins/platforms/android/qandroidplatformintegration.cpp +++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp @@ -52,6 +52,7 @@ #include <qpa/qplatformoffscreensurface.h> #include "androidjnimain.h" +#include "androidjniaccessibility.h" #include "qabstracteventdispatcher.h" #include "qandroideventdispatcher.h" #include "qandroidplatformbackingstore.h" @@ -89,6 +90,7 @@ Qt::ScreenOrientation QAndroidPlatformIntegration::m_orientation = Qt::PrimaryOr Qt::ScreenOrientation QAndroidPlatformIntegration::m_nativeOrientation = Qt::PrimaryOrientation; bool QAndroidPlatformIntegration::m_showPasswordEnabled = false; +static bool m_running = false; void *QAndroidPlatformNativeInterface::nativeResourceForIntegration(const QByteArray &resource) { @@ -151,6 +153,16 @@ void QAndroidPlatformNativeInterface::customEvent(QEvent *event) QMutexLocker lock(QtAndroid::platformInterfaceMutex()); QAndroidPlatformIntegration *api = static_cast<QAndroidPlatformIntegration *>(QGuiApplicationPrivate::platformIntegration()); QtAndroid::setAndroidPlatformIntegration(api); + +#ifndef QT_NO_ACCESSIBILITY + // Android accessibility activation event might have been already received + api->accessibility()->setActive(QtAndroidAccessibility::isActive()); +#endif // QT_NO_ACCESSIBILITY + + if (!m_running) { + m_running = true; + QtAndroid::notifyQtAndroidPluginRunning(m_running); + } api->flushPendingUpdates(); } @@ -176,9 +188,10 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList ¶ m_primaryScreen = new QAndroidPlatformScreen(); QWindowSystemInterface::handleScreenAdded(m_primaryScreen); - m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight)); - m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight)); - m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight)); + const QSize physicalSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight); + const QSize screenSize(m_defaultScreenWidth, m_defaultScreenHeight); + const QRect geometry(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight); + m_primaryScreen->setSizeParameters(physicalSize, screenSize, geometry); m_mainThread = QThread::currentThread(); @@ -451,10 +464,10 @@ void QAndroidPlatformIntegration::setScreenOrientation(Qt::ScreenOrientation cur void QAndroidPlatformIntegration::flushPendingUpdates() { - m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, - m_defaultPhysicalSizeHeight)); - m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight)); - m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight)); + const QSize physicalSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight); + const QSize screenSize(m_defaultScreenWidth, m_defaultScreenHeight); + const QRect geometry(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight); + m_primaryScreen->setSizeParameters(physicalSize, screenSize, geometry); } #ifndef QT_NO_ACCESSIBILITY @@ -482,6 +495,23 @@ void QAndroidPlatformIntegration::setScreenSize(int width, int height) QMetaObject::invokeMethod(m_primaryScreen, "setSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height))); } +void QAndroidPlatformIntegration::setScreenSizeParameters(const QSize &physicalSize, + const QSize &screenSize, + const QRect &availableGeometry) +{ + if (m_primaryScreen) { + QMetaObject::invokeMethod(m_primaryScreen, "setSizeParameters", Qt::AutoConnection, + Q_ARG(QSize, physicalSize), Q_ARG(QSize, screenSize), + Q_ARG(QRect, availableGeometry)); + } +} + +void QAndroidPlatformIntegration::setRefreshRate(qreal refreshRate) +{ + if (m_primaryScreen) + QMetaObject::invokeMethod(m_primaryScreen, "setRefreshRate", Qt::AutoConnection, + Q_ARG(qreal, refreshRate)); +} #if QT_CONFIG(vulkan) QPlatformVulkanInstance *QAndroidPlatformIntegration::createPlatformVulkanInstance(QVulkanInstance *instance) const |