Suppress QWindowSystemInterface inclusion warnings.
[profile/ivi/qtwayland.git] / src / plugins / platforms / wayland / qwaylandinputdevice.h
index f47194d..1408263 100644 (file)
@@ -1,8 +1,7 @@
 /****************************************************************************
 **
 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
 **
 ** This file is part of the plugins of the Qt Toolkit.
 **
@@ -35,6 +34,7 @@
 **
 **
 **
+**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
 
 #include <QSocketNotifier>
 #include <QObject>
-#include <QtGui/QPlatformIntegration>
-#include <QtGui/QPlatformScreen>
-#include <QWindowSystemInterface>
+#include <qpa/qplatformintegration.h>
+#include <qpa/qplatformscreen.h>
+#include <qpa/qwindowsysteminterface.h>
 
 #include <wayland-client.h>
 
+#ifndef QT_NO_WAYLAND_XKB
+struct xkb_context;
+struct xkb_keymap;
+struct xkb_state;
+#endif
+
 QT_BEGIN_NAMESPACE
 
 class QWaylandWindow;
@@ -60,79 +66,140 @@ class QWaylandDisplay;
 class QWaylandInputDevice {
 public:
     QWaylandInputDevice(QWaylandDisplay *display, uint32_t id);
-    void attach(QWaylandBuffer *buffer, int x, int y);
+    ~QWaylandInputDevice();
+
+    uint32_t capabilities() const { return mCaps; }
+
+    struct wl_seat *wl_seat() const { return mSeat; }
+
+    void setCursor(wl_surface *surface, int x, int y);
     void handleWindowDestroyed(QWaylandWindow *window);
-    struct wl_input_device *wl_input_device() const { return mInputDevice; }
-    QWaylandWindow *pointerFocus() const { return mPointerFocus; }
 
     void setTransferDevice(struct wl_data_device *device);
     struct wl_data_device *transferDevice() const;
 
+    void removeMouseButtonFromState(Qt::MouseButton button);
+
 private:
     QWaylandDisplay *mQDisplay;
     struct wl_display *mDisplay;
-    struct wl_input_device *mInputDevice;
+
+    struct wl_seat *mSeat;
+    uint32_t mCaps;
+
+    struct {
+        struct wl_pointer *pointer;
+        struct wl_keyboard *keyboard;
+        struct wl_touch *touch;
+    } mDeviceInterfaces;
+
     struct wl_data_device *mTransferDevice;
     QWaylandWindow *mPointerFocus;
     QWaylandWindow *mKeyboardFocus;
     QWaylandWindow *mTouchFocus;
-    static const struct wl_input_device_listener inputDeviceListener;
+
     Qt::MouseButtons mButtons;
-    QPoint mSurfacePos;
-    QPoint mGlobalPos;
-    struct xkb_desc *mXkb;
-    Qt::KeyboardModifiers mModifiers;
+    QPointF mSurfacePos;
+    QPointF mGlobalPos;
     uint32_t mTime;
 
-    static void inputHandleMotion(void *data,
-                                 struct wl_input_device *input_device,
-                                 uint32_t time,
-                                 int32_t x, int32_t y,
-                                 int32_t sx, int32_t sy);
-    static void inputHandleButton(void *data,
-                                 struct wl_input_device *input_device,
-                                 uint32_t time, uint32_t button, uint32_t state);
-    static void inputHandleKey(void *data,
-                              struct wl_input_device *input_device,
-                              uint32_t time, uint32_t key, uint32_t state);
-    static void inputHandlePointerFocus(void *data,
-                                       struct wl_input_device *input_device,
-                                       uint32_t time, struct wl_surface *surface,
-                                       int32_t x, int32_t y, int32_t sx, int32_t sy);
-    static void inputHandleKeyboardFocus(void *data,
-                                        struct wl_input_device *input_device,
-                                        uint32_t time,
-                                        struct wl_surface *surface,
-                                        struct wl_array *keys);
-    static void inputHandleTouchDown(void *data,
-                                     struct wl_input_device *wl_input_device,
-                                     uint32_t time,
-                                     struct wl_surface *surface,
-                                     int id,
-                                     int x,
-                                     int y);
-    static void inputHandleTouchUp(void *data,
-                                   struct wl_input_device *wl_input_device,
-                                   uint32_t time,
-                                   int id);
-    static void inputHandleTouchMotion(void *data,
-                                       struct wl_input_device *wl_input_device,
-                                       uint32_t time,
-                                       int id,
-                                       int x,
-                                       int y);
-    static void inputHandleTouchFrame(void *data,
-                                      struct wl_input_device *wl_input_device);
-    static void inputHandleTouchCancel(void *data,
-                                       struct wl_input_device *wl_input_device);
-
-    void handleTouchPoint(int id, int x, int y, Qt::TouchPointState state);
+    static const struct wl_seat_listener seatListener;
+
+    static void seat_capabilities(void *data,
+                                  struct wl_seat *seat,
+                                  uint32_t caps);
+
+    static const struct wl_pointer_listener pointerListener;
+
+    static void pointer_enter(void *data,
+                              struct wl_pointer *pointer,
+                              uint32_t time, struct wl_surface *surface,
+                              wl_fixed_t sx, wl_fixed_t sy);
+    static void pointer_leave(void *data,
+                              struct wl_pointer *pointer,
+                              uint32_t time, struct wl_surface *surface);
+    static void pointer_motion(void *data,
+                               struct wl_pointer *pointer,
+                               uint32_t time,
+                               wl_fixed_t sx, wl_fixed_t sy);
+    static void pointer_button(void *data,
+                               struct wl_pointer *pointer,
+                               uint32_t serial, uint32_t time,
+                               uint32_t button, uint32_t state);
+    static void pointer_axis(void *data,
+                             struct wl_pointer *pointer,
+                             uint32_t time,
+                             uint32_t axis,
+                             wl_fixed_t value);
+
+    static const struct wl_keyboard_listener keyboardListener;
+
+    static void keyboard_keymap(void *data,
+                                struct wl_keyboard *keyboard,
+                                uint32_t format,
+                                int32_t fd,
+                                uint32_t size);
+    static void keyboard_enter(void *data,
+                               struct wl_keyboard *keyboard,
+                               uint32_t time,
+                               struct wl_surface *surface,
+                               struct wl_array *keys);
+    static void keyboard_leave(void *data,
+                               struct wl_keyboard *keyboard,
+                               uint32_t time,
+                               struct wl_surface *surface);
+    static void keyboard_key(void *data,
+                             struct wl_keyboard *keyboard,
+                             uint32_t serial, uint32_t time,
+                             uint32_t key, uint32_t state);
+    static void keyboard_modifiers(void *data,
+                                   struct wl_keyboard *keyboard,
+                                   uint32_t serial,
+                                   uint32_t mods_depressed,
+                                   uint32_t mods_latched,
+                                   uint32_t mods_locked,
+                                   uint32_t group);
+
+    static const struct wl_touch_listener touchListener;
+
+    static void touch_down(void *data,
+                           struct wl_touch *touch,
+                           uint32_t serial,
+                           uint32_t time,
+                           struct wl_surface *surface,
+                           int32_t id,
+                           wl_fixed_t x,
+                           wl_fixed_t y);
+    static void touch_up(void *data,
+                         struct wl_touch *touch,
+                         uint32_t serial,
+                         uint32_t time,
+                         int32_t id);
+    static void touch_motion(void *data,
+                             struct wl_touch *touch,
+                             uint32_t time,
+                             int32_t id,
+                             wl_fixed_t x,
+                             wl_fixed_t y);
+    static void touch_frame(void *data,
+                            struct wl_touch *touch);
+    static void touch_cancel(void *data,
+                             struct wl_touch *touch);
+
+    void handleTouchPoint(int id, double x, double y, Qt::TouchPointState state);
     void handleTouchFrame();
     QList<QWindowSystemInterface::TouchPoint> mTouchPoints;
     QList<QWindowSystemInterface::TouchPoint> mPrevTouchPoints;
     QTouchDevice *mTouchDevice;
 
+#ifndef QT_NO_WAYLAND_XKB
+    xkb_context *mXkbContext;
+    xkb_keymap *mXkbMap;
+    xkb_state *mXkbState;
+#endif
+
     friend class QWaylandTouchExtension;
+    friend class QWaylandQtKeyExtension;
 };
 
 QT_END_NAMESPACE