summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@theqtcompany.com>2015-09-03 12:18:51 +0200
committerJørgen Lind <jorgen.lind@theqtcompany.com>2015-09-04 16:12:47 +0200
commit81b320503251cb79e5500fbf7906586e0da01803 (patch)
treed7c5ea957111b4f27d9d1c879a2d94c72eeb5e21
parentc4f2c0479fd992183ce04347111c5968dfd961bc (diff)
Move the curser surface signal to QWaylandInputDevice
-rw-r--r--examples/wayland/pure-qml/qml/Screen.qml2
-rw-r--r--examples/wayland/qwindow-compositor/qwindowcompositor.cpp2
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor.h3
-rw-r--r--src/compositor/compositor_api/qwaylandinput.h2
-rw-r--r--src/compositor/compositor_api/qwaylandpointer.cpp9
-rw-r--r--src/imports/compositor/WaylandCursorItem.qml10
-rw-r--r--src/imports/compositor/qwaylandquickcompositorplugin.cpp3
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");