diff options
author | Tinja Paavoseppä <tinja.paavoseppa@qt.io> | 2023-10-10 09:40:06 +0300 |
---|---|---|
committer | Petri Virkkunen <petri.virkkunen@qt.io> | 2023-12-13 22:26:55 +0000 |
commit | 4376467169979ce6886d6f58944a2f50dcf77e51 (patch) | |
tree | b229d9824e10d9942ce9fae294ef7512664cc337 /src/plugins/platforms/android/qandroidplatformwindow.cpp | |
parent | 0a5a9c134ebc240a48d999d3cc3fd65d0c60c8a5 (diff) |
Android: Make winId() return the underlying QtWindow jobject
Previously, winId() returned a simple integer ID, incremented by one
for each window, instead of a handle to the underlying window.
Note, if constructing a QWindow with fromWinId(), the passed jobject
will not be the same one returned by winId(), as the passed jobject,
assumed to be a View, will be wrapped inside a QtWindow to ensure
child windows can be added to it if needed.
Pick-to: 6.7
Change-Id: I9d5d977eeb08d4cc3594f7339660fe94c3a55864
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformwindow.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformwindow.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp index 84a4eab389..6681f1d20d 100644 --- a/src/plugins/platforms/android/qandroidplatformwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp @@ -16,8 +16,6 @@ QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(lcQpaWindow, "qt.qpa.window") -Q_CONSTINIT static QBasicAtomicInt winIdGenerator = Q_BASIC_ATOMIC_INITIALIZER(0); - QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) : QPlatformWindow(window), m_nativeQtWindow(nullptr), m_nativeParentQtWindow(nullptr), m_androidSurfaceObject(nullptr) @@ -27,7 +25,6 @@ QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) // the surfaceType is overwritten in QAndroidPlatformOpenGLWindow ctor so let's save // the fact that it's a raster window for now m_isRaster = window->surfaceType() == QSurface::RasterSurface; - m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1; setWindowState(window->windowStates()); // the following is in relation to the virtual geometry @@ -174,6 +171,11 @@ void QAndroidPlatformWindow::setParent(const QPlatformWindow *window) } } +WId QAndroidPlatformWindow::winId() const +{ + return m_nativeQtWindow.isValid() ? reinterpret_cast<WId>(m_nativeQtWindow.object()) : 0L; +} + QAndroidPlatformScreen *QAndroidPlatformWindow::platformScreen() const { return static_cast<QAndroidPlatformScreen *>(window()->screen()->handle()); |