summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel
diff options
context:
space:
mode:
authorDavid Redondo <qt@david-redondo.de>2022-10-11 16:16:39 +0200
committerDavid Redondo <qt@david-redondo.de>2022-10-25 12:52:05 +0200
commitbb18767af181447bcbaf2d6dd51c94880a4eebce (patch)
treeee194121dea5e19c60eff0d809c097a13c5e683d /src/gui/kernel
parent3b9330cd405a0b4c75f1a8bcd836e184fdf38e06 (diff)
Add QNativeInterface::QWaylandApplication
This exposes the same objects that were ere available through QPlatformNativeInterface except egldisplay for which we may find a better place. [ChangeLog][QtWaylandClient][QGuiApplication] Add QNativeInterface::QWaylandApplication that allows to access central native wayland objects. Task-number: QTBUG-94729 Change-Id: I8611522a4c9bddec3afbb5f183ffa68565f61f68 Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Diffstat (limited to 'src/gui/kernel')
-rw-r--r--src/gui/kernel/qguiapplication.cpp3
-rw-r--r--src/gui/kernel/qguiapplication_platform.h24
2 files changed, 27 insertions, 0 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index b6a505375f..960bc81a57 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -4282,6 +4282,9 @@ void *QGuiApplication::resolveInterface(const char *name, int revision) const
#if QT_CONFIG(xcb)
QT_NATIVE_INTERFACE_RETURN_IF(QX11Application, platformNativeInterface());
#endif
+#if defined(Q_OS_UNIX)
+ QT_NATIVE_INTERFACE_RETURN_IF(QWaylandApplication, platformNativeInterface());
+#endif
return QCoreApplication::resolveInterface(name, revision);
}
diff --git a/src/gui/kernel/qguiapplication_platform.h b/src/gui/kernel/qguiapplication_platform.h
index 24ee166ac0..b6182e42a3 100644
--- a/src/gui/kernel/qguiapplication_platform.h
+++ b/src/gui/kernel/qguiapplication_platform.h
@@ -23,6 +23,15 @@ typedef struct _XDisplay Display;
struct xcb_connection_t;
#endif
+#if defined(Q_OS_UNIX)
+struct wl_display;
+struct wl_compositor;
+struct wl_seat;
+struct wl_keyboard;
+struct wl_pointer;
+struct wl_touch;
+#endif
+
QT_BEGIN_NAMESPACE
namespace QNativeInterface
@@ -37,6 +46,21 @@ struct Q_GUI_EXPORT QX11Application
};
#endif
+#if defined(Q_OS_UNIX) || defined(Q_CLANG_QDOC)
+struct Q_GUI_EXPORT QWaylandApplication
+{
+ QT_DECLARE_NATIVE_INTERFACE(QWaylandApplication, 1, QGuiApplication)
+ virtual wl_display *display() const = 0;
+ virtual wl_compositor *compositor() const = 0;
+ virtual wl_seat *seat() const = 0;
+ virtual wl_keyboard *keyboard() const = 0;
+ virtual wl_pointer *pointer() const = 0;
+ virtual wl_touch *touch() const = 0;
+ virtual uint lastInputSerial() const = 0;
+ virtual wl_seat *lastInputSeat() const = 0;
+};
+#endif
+
} // QNativeInterface
QT_END_NAMESPACE