diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2017-03-16 13:59:20 +0100 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2017-03-23 13:37:00 +0000 |
commit | 1e1785c8d2b077c34a8ca1d4f93e5a75b269eac8 (patch) | |
tree | a4264362c3ef1b070da05ab46edab612d53501dc /src/compositor/wayland_wrapper | |
parent | dfcda81c5b13ad15517a37bcc45f3bf5f550466c (diff) |
Clean up draganddrop and clipboard features
Don't assume that no-draganddrop implies no-clipboard. Introduce
a new private feature wayland-datadevice which contains the
common functionality. This feature cannot be controlled independently,
but is automatically disabled when both clipboard and draganddrop are
disabled.
Change-Id: I6aac09c7ee524e3b11f0a1caa4a6c62fc3f1d10f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Diffstat (limited to 'src/compositor/wayland_wrapper')
-rw-r--r-- | src/compositor/wayland_wrapper/qwldatadevice.cpp | 33 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwldatadevice_p.h | 14 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwldatadevicemanager_p.h | 3 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwldataoffer_p.h | 3 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwldatasource_p.h | 3 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/wayland_wrapper.pri | 22 |
6 files changed, 55 insertions, 23 deletions
diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp index 0d196b82e..3787edf58 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice.cpp +++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp @@ -41,7 +41,9 @@ #include "qwaylandsurface_p.h" #include "qwldatadevicemanager_p.h" +#if QT_CONFIG(draganddrop) #include "qwaylanddrag.h" +#endif #include "qwaylandview.h" #include <QtWaylandCompositor/QWaylandClient> #include <QtWaylandCompositor/private/qwaylandcompositor_p.h> @@ -60,12 +62,14 @@ DataDevice::DataDevice(QWaylandSeat *seat) , m_compositor(seat->compositor()) , m_seat(seat) , m_selectionSource(0) +#if QT_CONFIG(draganddrop) , m_dragClient(0) , m_dragDataSource(0) , m_dragFocus(0) , m_dragFocusResource(0) , m_dragIcon(0) , m_dragOrigin(nullptr) +#endif { } @@ -85,6 +89,13 @@ void DataDevice::setFocus(QWaylandClient *focusClient) } } +void DataDevice::sourceDestroyed(DataSource *source) +{ + if (m_selectionSource == source) + m_selectionSource = 0; +} + +#if QT_CONFIG(draganddrop) void DataDevice::setDragFocus(QWaylandSurface *focus, const QPointF &localPosition) { if (m_dragFocusResource) { @@ -129,12 +140,6 @@ QWaylandSurface *DataDevice::dragOrigin() const return m_dragOrigin; } -void DataDevice::sourceDestroyed(DataSource *source) -{ - if (m_selectionSource == source) - m_selectionSource = 0; -} - void DataDevice::dragMove(QWaylandSurface *target, const QPointF &pos) { if (target != m_dragFocus) @@ -177,6 +182,15 @@ void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource //### need to verify that we have an implicit grab with this serial } +void DataDevice::setDragIcon(QWaylandSurface *icon) +{ + if (icon == m_dragIcon) + return; + m_dragIcon = icon; + Q_EMIT m_seat->drag()->iconChanged(); +} +#endif // QT_CONFIG(draganddrop) + void DataDevice::data_device_set_selection(Resource *, struct ::wl_resource *source, uint32_t serial) { Q_UNUSED(serial); @@ -202,13 +216,6 @@ void DataDevice::data_device_set_selection(Resource *, struct ::wl_resource *sou } } -void DataDevice::setDragIcon(QWaylandSurface *icon) -{ - if (icon == m_dragIcon) - return; - m_dragIcon = icon; - Q_EMIT m_seat->drag()->iconChanged(); -} } diff --git a/src/compositor/wayland_wrapper/qwldatadevice_p.h b/src/compositor/wayland_wrapper/qwldatadevice_p.h index 57a9c0a80..5c37058df 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice_p.h +++ b/src/compositor/wayland_wrapper/qwldatadevice_p.h @@ -49,8 +49,11 @@ // #include <QtWaylandCompositor/private/qwayland-server-wayland.h> +#include <QtWaylandCompositor/private/qtwaylandcompositorglobal_p.h> #include <QtWaylandCompositor/QWaylandSeat> +QT_REQUIRE_CONFIG(wayland_datadevice); + QT_BEGIN_NAMESPACE namespace QtWayland { @@ -66,30 +69,36 @@ public: DataDevice(QWaylandSeat *seat); void setFocus(QWaylandClient *client); + void sourceDestroyed(DataSource *source); +#if QT_CONFIG(draganddrop) void setDragFocus(QWaylandSurface *focus, const QPointF &localPosition); QWaylandSurface *dragIcon() const; QWaylandSurface *dragOrigin() const; - void sourceDestroyed(DataSource *source); - void dragMove(QWaylandSurface *target, const QPointF &pos); void drop(); void cancelDrag(); +#endif protected: +#if QT_CONFIG(draganddrop) void data_device_start_drag(Resource *resource, struct ::wl_resource *source, struct ::wl_resource *origin, struct ::wl_resource *icon, uint32_t serial) override; +#endif void data_device_set_selection(Resource *resource, struct ::wl_resource *source, uint32_t serial) override; private: +#if QT_CONFIG(draganddrop) void setDragIcon(QWaylandSurface *icon); +#endif QWaylandCompositor *m_compositor; QWaylandSeat *m_seat; DataSource *m_selectionSource; +#if QT_CONFIG(draganddrop) struct ::wl_client *m_dragClient; DataSource *m_dragDataSource; @@ -98,6 +107,7 @@ private: QWaylandSurface *m_dragIcon; QWaylandSurface *m_dragOrigin; +#endif }; } diff --git a/src/compositor/wayland_wrapper/qwldatadevicemanager_p.h b/src/compositor/wayland_wrapper/qwldatadevicemanager_p.h index 483731dfd..39037b7a5 100644 --- a/src/compositor/wayland_wrapper/qwldatadevicemanager_p.h +++ b/src/compositor/wayland_wrapper/qwldatadevicemanager_p.h @@ -56,6 +56,9 @@ #include <QtWaylandCompositor/QWaylandCompositor> #include <QtWaylandCompositor/private/qwayland-server-wayland.h> +#include <QtWaylandCompositor/private/qtwaylandcompositorglobal_p.h> + +QT_REQUIRE_CONFIG(wayland_datadevice); QT_BEGIN_NAMESPACE diff --git a/src/compositor/wayland_wrapper/qwldataoffer_p.h b/src/compositor/wayland_wrapper/qwldataoffer_p.h index dc1c84fe0..bb0990824 100644 --- a/src/compositor/wayland_wrapper/qwldataoffer_p.h +++ b/src/compositor/wayland_wrapper/qwldataoffer_p.h @@ -50,6 +50,9 @@ #include <QPointer> #include <QtWaylandCompositor/private/qwayland-server-wayland.h> +#include <QtWaylandCompositor/private/qtwaylandcompositorglobal_p.h> + +QT_REQUIRE_CONFIG(wayland_datadevice); QT_BEGIN_NAMESPACE diff --git a/src/compositor/wayland_wrapper/qwldatasource_p.h b/src/compositor/wayland_wrapper/qwldatasource_p.h index b548a2411..d59e01e08 100644 --- a/src/compositor/wayland_wrapper/qwldatasource_p.h +++ b/src/compositor/wayland_wrapper/qwldatasource_p.h @@ -49,9 +49,12 @@ // #include <QtWaylandCompositor/private/qwayland-server-wayland.h> +#include <QtWaylandCompositor/private/qtwaylandcompositorglobal_p.h> #include <QObject> #include <QtCore/QList> +QT_REQUIRE_CONFIG(wayland_datadevice); + QT_BEGIN_NAMESPACE namespace QtWayland { diff --git a/src/compositor/wayland_wrapper/wayland_wrapper.pri b/src/compositor/wayland_wrapper/wayland_wrapper.pri index 48e55e513..8698e597b 100644 --- a/src/compositor/wayland_wrapper/wayland_wrapper.pri +++ b/src/compositor/wayland_wrapper/wayland_wrapper.pri @@ -5,23 +5,29 @@ WAYLANDSERVERSOURCES += \ HEADERS += \ wayland_wrapper/qwlbuffermanager_p.h \ wayland_wrapper/qwlclientbuffer_p.h \ - wayland_wrapper/qwldatadevice_p.h \ - wayland_wrapper/qwldatadevicemanager_p.h \ - wayland_wrapper/qwldataoffer_p.h \ - wayland_wrapper/qwldatasource_p.h \ wayland_wrapper/qwlregion_p.h \ ../shared/qwaylandxkb_p.h \ SOURCES += \ wayland_wrapper/qwlbuffermanager.cpp \ wayland_wrapper/qwlclientbuffer.cpp \ - wayland_wrapper/qwldatadevice.cpp \ - wayland_wrapper/qwldatadevicemanager.cpp \ - wayland_wrapper/qwldataoffer.cpp \ - wayland_wrapper/qwldatasource.cpp \ wayland_wrapper/qwlregion.cpp \ ../shared/qwaylandxkb.cpp \ +qtConfig(wayland-datadevice) { + HEADERS += \ + wayland_wrapper/qwldatadevice_p.h \ + wayland_wrapper/qwldatadevicemanager_p.h \ + wayland_wrapper/qwldataoffer_p.h \ + wayland_wrapper/qwldatasource_p.h + + SOURCES += \ + wayland_wrapper/qwldatadevice.cpp \ + wayland_wrapper/qwldatadevicemanager.cpp \ + wayland_wrapper/qwldataoffer.cpp \ + wayland_wrapper/qwldatasource.cpp +} + INCLUDEPATH += wayland_wrapper qtConfig(xkbcommon-evdev): \ |