summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/android')
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.cpp17
-rw-r--r--src/plugins/platforms/android/androidjniaccessibility.h5
-rw-r--r--src/plugins/platforms/android/androidjniclipboard.cpp4
-rw-r--r--src/plugins/platforms/android/androidjniclipboard.h4
-rw-r--r--src/plugins/platforms/android/androidjniinput.cpp4
-rw-r--r--src/plugins/platforms/android/androidjniinput.h5
-rw-r--r--src/plugins/platforms/android/androidjnimain.cpp32
-rw-r--r--src/plugins/platforms/android/androidjnimain.h5
-rw-r--r--src/plugins/platforms/android/androidjnimenu.cpp4
-rw-r--r--src/plugins/platforms/android/androidjnimenu.h5
-rw-r--r--src/plugins/platforms/android/androidsurfaceclient.h4
-rw-r--r--src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidassetsfileenginehandler.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformdialoghelpers.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformdialoghelpers.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformfontdatabase.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformfontdatabase.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp17
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.h5
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenu.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenu.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenubar.cpp3
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenubar.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenuitem.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformmenuitem.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformopenglcontext.cpp1
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.cpp29
-rw-r--r--src/plugins/platforms/android/qandroidplatformscreen.h9
-rw-r--r--src/plugins/platforms/android/qandroidplatformservices.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformservices.h4
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.cpp4
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.h4
32 files changed, 175 insertions, 38 deletions
diff --git a/src/plugins/platforms/android/androidjniaccessibility.cpp b/src/plugins/platforms/android/androidjniaccessibility.cpp
index 7fc7595881..a7fec8748b 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.cpp
+++ b/src/plugins/platforms/android/androidjniaccessibility.cpp
@@ -49,6 +49,7 @@
#include "qrect.h"
#include "QtGui/qaccessible.h"
#include <QtCore/qmath.h>
+#include <QtCore/private/qjnihelpers_p.h>
#include "qdebug.h"
@@ -56,6 +57,8 @@ static const char m_qtTag[] = "Qt A11Y";
static const char m_classErrorMsg[] = "Can't find class \"%s\"";
static const char m_methodErrorMsg[] = "Can't find method \"%s%s\"";
+QT_BEGIN_NAMESPACE
+
namespace QtAndroidAccessibility
{
static jmethodID m_addActionMethodID = 0;
@@ -227,7 +230,7 @@ if (!clazz) { \
if (desc.isEmpty())
desc = iface->text(QAccessible::Description);
if (QAccessibleTextInterface *textIface = iface->textInterface()) {
- if (textIface->selectionCount() > 0) {
+ if (m_setTextSelectionMethodID && textIface->selectionCount() > 0) {
int startSelection;
int endSelection;
textIface->selection(0, &startSelection, &endSelection);
@@ -286,12 +289,15 @@ if (!clazz) { \
bool registerNatives(JNIEnv *env)
{
+ if (QtAndroidPrivate::androidSdkVersion() < 16)
+ return true; // We need API level 16 or higher
+
jclass clazz;
FIND_AND_CHECK_CLASS("org/qtproject/qt5/android/accessibility/QtNativeAccessibility");
jclass appClass = static_cast<jclass>(env->NewGlobalRef(clazz));
if (env->RegisterNatives(appClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) {
- __android_log_print(ANDROID_LOG_FATAL,"Qt", "RegisterNatives failed");
+ __android_log_print(ANDROID_LOG_FATAL,"Qt A11y", "RegisterNatives failed");
return false;
}
@@ -305,9 +311,14 @@ if (!clazz) { \
GET_AND_CHECK_STATIC_METHOD(m_setFocusableMethodID, nodeInfoClass, "setFocusable", "(Z)V");
GET_AND_CHECK_STATIC_METHOD(m_setFocusedMethodID, nodeInfoClass, "setFocused", "(Z)V");
GET_AND_CHECK_STATIC_METHOD(m_setScrollableMethodID, nodeInfoClass, "setScrollable", "(Z)V");
- GET_AND_CHECK_STATIC_METHOD(m_setTextSelectionMethodID, nodeInfoClass, "setTextSelection", "(II)V");
GET_AND_CHECK_STATIC_METHOD(m_setVisibleToUserMethodID, nodeInfoClass, "setVisibleToUser", "(Z)V");
+ if (QtAndroidPrivate::androidSdkVersion() >= 18) {
+ GET_AND_CHECK_STATIC_METHOD(m_setTextSelectionMethodID, nodeInfoClass, "setTextSelection", "(II)V");
+ }
+
return true;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/androidjniaccessibility.h b/src/plugins/platforms/android/androidjniaccessibility.h
index e708138c33..3ca89242fe 100644
--- a/src/plugins/platforms/android/androidjniaccessibility.h
+++ b/src/plugins/platforms/android/androidjniaccessibility.h
@@ -42,10 +42,15 @@
#ifndef ANDROIDJNIACCESSIBILITY_H
#define ANDROIDJNIACCESSIBILITY_H
#include <jni.h>
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
namespace QtAndroidAccessibility
{
bool registerNatives(JNIEnv *env);
}
+QT_END_NAMESPACE
+
#endif // ANDROIDJNIINPUT_H
diff --git a/src/plugins/platforms/android/androidjniclipboard.cpp b/src/plugins/platforms/android/androidjniclipboard.cpp
index 05270ac374..87bb08910d 100644
--- a/src/plugins/platforms/android/androidjniclipboard.cpp
+++ b/src/plugins/platforms/android/androidjniclipboard.cpp
@@ -42,6 +42,8 @@
#include "androidjniclipboard.h"
#include "androidjnimain.h"
+QT_BEGIN_NAMESPACE
+
using namespace QtAndroid;
namespace QtAndroidClipboard
{
@@ -118,3 +120,5 @@ namespace QtAndroidClipboard
return true;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/androidjniclipboard.h b/src/plugins/platforms/android/androidjniclipboard.h
index 15cd93202e..764ef908df 100644
--- a/src/plugins/platforms/android/androidjniclipboard.h
+++ b/src/plugins/platforms/android/androidjniclipboard.h
@@ -45,6 +45,8 @@
#include <jni.h>
#include <QString>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformClipboard;
namespace QtAndroidClipboard
{
@@ -58,4 +60,6 @@ namespace QtAndroidClipboard
bool registerNatives(JNIEnv *env);
}
+QT_END_NAMESPACE
+
#endif // ANDROIDJNICLIPBOARD_H
diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
index 760da7a767..defc59abf0 100644
--- a/src/plugins/platforms/android/androidjniinput.cpp
+++ b/src/plugins/platforms/android/androidjniinput.cpp
@@ -49,6 +49,8 @@
#include <QDebug>
+QT_BEGIN_NAMESPACE
+
using namespace QtAndroid;
namespace QtAndroidInput
@@ -758,3 +760,5 @@ namespace QtAndroidInput
return true;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h
index a78c7519db..5a7357633c 100644
--- a/src/plugins/platforms/android/androidjniinput.h
+++ b/src/plugins/platforms/android/androidjniinput.h
@@ -42,6 +42,9 @@
#ifndef ANDROIDJNIINPUT_H
#define ANDROIDJNIINPUT_H
#include <jni.h>
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
namespace QtAndroidInput
{
@@ -56,4 +59,6 @@ namespace QtAndroidInput
bool registerNatives(JNIEnv *env);
}
+QT_END_NAMESPACE
+
#endif // ANDROIDJNIINPUT_H
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp
index d484a2faff..09c56f398c 100644
--- a/src/plugins/platforms/android/androidjnimain.cpp
+++ b/src/plugins/platforms/android/androidjnimain.cpp
@@ -76,6 +76,8 @@
Q_IMPORT_PLUGIN(QAndroidPlatformIntegrationPlugin)
+QT_BEGIN_NAMESPACE
+
static JavaVM *m_javaVM = NULL;
static jclass m_applicationClass = NULL;
static jobject m_classLoaderObject = NULL;
@@ -423,6 +425,7 @@ namespace QtAndroid
m_destroySurfaceMethodID,
surfaceId);
}
+
} // namespace QtAndroid
@@ -548,7 +551,7 @@ static void setSurface(JNIEnv *env, jobject /*thiz*/, jint id, jobject jSurface,
}
static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/,
- jint /*widthPixels*/, jint /*heightPixels*/,
+ jint widthPixels, jint heightPixels,
jint desktopWidthPixels, jint desktopHeightPixels,
jdouble xdpi, jdouble ydpi, jdouble scaledDensity)
{
@@ -557,13 +560,17 @@ static void setDisplayMetrics(JNIEnv */*env*/, jclass /*clazz*/,
m_scaledDensity = scaledDensity;
if (!m_androidPlatformIntegration) {
- QAndroidPlatformIntegration::setDefaultDisplayMetrics(desktopWidthPixels,desktopHeightPixels,
- qRound(double(desktopWidthPixels) / xdpi * 25.4),
- qRound(double(desktopHeightPixels) / ydpi * 25.4));
+ QAndroidPlatformIntegration::setDefaultDisplayMetrics(desktopWidthPixels,
+ desktopHeightPixels,
+ qRound(double(desktopWidthPixels) / xdpi * 25.4),
+ qRound(double(desktopHeightPixels) / ydpi * 25.4),
+ widthPixels,
+ heightPixels);
} else {
m_androidPlatformIntegration->setDisplayMetrics(qRound(double(desktopWidthPixels) / xdpi * 25.4),
qRound(double(desktopHeightPixels) / ydpi * 25.4));
m_androidPlatformIntegration->setDesktopSize(desktopWidthPixels, desktopHeightPixels);
+ m_androidPlatformIntegration->setScreenSize(widthPixels, heightPixels);
}
}
@@ -743,17 +750,11 @@ static int registerNatives(JNIEnv *env)
return JNI_TRUE;
}
-jint androidApiLevel(JNIEnv *env)
-{
- jclass clazz;
- FIND_AND_CHECK_CLASS("android/os/Build$VERSION");
- jfieldID fieldId;
- GET_AND_CHECK_STATIC_FIELD(fieldId, clazz, "SDK_INT", "I");
- return env->GetStaticIntField(clazz, fieldId);
-}
+QT_END_NAMESPACE
Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
{
+ QT_USE_NAMESPACE
typedef union {
JNIEnv *nativeEnvironment;
void *venv;
@@ -774,17 +775,12 @@ Q_DECL_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void */*reserved*/)
|| !QtAndroidInput::registerNatives(env)
|| !QtAndroidClipboard::registerNatives(env)
|| !QtAndroidMenu::registerNatives(env)
+ || !QtAndroidAccessibility::registerNatives(env)
|| !QtAndroidDialogHelpers::registerNatives(env)) {
__android_log_print(ANDROID_LOG_FATAL, "Qt", "registerNatives failed");
return -1;
}
- jint apiLevel = androidApiLevel(env);
- if (apiLevel >= 16 && !QtAndroidAccessibility::registerNatives(env)) {
- __android_log_print(ANDROID_LOG_FATAL, "Qt A11y", "registerNatives failed");
- return -1;
- }
-
m_javaVM = vm;
return JNI_VERSION_1_4;
}
diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h
index c00b23fff3..29896529ca 100644
--- a/src/plugins/platforms/android/androidjnimain.h
+++ b/src/plugins/platforms/android/androidjnimain.h
@@ -50,6 +50,8 @@
#include <QImage>
+QT_BEGIN_NAMESPACE
+
class QRect;
class QPoint;
class QThread;
@@ -119,4 +121,7 @@ namespace QtAndroid
QString deviceName();
}
+
+QT_END_NAMESPACE
+
#endif // ANDROID_APP_H
diff --git a/src/plugins/platforms/android/androidjnimenu.cpp b/src/plugins/platforms/android/androidjnimenu.cpp
index dc2afe2b03..6a979b9255 100644
--- a/src/plugins/platforms/android/androidjnimenu.cpp
+++ b/src/plugins/platforms/android/androidjnimenu.cpp
@@ -50,6 +50,8 @@
#include <QQueue>
#include <QWindow>
+QT_BEGIN_NAMESPACE
+
using namespace QtAndroid;
namespace QtAndroidMenu
@@ -428,3 +430,5 @@ namespace QtAndroidMenu
return true;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/androidjnimenu.h b/src/plugins/platforms/android/androidjnimenu.h
index 7c5422f67b..2ae406901a 100644
--- a/src/plugins/platforms/android/androidjnimenu.h
+++ b/src/plugins/platforms/android/androidjnimenu.h
@@ -43,6 +43,9 @@
#define ANDROIDJNIMENU_H
#include <jni.h>
+#include <qglobal.h>
+
+QT_BEGIN_NAMESPACE
class QAndroidPlatformMenuBar;
class QAndroidPlatformMenu;
@@ -66,4 +69,6 @@ namespace QtAndroidMenu
bool registerNatives(JNIEnv *env);
}
+QT_END_NAMESPACE
+
#endif // ANDROIDJNIMENU_H
diff --git a/src/plugins/platforms/android/androidsurfaceclient.h b/src/plugins/platforms/android/androidsurfaceclient.h
index 254e47123b..94f16a8547 100644
--- a/src/plugins/platforms/android/androidsurfaceclient.h
+++ b/src/plugins/platforms/android/androidsurfaceclient.h
@@ -44,6 +44,8 @@
#include <QMutex>
#include <jni.h>
+QT_BEGIN_NAMESPACE
+
class AndroidSurfaceClient
{
public:
@@ -55,4 +57,6 @@ protected:
QMutex m_surfaceMutex;
};
+QT_END_NAMESPACE
+
#endif // ANDROIDSURFACECLIENT_H
diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
index 224a8ca9f7..70ea3d756f 100644
--- a/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
+++ b/src/plugins/platforms/android/qandroidassetsfileenginehandler.cpp
@@ -45,6 +45,8 @@
#include <QCoreApplication>
#include <QVector>
+QT_BEGIN_NAMESPACE
+
typedef QVector<QString> FilesList;
struct AndroidAssetDir
@@ -394,3 +396,5 @@ QAbstractFileEngine * AndroidAssetsFileEngineHandler::create(const QString &file
}
return 0;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidassetsfileenginehandler.h b/src/plugins/platforms/android/qandroidassetsfileenginehandler.h
index ac16ad7b79..a48a288ebc 100644
--- a/src/plugins/platforms/android/qandroidassetsfileenginehandler.h
+++ b/src/plugins/platforms/android/qandroidassetsfileenginehandler.h
@@ -49,6 +49,8 @@
#include <android/asset_manager.h>
+QT_BEGIN_NAMESPACE
+
struct AndroidAssetDir;
class AndroidAssetsFileEngineHandler: public QAbstractFileEngineHandler
{
@@ -67,4 +69,6 @@ private:
mutable bool m_hasTriedPrepopulatingCache;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDASSETSFILEENGINEHANDLER_H
diff --git a/src/plugins/platforms/android/qandroidplatformdialoghelpers.cpp b/src/plugins/platforms/android/qandroidplatformdialoghelpers.cpp
index 897feb5802..6e4b6d8255 100644
--- a/src/plugins/platforms/android/qandroidplatformdialoghelpers.cpp
+++ b/src/plugins/platforms/android/qandroidplatformdialoghelpers.cpp
@@ -47,6 +47,8 @@
#include <private/qguiapplication_p.h>
#include <qpa/qplatformtheme.h>
+QT_BEGIN_NAMESPACE
+
namespace QtAndroidDialogHelpers {
static jclass g_messageDialogHelperClass = 0;
@@ -172,3 +174,5 @@ bool registerNatives(JNIEnv *env)
return true;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformdialoghelpers.h b/src/plugins/platforms/android/qandroidplatformdialoghelpers.h
index 88ec91d936..7cbe21a9f4 100644
--- a/src/plugins/platforms/android/qandroidplatformdialoghelpers.h
+++ b/src/plugins/platforms/android/qandroidplatformdialoghelpers.h
@@ -46,6 +46,8 @@
#include <QEventLoop>
#include <private/qjni_p.h>
+QT_BEGIN_NAMESPACE
+
namespace QtAndroidDialogHelpers {
class QAndroidPlatformMessageDialogHelper: public QPlatformMessageDialogHelper
@@ -74,4 +76,6 @@ bool registerNatives(JNIEnv *env);
}
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMDIALOGHELPERS_H
diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
index 935caed467..fd14f812a0 100644
--- a/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
+++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.cpp
@@ -43,6 +43,8 @@
#include "qandroidplatformfontdatabase.h"
+QT_BEGIN_NAMESPACE
+
QString QAndroidPlatformFontDatabase::fontDir() const
{
return QLatin1String("/system/fonts");
@@ -87,3 +89,5 @@ QStringList QAndroidPlatformFontDatabase::fallbacksForFamily(const QString &fami
return QString(qgetenv("QT_ANDROID_FONTS")).split(";") + m_fallbacks[script];
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformfontdatabase.h b/src/plugins/platforms/android/qandroidplatformfontdatabase.h
index cdd3cf1674..0e961f8ae8 100644
--- a/src/plugins/platforms/android/qandroidplatformfontdatabase.h
+++ b/src/plugins/platforms/android/qandroidplatformfontdatabase.h
@@ -44,6 +44,8 @@
#include <QtPlatformSupport/private/qbasicfontdatabase_p.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformFontDatabase: public QBasicFontDatabase
{
public:
@@ -58,4 +60,6 @@ private:
QHash<QChar::Script, QStringList> m_fallbacks;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMFONTDATABASE_H
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index 213b1bb7e6..d6d7d3b173 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -74,6 +74,8 @@ QT_BEGIN_NAMESPACE
int QAndroidPlatformIntegration::m_defaultGeometryWidth = 320;
int QAndroidPlatformIntegration::m_defaultGeometryHeight = 455;
+int QAndroidPlatformIntegration::m_defaultScreenWidth = 320;
+int QAndroidPlatformIntegration::m_defaultScreenHeight = 455;
int QAndroidPlatformIntegration::m_defaultPhysicalSizeWidth = 50;
int QAndroidPlatformIntegration::m_defaultPhysicalSizeHeight = 71;
@@ -121,7 +123,8 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
m_primaryScreen = new QAndroidPlatformScreen();
screenAdded(m_primaryScreen);
m_primaryScreen->setPhysicalSize(QSize(m_defaultPhysicalSizeWidth, m_defaultPhysicalSizeHeight));
- m_primaryScreen->setGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ m_primaryScreen->setAvailableGeometry(QRect(0, 0, m_defaultGeometryWidth, m_defaultGeometryHeight));
+ m_primaryScreen->setSize(QSize(m_defaultScreenWidth, m_defaultScreenHeight));
m_mainThread = QThread::currentThread();
QtAndroid::setAndroidPlatformIntegration(this);
@@ -312,12 +315,14 @@ QPlatformTheme *QAndroidPlatformIntegration::createPlatformTheme(const QString &
return 0;
}
-void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int gw, int gh, int sw, int sh)
+void QAndroidPlatformIntegration::setDefaultDisplayMetrics(int gw, int gh, int sw, int sh, int screenWidth, int screenHeight)
{
m_defaultGeometryWidth = gw;
m_defaultGeometryHeight = gh;
m_defaultPhysicalSizeWidth = sw;
m_defaultPhysicalSizeHeight = sh;
+ m_defaultScreenWidth = screenWidth;
+ m_defaultScreenHeight = screenHeight;
}
void QAndroidPlatformIntegration::setDefaultDesktopSize(int gw, int gh)
@@ -345,7 +350,7 @@ QPlatformAccessibility *QAndroidPlatformIntegration::accessibility() const
void QAndroidPlatformIntegration::setDesktopSize(int width, int height)
{
if (m_primaryScreen)
- QMetaObject::invokeMethod(m_primaryScreen, "setGeometry", Qt::AutoConnection, Q_ARG(QRect, QRect(0,0,width, height)));
+ QMetaObject::invokeMethod(m_primaryScreen, "setAvailableGeometry", Qt::AutoConnection, Q_ARG(QRect, QRect(0,0,width, height)));
}
void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height)
@@ -354,4 +359,10 @@ void QAndroidPlatformIntegration::setDisplayMetrics(int width, int height)
QMetaObject::invokeMethod(m_primaryScreen, "setPhysicalSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height)));
}
+void QAndroidPlatformIntegration::setScreenSize(int width, int height)
+{
+ if (m_primaryScreen)
+ QMetaObject::invokeMethod(m_primaryScreen, "setSize", Qt::AutoConnection, Q_ARG(QSize, QSize(width, height)));
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.h b/src/plugins/platforms/android/qandroidplatformintegration.h
index f8fa1a91dd..ce31516ace 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.h
+++ b/src/plugins/platforms/android/qandroidplatformintegration.h
@@ -86,6 +86,7 @@ public:
virtual void setDesktopSize(int width, int height);
virtual void setDisplayMetrics(int width, int height);
+ void setScreenSize(int width, int height);
bool isVirtualDesktop() { return true; }
QPlatformFontDatabase *fontDatabase() const;
@@ -108,7 +109,7 @@ public:
QStringList themeNames() const;
QPlatformTheme *createPlatformTheme(const QString &name) const;
- static void setDefaultDisplayMetrics(int gw, int gh, int sw, int sh);
+ static void setDefaultDisplayMetrics(int gw, int gh, int sw, int sh, int width, int height);
static void setDefaultDesktopSize(int gw, int gh);
static void setScreenOrientation(Qt::ScreenOrientation currentOrientation,
Qt::ScreenOrientation nativeOrientation);
@@ -135,6 +136,8 @@ private:
static int m_defaultGeometryHeight;
static int m_defaultPhysicalSizeWidth;
static int m_defaultPhysicalSizeHeight;
+ static int m_defaultScreenWidth;
+ static int m_defaultScreenHeight;
static Qt::ScreenOrientation m_orientation;
static Qt::ScreenOrientation m_nativeOrientation;
diff --git a/src/plugins/platforms/android/qandroidplatformmenu.cpp b/src/plugins/platforms/android/qandroidplatformmenu.cpp
index 1ecabb25e2..b602f85cd9 100644
--- a/src/plugins/platforms/android/qandroidplatformmenu.cpp
+++ b/src/plugins/platforms/android/qandroidplatformmenu.cpp
@@ -43,6 +43,8 @@
#include "qandroidplatformmenuitem.h"
#include "androidjnimenu.h"
+QT_BEGIN_NAMESPACE
+
QAndroidPlatformMenu::QAndroidPlatformMenu()
{
m_tag = reinterpret_cast<quintptr>(this); // QMenu will overwrite this later, but we need a unique ID for QtQuick
@@ -175,3 +177,5 @@ QMutex *QAndroidPlatformMenu::menuItemsMutex()
{
return &m_menuItemsMutex;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformmenu.h b/src/plugins/platforms/android/qandroidplatformmenu.h
index 305b64168a..7858ca36ae 100644
--- a/src/plugins/platforms/android/qandroidplatformmenu.h
+++ b/src/plugins/platforms/android/qandroidplatformmenu.h
@@ -46,6 +46,8 @@
#include <qvector.h>
#include <qmutex.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformMenuItem;
class QAndroidPlatformMenu: public QPlatformMenu
{
@@ -89,4 +91,6 @@ private:
QMutex m_menuItemsMutex;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMMENU_H
diff --git a/src/plugins/platforms/android/qandroidplatformmenubar.cpp b/src/plugins/platforms/android/qandroidplatformmenubar.cpp
index 134062fb32..2d457296c5 100644
--- a/src/plugins/platforms/android/qandroidplatformmenubar.cpp
+++ b/src/plugins/platforms/android/qandroidplatformmenubar.cpp
@@ -43,6 +43,7 @@
#include "qandroidplatformmenu.h"
#include "androidjnimenu.h"
+QT_BEGIN_NAMESPACE
QAndroidPlatformMenuBar::QAndroidPlatformMenuBar()
{
@@ -109,3 +110,5 @@ QMutex *QAndroidPlatformMenuBar::menusListMutex()
{
return &m_menusListMutex;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformmenubar.h b/src/plugins/platforms/android/qandroidplatformmenubar.h
index 56915335c2..52882b6922 100644
--- a/src/plugins/platforms/android/qandroidplatformmenubar.h
+++ b/src/plugins/platforms/android/qandroidplatformmenubar.h
@@ -46,6 +46,8 @@
#include <qvector.h>
#include <qmutex.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformMenu;
class QAndroidPlatformMenuBar: public QPlatformMenuBar
{
@@ -71,4 +73,6 @@ private:
QMutex m_menusListMutex;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMMENUBAR_H
diff --git a/src/plugins/platforms/android/qandroidplatformmenuitem.cpp b/src/plugins/platforms/android/qandroidplatformmenuitem.cpp
index bd37834d2a..4e19ec2939 100644
--- a/src/plugins/platforms/android/qandroidplatformmenuitem.cpp
+++ b/src/plugins/platforms/android/qandroidplatformmenuitem.cpp
@@ -42,6 +42,8 @@
#include "qandroidplatformmenuitem.h"
#include "qandroidplatformmenu.h"
+QT_BEGIN_NAMESPACE
+
QAndroidPlatformMenuItem::QAndroidPlatformMenuItem()
{
m_tag = reinterpret_cast<quintptr>(this); // QMenu will overwrite this later, but we need a unique ID for QtQuick
@@ -178,3 +180,5 @@ bool QAndroidPlatformMenuItem::isEnabled() const
{
return m_isEnabled;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformmenuitem.h b/src/plugins/platforms/android/qandroidplatformmenuitem.h
index 5861e8e195..40c3ab2761 100644
--- a/src/plugins/platforms/android/qandroidplatformmenuitem.h
+++ b/src/plugins/platforms/android/qandroidplatformmenuitem.h
@@ -43,6 +43,8 @@
#define QANDROIDPLATFORMMENUITEM_H
#include <qpa/qplatformmenu.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformMenu;
class QAndroidPlatformMenuItem: public QPlatformMenuItem
@@ -96,4 +98,6 @@ private:
bool m_isEnabled;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMMENUITEM_H
diff --git a/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp b/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
index 53047585cf..3a3ea71562 100644
--- a/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
+++ b/src/plugins/platforms/android/qandroidplatformopenglcontext.cpp
@@ -74,6 +74,7 @@ bool QAndroidPlatformOpenGLContext::needsFBOReadBackWorkaroud()
needsWorkaround =
qstrcmp(rendererString, "Mali-400 MP") == 0
|| qstrcmp(rendererString, "Adreno (TM) 200") == 0
+ || qstrcmp(rendererString, "Adreno (TM) 205") == 0
|| qstrcmp(rendererString, "GC1000 core") == 0;
set = true;
}
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.cpp b/src/plugins/platforms/android/qandroidplatformscreen.cpp
index e67a039ff4..af184cde02 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.cpp
+++ b/src/plugins/platforms/android/qandroidplatformscreen.cpp
@@ -86,7 +86,8 @@ private:
QAndroidPlatformScreen::QAndroidPlatformScreen():QObject(),QPlatformScreen()
{
- m_geometry = QRect(0, 0, QAndroidPlatformIntegration::m_defaultGeometryWidth, QAndroidPlatformIntegration::m_defaultGeometryHeight);
+ m_availableGeometry = QRect(0, 0, QAndroidPlatformIntegration::m_defaultGeometryWidth, QAndroidPlatformIntegration::m_defaultGeometryHeight);
+ m_size = QSize(QAndroidPlatformIntegration::m_defaultScreenWidth, QAndroidPlatformIntegration::m_defaultScreenHeight);
// Raster only apps should set QT_ANDROID_RASTER_IMAGE_DEPTH to 16
// is way much faster than 32
if (qgetenv("QT_ANDROID_RASTER_IMAGE_DEPTH").toInt() == 16) {
@@ -204,7 +205,7 @@ void QAndroidPlatformScreen::scheduleUpdate()
void QAndroidPlatformScreen::setDirty(const QRect &rect)
{
- QRect intersection = rect.intersected(m_geometry);
+ QRect intersection = rect.intersected(m_availableGeometry);
m_dirtyRect |= intersection;
scheduleUpdate();
}
@@ -214,15 +215,21 @@ void QAndroidPlatformScreen::setPhysicalSize(const QSize &size)
m_physicalSize = size;
}
-void QAndroidPlatformScreen::setGeometry(const QRect &rect)
+void QAndroidPlatformScreen::setSize(const QSize &size)
+{
+ m_size = size;
+ QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry());
+}
+
+void QAndroidPlatformScreen::setAvailableGeometry(const QRect &rect)
{
QMutexLocker lock(&m_surfaceMutex);
- if (m_geometry == rect)
+ if (m_availableGeometry == rect)
return;
- QRect oldGeometry = m_geometry;
+ QRect oldGeometry = m_availableGeometry;
- m_geometry = rect;
+ m_availableGeometry = rect;
QWindowSystemInterface::handleScreenGeometryChange(QPlatformScreen::screen(), geometry());
QWindowSystemInterface::handleScreenAvailableGeometryChange(QPlatformScreen::screen(), availableGeometry());
resizeMaximizedWindows();
@@ -231,9 +238,11 @@ void QAndroidPlatformScreen::setGeometry(const QRect &rect)
QList<QWindow *> windows = QGuiApplication::allWindows();
for (int i = 0; i < windows.size(); ++i) {
QWindow *w = windows.at(i);
- QRect geometry = w->handle()->geometry();
- if (geometry.width() > 0 && geometry.height() > 0)
- QWindowSystemInterface::handleExposeEvent(w, QRegion(geometry));
+ if (w->handle()) {
+ QRect geometry = w->handle()->geometry();
+ if (geometry.width() > 0 && geometry.height() > 0)
+ QWindowSystemInterface::handleExposeEvent(w, QRegion(geometry));
+ }
}
}
@@ -271,7 +280,7 @@ void QAndroidPlatformScreen::doRedraw()
QMutexLocker lock(&m_surfaceMutex);
if (m_id == -1 && m_rasterSurfaces) {
- m_id = QtAndroid::createSurface(this, m_geometry, true, m_depth);
+ m_id = QtAndroid::createSurface(this, m_availableGeometry, true, m_depth);
m_surfaceWaitCondition.wait(&m_surfaceMutex);
}
diff --git a/src/plugins/platforms/android/qandroidplatformscreen.h b/src/plugins/platforms/android/qandroidplatformscreen.h
index 96a91fbf06..cd9cf2ca71 100644
--- a/src/plugins/platforms/android/qandroidplatformscreen.h
+++ b/src/plugins/platforms/android/qandroidplatformscreen.h
@@ -66,7 +66,8 @@ public:
QAndroidPlatformScreen();
~QAndroidPlatformScreen();
- QRect geometry() const { return m_geometry; }
+ QRect geometry() const { return QRect(QPoint(), m_size); }
+ QRect availableGeometry() const { return m_availableGeometry; }
int depth() const { return m_depth; }
QImage::Format format() const { return m_format; }
QSizeF physicalSize() const { return m_physicalSize; }
@@ -87,7 +88,8 @@ public:
public slots:
void setDirty(const QRect &rect);
void setPhysicalSize(const QSize &size);
- void setGeometry(const QRect &rect);
+ void setAvailableGeometry(const QRect &rect);
+ void setSize(const QSize &size);
protected:
typedef QList<QAndroidPlatformWindow *> WindowStackType;
@@ -95,7 +97,7 @@ protected:
QRect m_dirtyRect;
QTimer m_redrawTimer;
- QRect m_geometry;
+ QRect m_availableGeometry;
int m_depth;
QImage::Format m_format;
QSizeF m_physicalSize;
@@ -114,6 +116,7 @@ private:
QAtomicInt m_rasterSurfaces = 0;
ANativeWindow* m_nativeSurface = nullptr;
QWaitCondition m_surfaceWaitCondition;
+ QSize m_size;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformservices.cpp b/src/plugins/platforms/android/qandroidplatformservices.cpp
index 0df882f1f0..02fe29e576 100644
--- a/src/plugins/platforms/android/qandroidplatformservices.cpp
+++ b/src/plugins/platforms/android/qandroidplatformservices.cpp
@@ -44,6 +44,8 @@
#include <QDir>
#include <QDebug>
+QT_BEGIN_NAMESPACE
+
QAndroidPlatformServices::QAndroidPlatformServices()
{
QtAndroid::AttachedJNIEnv env;
@@ -77,3 +79,5 @@ QByteArray QAndroidPlatformServices::desktopEnvironment() const
{
return QByteArray("Android");
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformservices.h b/src/plugins/platforms/android/qandroidplatformservices.h
index 8368b19043..08d7773ca4 100644
--- a/src/plugins/platforms/android/qandroidplatformservices.h
+++ b/src/plugins/platforms/android/qandroidplatformservices.h
@@ -46,6 +46,8 @@
#include "androidjnimain.h"
#include <jni.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformServices: public QPlatformServices
{
public:
@@ -58,4 +60,6 @@ private:
};
+QT_END_NAMESPACE
+
#endif // ANDROIDPLATFORMDESKTOPSERVICE_H
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp
index 94e58eaeb6..1c9be189c8 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.cpp
+++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp
@@ -50,6 +50,8 @@
#include <private/qguiapplication_p.h>
#include <qandroidplatformintegration.h>
+QT_BEGIN_NAMESPACE
+
QAndroidPlatformTheme::QAndroidPlatformTheme(QAndroidPlatformNativeInterface *androidPlatformNativeInterface)
{
m_androidPlatformNativeInterface = androidPlatformNativeInterface;
@@ -240,3 +242,5 @@ QPlatformDialogHelper *QAndroidPlatformTheme::createPlatformDialogHelper(QPlatfo
return 0;
}
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.h b/src/plugins/platforms/android/qandroidplatformtheme.h
index fecd7ca8e9..c37c9986c6 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.h
+++ b/src/plugins/platforms/android/qandroidplatformtheme.h
@@ -45,6 +45,8 @@
#include <qpa/qplatformtheme.h>
#include <QtGui/qpalette.h>
+QT_BEGIN_NAMESPACE
+
class QAndroidPlatformNativeInterface;
class QAndroidPlatformTheme: public QPlatformTheme
{
@@ -66,4 +68,6 @@ private:
QPalette m_defaultPalette;
};
+QT_END_NAMESPACE
+
#endif // QANDROIDPLATFORMTHEME_H