summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandseat.h
diff options
context:
space:
mode:
authorJohan Klokkhammer Helsing <johan.helsing@qt.io>2016-08-09 14:04:32 +0200
committerJohan Helsing <johan.helsing@qt.io>2016-08-11 07:53:36 +0000
commit5b222098649674042ca721583abcbee22ea60930 (patch)
tree6430046f63ebcf988829df79dc11c55815cae8b6 /src/compositor/compositor_api/qwaylandseat.h
parent00dd433430b7c2849642aefcd3d826dd4b9bf28f (diff)
Compositor API: rename QWaylandInputDevice to QWaylandSeat
The name QWaylandInputDevice could be confusing and misleading: - A QWaylandInputDevice was not one input device, but a collection of many. - Classes that sounded like they should inherit from it did not, i.e: QWaylandKeyboard, QWaylandPointer and QWaylandTouch. - The Wayland protocol already has another term for this, which is seat. Change-Id: I9d9690d5b378075d9dddaeb8cf18395c7f47603e Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandseat.h')
-rw-r--r--src/compositor/compositor_api/qwaylandseat.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandseat.h b/src/compositor/compositor_api/qwaylandseat.h
new file mode 100644
index 000000000..bfd6e4041
--- /dev/null
+++ b/src/compositor/compositor_api/qwaylandseat.h
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the QtWaylandCompositor module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QWAYLANDSEAT_H
+#define QWAYLANDSEAT_H
+
+#include <QtCore/qnamespace.h>
+#include <QtCore/QPoint>
+#include <QtCore/QString>
+
+#include <QtWaylandCompositor/qwaylandexport.h>
+#include <QtWaylandCompositor/qwaylandcompositorextension.h>
+#include <QtWaylandCompositor/qwaylandkeyboard.h>
+
+QT_BEGIN_NAMESPACE
+
+class QWaylandCompositor;
+class QWaylandSurface;
+class QKeyEvent;
+class QTouchEvent;
+class QWaylandView;
+class QInputEvent;
+class QWaylandSeatPrivate;
+class QWaylandDrag;
+class QWaylandKeyboard;
+class QWaylandPointer;
+class QWaylandTouch;
+
+class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandSeat : public QWaylandObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QWaylandSeat)
+
+ Q_PROPERTY(QWaylandDrag *drag READ drag CONSTANT)
+public:
+ enum CapabilityFlag {
+ // The order should match the enum WL_SEAT_CAPABILITY_*
+ Pointer = 0x01,
+ Keyboard = 0x02,
+ Touch = 0x04,
+
+ DefaultCapabilities = Pointer | Keyboard | Touch
+ };
+ Q_DECLARE_FLAGS(CapabilityFlags, CapabilityFlag)
+ Q_ENUM(CapabilityFlags)
+
+ QWaylandSeat(QWaylandCompositor *compositor, CapabilityFlags capabilityFlags = DefaultCapabilities);
+ virtual ~QWaylandSeat();
+
+ void sendMousePressEvent(Qt::MouseButton button);
+ void sendMouseReleaseEvent(Qt::MouseButton button);
+ void sendMouseMoveEvent(QWaylandView *surface , const QPointF &localPos, const QPointF &outputSpacePos = QPointF());
+ void sendMouseWheelEvent(Qt::Orientation orientation, int delta);
+
+ void sendKeyPressEvent(uint code);
+ void sendKeyReleaseEvent(uint code);
+
+ void sendFullKeyEvent(QKeyEvent *event);
+ void sendFullKeyEvent(QWaylandSurface *surface, QKeyEvent *event);
+
+ void sendTouchPointEvent(int id, const QPointF &point, Qt::TouchPointState state);
+ void sendTouchFrameEvent();
+ void sendTouchCancelEvent();
+
+ void sendFullTouchEvent(QTouchEvent *event);
+
+ QWaylandPointer *pointer() const;
+ //Normally set by the mouse device,
+ //But can be set manually for use with touch or can reset unset the current mouse focus;
+ QWaylandView *mouseFocus() const;
+ void setMouseFocus(QWaylandView *view);
+
+ QWaylandKeyboard *keyboard() const;
+ QWaylandSurface *keyboardFocus() const;
+ bool setKeyboardFocus(QWaylandSurface *surface);
+ void setKeymap(const QWaylandKeymap &keymap);
+
+ QWaylandTouch *touch() const;
+
+ QWaylandCompositor *compositor() const;
+
+ QWaylandDrag *drag() const;
+
+ QWaylandSeat::CapabilityFlags capabilities() const;
+
+ virtual bool isOwner(QInputEvent *inputEvent) const;
+
+ static QWaylandSeat *fromSeatResource(struct ::wl_resource *resource);
+
+Q_SIGNALS:
+ void mouseFocusChanged(QWaylandView *newFocus, QWaylandView *oldFocus);
+ void keyboardFocusChanged(QWaylandSurface *newFocus, QWaylandSurface *oldFocus);
+ void cursorSurfaceRequest(QWaylandSurface *surface, int hotspotX, int hotspotY);
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QWaylandSeat::CapabilityFlags)
+
+QT_END_NAMESPACE
+
+#endif // QWAYLANDSEAT_H