summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-07-13 23:52:13 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-07-15 17:26:26 +0200
commit1ef305de158498ba58063b19a02e40c9f6348857 (patch)
treed23dee327d950eb5bda9b6e908c50fb64dae4fff /src/gui
parent149b5425d8a4fe809fcabddda09859116e29c2ff (diff)
Improve error reporting when requesting unsupported native interface
By switching out the static_assert for an enable_if we end up producing a clearer error, at the call site: /qt/qtbase/examples/gui/rasterwindow/main.cpp:69:9: error: no matching member function for call to 'nativeInterface' app.nativeInterface<QNativeInterface::QCocoaGLContext>(); ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /qt/qtbase/src/gui/kernel/qguiapplication.h:176:5: note: candidate template ignored: requirement 'NativeInterface<QNativeInterface::QCocoaGLContext>::isCompatibleWith<QGuiApplication>' was not satisfied [with NativeInterface = QNativeInterface::QCocoaGLContext, TypeInfo = QNativeInterface::Private::NativeInterface<QNativeInterface::QCocoaGLContext>, BaseType = QGuiApplication] QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QGuiApplication) ^ By using SFINAE for the TypeInfo we can also ensure that it works for types that are not native interfaces, such as if the user tries to call nativeInterface<QString>(). Since we can no longer use decltype(*this) to resolve the base type we need to change QT_DECLARE_NATIVE_INTERFACE_ACCESSOR to take the type as an argument, as we do for other QT_DECLARE_FOO macros. Pick-to: 6.2 Change-Id: Ie3f7e01ab7c3eb3dcc2ef730834f268bb9e81e0c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qguiapplication.h2
-rw-r--r--src/gui/kernel/qkeymapper_p.h2
-rw-r--r--src/gui/kernel/qoffscreensurface.h2
-rw-r--r--src/gui/kernel/qopenglcontext.h2
-rw-r--r--src/gui/kernel/qscreen.h2
-rw-r--r--src/gui/kernel/qwindow.h2
6 files changed, 6 insertions, 6 deletions
diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h
index ba3d464bc8..795a88f2b0 100644
--- a/src/gui/kernel/qguiapplication.h
+++ b/src/gui/kernel/qguiapplication.h
@@ -173,7 +173,7 @@ public:
bool isSavingSession() const;
#endif
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QGuiApplication)
static void sync();
Q_SIGNALS:
diff --git a/src/gui/kernel/qkeymapper_p.h b/src/gui/kernel/qkeymapper_p.h
index 9f061a9eb7..0297a69e28 100644
--- a/src/gui/kernel/qkeymapper_p.h
+++ b/src/gui/kernel/qkeymapper_p.h
@@ -73,7 +73,7 @@ public:
static void changeKeyboard();
static QList<int> possibleKeys(QKeyEvent *e);
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QKeyMapper)
private:
friend QKeyMapperPrivate *qt_keymapper_private();
diff --git a/src/gui/kernel/qoffscreensurface.h b/src/gui/kernel/qoffscreensurface.h
index e63c85cb72..6ed063b8c9 100644
--- a/src/gui/kernel/qoffscreensurface.h
+++ b/src/gui/kernel/qoffscreensurface.h
@@ -80,7 +80,7 @@ public:
QPlatformOffscreenSurface *handle() const;
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QOffscreenSurface)
Q_SIGNALS:
void screenChanged(QScreen *screen);
diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h
index 4d8c568ed5..b258fe0b7b 100644
--- a/src/gui/kernel/qopenglcontext.h
+++ b/src/gui/kernel/qopenglcontext.h
@@ -154,7 +154,7 @@ public:
static bool supportsThreadedOpenGL();
static QOpenGLContext *globalShareContext();
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QOpenGLContext)
Q_SIGNALS:
void aboutToBeDestroyed();
diff --git a/src/gui/kernel/qscreen.h b/src/gui/kernel/qscreen.h
index 33778786e5..8c2f0cf10f 100644
--- a/src/gui/kernel/qscreen.h
+++ b/src/gui/kernel/qscreen.h
@@ -153,7 +153,7 @@ public:
qreal refreshRate() const;
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QScreen)
Q_SIGNALS:
void geometryChanged(const QRect &geometry);
diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h
index d20694f625..102a324366 100644
--- a/src/gui/kernel/qwindow.h
+++ b/src/gui/kernel/qwindow.h
@@ -289,7 +289,7 @@ public:
QVulkanInstance *vulkanInstance() const;
#endif
- QT_DECLARE_NATIVE_INTERFACE_ACCESSOR
+ QT_DECLARE_NATIVE_INTERFACE_ACCESSOR(QWindow)
public Q_SLOTS:
Q_REVISION(2, 1) void requestActivate();