diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-05-08 09:08:58 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-08-28 13:09:42 +0200 |
commit | 0dcca22ab39096b60446225f51689df06a6f98e9 (patch) | |
tree | aa5fb76cbaba548d362a861acc73a91e5cfcf436 /src | |
parent | 5a72fce03ee0046ffc67229f788332259e233492 (diff) |
Make it possible to subclass QWayland(Pointer|Keyboard|Touch)
by having factory functions on QWaylandCompositor and use them from
QWaylandInputDevicePrivate
Change-Id: Id5e0413ca1fb40e2f7eba571dda361b2809fe313
Diffstat (limited to 'src')
-rw-r--r-- | src/compositor/compositor_api/qwaylandcompositor.h | 7 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwlcompositor_p.h | 1 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwlinputdevice.cpp | 6 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/compositor/compositor_api/qwaylandcompositor.h b/src/compositor/compositor_api/qwaylandcompositor.h index a7026f3d0..e2990a6a1 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.h +++ b/src/compositor/compositor_api/qwaylandcompositor.h @@ -159,6 +159,10 @@ public: QWaylandInputDevice *inputDeviceFor(QInputEvent *inputEvent); + virtual QWaylandPointer *createPointerDevice(QWaylandInputDevice *inputDevice); + virtual QWaylandKeyboard *createKeyboardDevice(QWaylandInputDevice *inputDevice); + virtual QWaylandTouch *createTouchDevice(QWaylandInputDevice *inputDevice); + Q_SIGNALS: void surfaceCreated(QWaylandSurface *surface); void surfaceAboutToBeDestroyed(QWaylandSurface *surface); @@ -179,9 +183,6 @@ protected: virtual QWaylandSurface *createSurface(QWaylandClient *client, quint32 id, int version); virtual QWaylandSurfaceView *createView(); virtual QWaylandInputDevice *createInputDevice(); - virtual QWaylandPointer *createPointerDevice(QWaylandInputDevice *inputDevice); - virtual QWaylandKeyboard *createKeyboardDevice(QWaylandInputDevice *inputDevice); - virtual QWaylandTouch *createTouchDevice(QWaylandInputDevice *inputDevice); friend class QtWayland::Compositor; friend class QWaylandOutputSpacePrivate; diff --git a/src/compositor/wayland_wrapper/qwlcompositor_p.h b/src/compositor/wayland_wrapper/qwlcompositor_p.h index 13ae861be..f6e0e0024 100644 --- a/src/compositor/wayland_wrapper/qwlcompositor_p.h +++ b/src/compositor/wayland_wrapper/qwlcompositor_p.h @@ -149,6 +149,7 @@ public Q_SLOTS: protected: void compositor_create_surface(Resource *resource, uint32_t id) Q_DECL_OVERRIDE; void compositor_create_region(Resource *resource, uint32_t id) Q_DECL_OVERRIDE; + private Q_SLOTS: void processWaylandEvents(); diff --git a/src/compositor/wayland_wrapper/qwlinputdevice.cpp b/src/compositor/wayland_wrapper/qwlinputdevice.cpp index 643677521..74c90f8f5 100644 --- a/src/compositor/wayland_wrapper/qwlinputdevice.cpp +++ b/src/compositor/wayland_wrapper/qwlinputdevice.cpp @@ -110,15 +110,15 @@ void QWaylandInputDevicePrivate::setCapabilities(QWaylandInputDevice::Capability QWaylandInputDevice::CapabilityFlags changed = caps ^ m_capabilities; if (changed & QWaylandInputDevice::Pointer) { - m_pointer.reset(m_pointer.isNull() ? new QWaylandPointer(q) : 0); + m_pointer.reset(m_pointer.isNull() ? compositor()->createPointerDevice(q) : 0); } if (changed & QWaylandInputDevice::Keyboard) { - m_keyboard.reset(m_keyboard.isNull() ? new QWaylandKeyboard(q) : 0); + m_keyboard.reset(m_keyboard.isNull() ? compositor()->createKeyboardDevice(q) : 0); } if (changed & QWaylandInputDevice::Touch) { - m_touch.reset(m_touch.isNull() ? new QWaylandTouch(q) : 0); + m_touch.reset(m_touch.isNull() ? compositor()->createTouchDevice(q) : 0); } m_capabilities = caps; |