diff options
author | Johan Klokkhammer Helsing <johan.helsing@qt.io> | 2016-08-09 14:04:32 +0200 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2016-08-11 07:53:36 +0000 |
commit | 5b222098649674042ca721583abcbee22ea60930 (patch) | |
tree | 6430046f63ebcf988829df79dc11c55815cae8b6 /src/compositor/compositor_api/qwaylandseat.h | |
parent | 00dd433430b7c2849642aefcd3d826dd4b9bf28f (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.h | 133 |
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 |