diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-09-03 12:18:51 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-09-04 16:12:47 +0200 |
commit | 81b320503251cb79e5500fbf7906586e0da01803 (patch) | |
tree | d7c5ea957111b4f27d9d1c879a2d94c72eeb5e21 | |
parent | c4f2c0479fd992183ce04347111c5968dfd961bc (diff) |
Move the curser surface signal to QWaylandInputDevice
Change-Id: Ib2b1ee81a5216e348e6014927c1cc818f848384b
7 files changed, 14 insertions, 17 deletions
diff --git a/examples/wayland/pure-qml/qml/Screen.qml b/examples/wayland/pure-qml/qml/Screen.qml index f29c3ee2f..1faaa2cce 100644 --- a/examples/wayland/pure-qml/qml/Screen.qml +++ b/examples/wayland/pure-qml/qml/Screen.qml @@ -70,7 +70,7 @@ Window { x: mouseTracker.mouseX - hotspotX y: mouseTracker.mouseY - hotspotY - compositor: screen.compositor + inputDevice: output.compositor.defaultInputDevice } } } diff --git a/examples/wayland/qwindow-compositor/qwindowcompositor.cpp b/examples/wayland/qwindow-compositor/qwindowcompositor.cpp index 36b5d6816..8c97f1d55 100644 --- a/examples/wayland/qwindow-compositor/qwindowcompositor.cpp +++ b/examples/wayland/qwindow-compositor/qwindowcompositor.cpp @@ -152,7 +152,7 @@ void QWindowCompositor::create() m_renderScheduler.setSingleShot(true); connect(&m_renderScheduler, &QTimer::timeout, this, &QWindowCompositor::render); connect(this, &QWaylandCompositor::surfaceCreated, this, &QWindowCompositor::onSurfaceCreated); - connect(this, &QWaylandCompositor::currentCurserSurfaceRequest, this, &QWindowCompositor::adjustCursorSurface); + connect(defaultInputDevice(), &QWaylandInputDevice::cursorSurfaceRequest, this, &QWindowCompositor::adjustCursorSurface); m_window->installEventFilter(this); diff --git a/src/compositor/compositor_api/qwaylandcompositor.h b/src/compositor/compositor_api/qwaylandcompositor.h index 0d967a290..a1118b421 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.h +++ b/src/compositor/compositor_api/qwaylandcompositor.h @@ -75,6 +75,7 @@ class Q_COMPOSITOR_EXPORT QWaylandCompositor : public QObject, public QWaylandEx Q_PROPERTY(QWaylandOutputSpace *primaryOutputSpace READ primaryOutputSpace WRITE setPrimaryOutputSpace NOTIFY primaryOutputSpaceChanged) Q_PROPERTY(QWaylandOutput *primaryOutput READ primaryOutput NOTIFY primaryOutputChanged) Q_PROPERTY(bool useHardwareIntegrationExtension READ useHardwareIntegrationExtension WRITE setUseHardwareIntegrationExtension NOTIFY useHardwareIntegrationExtensionChanged) + Q_PROPERTY(QWaylandInputDevice *defaultInputDevice READ defaultInputDevice CONSTANT) public: QWaylandCompositor(QObject *parent = 0); @@ -132,8 +133,6 @@ Q_SIGNALS: void surfaceCreated(QWaylandSurface *surface); void surfaceAboutToBeDestroyed(QWaylandSurface *surface); - void currentCurserSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY); - void primaryOutputSpaceChanged(); void primaryOutputChanged(); void outputSpacesChanged(); diff --git a/src/compositor/compositor_api/qwaylandinput.h b/src/compositor/compositor_api/qwaylandinput.h index abeab0d9b..b28fcd0cd 100644 --- a/src/compositor/compositor_api/qwaylandinput.h +++ b/src/compositor/compositor_api/qwaylandinput.h @@ -124,8 +124,10 @@ public: virtual bool isOwner(QInputEvent *inputEvent) const; static QWaylandInputDevice *fromSeatResource(struct ::wl_resource *resource); + Q_SIGNALS: void mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus); + void cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QWaylandInputDevice::CapabilityFlags) diff --git a/src/compositor/compositor_api/qwaylandpointer.cpp b/src/compositor/compositor_api/qwaylandpointer.cpp index e64dbc995..f1a82ff88 100644 --- a/src/compositor/compositor_api/qwaylandpointer.cpp +++ b/src/compositor/compositor_api/qwaylandpointer.cpp @@ -68,24 +68,19 @@ void QWaylandPointerPrivate::pointer_release(wl_pointer::Resource *resource) wl_resource_destroy(resource->handle); } -static void requestCursorSurface(QWaylandCompositor *compositor, QWaylandSurface *surface, int32_t hotspot_x, int hotspot_y) -{ - compositor->currentCurserSurfaceRequest(surface, hotspot_x, hotspot_y); -} - void QWaylandPointerPrivate::pointer_set_cursor(wl_pointer::Resource *resource, uint32_t serial, wl_resource *surface, int32_t hotspot_x, int32_t hotspot_y) { Q_UNUSED(resource); Q_UNUSED(serial); if (!surface) { - requestCursorSurface(compositor(), Q_NULLPTR, 0, 0); + seat->cursorSurfaceRequest(Q_NULLPTR, 0, 0); return; } QWaylandSurface *s = QWaylandSurface::fromResource(surface); s->markAsCursorSurface(true); - requestCursorSurface(compositor(), s, hotspot_x, hotspot_y); + seat->cursorSurfaceRequest(s, hotspot_x, hotspot_y); } QWaylandPointerGrabber::~QWaylandPointerGrabber() diff --git a/src/imports/compositor/WaylandCursorItem.qml b/src/imports/compositor/WaylandCursorItem.qml index 2b480c066..1ebc6e401 100644 --- a/src/imports/compositor/WaylandCursorItem.qml +++ b/src/imports/compositor/WaylandCursorItem.qml @@ -36,19 +36,17 @@ import QtWayland.Compositor 1.0 WaylandQuickItem { id: cursorItem - property QtObject compositor + property QtObject inputDevice property int hotspotX: 0 property int hotspotY: 0 visible: cursorItem.surface != null inputEventsEnabled: false - Component.onCompleted: { - if (!compositor) { - console.warn("WaylandCursorItem initiated without compositor. This leads to undefined behavior"); + onInputDeviceChanged: { + if (!inputDevice) return; - } - compositor.currentCurserSurfaceRequest.connect(setCursorSurface); + inputDevice.cursorSurfaceRequest.connect(setCursorSurface); } function setCursorSurface(surface, hotspotX, hotspotY) { diff --git a/src/imports/compositor/qwaylandquickcompositorplugin.cpp b/src/imports/compositor/qwaylandquickcompositorplugin.cpp index e56fc6fba..4ab8385b1 100644 --- a/src/imports/compositor/qwaylandquickcompositorplugin.cpp +++ b/src/imports/compositor/qwaylandquickcompositorplugin.cpp @@ -47,6 +47,7 @@ #include <QtCompositor/QWaylandOutputSpace> #include <QtCompositor/QWaylandExtension> #include <QtCompositor/QWaylandQuickExtension> +#include <QtCompositor/QWaylandInputDevice> #include <QtCompositor/QWaylandShell> @@ -130,6 +131,8 @@ public: qmlRegisterUncreatableType<QWaylandOutput>(uri, 1, 0, "WaylandOutput", QObject::tr("Cannot create instance of WaylandOutput")); qmlRegisterUncreatableType<QWaylandOutputSpace>(uri, 1, 0, "WaylandOutputSpace", QObject::tr("Cannot create instance of WaylandOutputSpace")); qmlRegisterUncreatableType<QWaylandView>(uri, 1, 0, "WaylandView", QObject::tr("Cannot create instance of WaylandView, it can be retrieved by accessor on WaylandQuickItem")); + qmlRegisterUncreatableType<QWaylandInputDevice>(uri, 1, 0, "WaylandInputDevice", QObject::tr("Cannot create instance of WaylandInputDevice")); + qmlRegisterUncreatableType<QWaylandCompositor>(uri, 1, 0, "WaylandCompositorBase", QObject::tr("Cannot create instance of WaylandCompositorBase, use WaylandCompositor instead")); //This should probably be somewhere else qmlRegisterType<QWaylandShellQuickData>(uri, 1, 0, "DefaultShell"); |