diff options
Diffstat (limited to 'src/plugins')
4 files changed, 44 insertions, 0 deletions
diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index e068a43241..11f0bc5ffe 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -401,6 +401,28 @@ namespace QtAndroid surfaceId); } + void bringChildToFront(int surfaceId) + { + if (surfaceId == -1) + return; + + QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, + "bringChildToFront", + "(I)V", + surfaceId); + } + + void bringChildToBack(int surfaceId) + { + if (surfaceId == -1) + return; + + QJNIObjectPrivate::callStaticMethod<void>(m_applicationClass, + "bringChildToBack", + "(I)V", + surfaceId); + } + bool blockEventLoopsWhenSuspended() { static bool block = qgetenv("QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED").toInt(); diff --git a/src/plugins/platforms/android/androidjnimain.h b/src/plugins/platforms/android/androidjnimain.h index 7f762c8108..01330ce283 100644 --- a/src/plugins/platforms/android/androidjnimain.h +++ b/src/plugins/platforms/android/androidjnimain.h @@ -64,6 +64,8 @@ namespace QtAndroid int insertNativeView(jobject view, const QRect &geometry); void setSurfaceGeometry(int surfaceId, const QRect &geometry); void destroySurface(int surfaceId); + void bringChildToFront(int surfaceId); + void bringChildToBack(int surfaceId); QWindow *topLevelWindowAt(const QPoint &globalPos); int desktopWidthPixels(); diff --git a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp index af409d13a0..31c3614284 100644 --- a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp @@ -53,6 +53,24 @@ QAndroidPlatformForeignWindow::~QAndroidPlatformForeignWindow() QtAndroid::destroySurface(m_surfaceId); } +void QAndroidPlatformForeignWindow::lower() +{ + if (m_surfaceId == -1) + return; + + QAndroidPlatformWindow::lower(); + QtAndroid::bringChildToBack(m_surfaceId); +} + +void QAndroidPlatformForeignWindow::raise() +{ + if (m_surfaceId == -1) + return; + + QAndroidPlatformWindow::raise(); + QtAndroid::bringChildToFront(m_surfaceId); +} + void QAndroidPlatformForeignWindow::setGeometry(const QRect &rect) { QWindow *parent = window()->parent(); diff --git a/src/plugins/platforms/android/qandroidplatformforeignwindow.h b/src/plugins/platforms/android/qandroidplatformforeignwindow.h index 974ffbc376..df11c78b7c 100644 --- a/src/plugins/platforms/android/qandroidplatformforeignwindow.h +++ b/src/plugins/platforms/android/qandroidplatformforeignwindow.h @@ -45,6 +45,8 @@ class QAndroidPlatformForeignWindow : public QAndroidPlatformWindow public: explicit QAndroidPlatformForeignWindow(QWindow *window); ~QAndroidPlatformForeignWindow(); + void lower() Q_DECL_OVERRIDE; + void raise() Q_DECL_OVERRIDE; void setGeometry(const QRect &rect) Q_DECL_OVERRIDE; void setVisible(bool visible) Q_DECL_OVERRIDE; void applicationStateChanged(Qt::ApplicationState state) Q_DECL_OVERRIDE; |