Suppress QWindowSystemInterface inclusion warnings.
[profile/ivi/qtwayland.git] / src / plugins / platforms / wayland / qwaylandinputdevice.h
index d29723f..1408263 100644 (file)
@@ -48,7 +48,7 @@
 #include <QObject>
 #include <qpa/qplatformintegration.h>
 #include <qpa/qplatformscreen.h>
-#include <QWindowSystemInterface>
+#include <qpa/qwindowsysteminterface.h>
 
 #include <wayland-client.h>
 
@@ -67,89 +67,126 @@ class QWaylandInputDevice {
 public:
     QWaylandInputDevice(QWaylandDisplay *display, uint32_t id);
     ~QWaylandInputDevice();
-    void attach(QWaylandBuffer *buffer, int x, int y);
+
+    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; }
 
     void setTransferDevice(struct wl_data_device *device);
     struct wl_data_device *transferDevice() const;
 
-    struct wl_input_device *handle() 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;
-    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 sx, int32_t sy);
-    static void inputHandleButton(void *data,
-                                 struct wl_input_device *input_device,
-                                  uint32_t serial, uint32_t time,
-                                  uint32_t button, uint32_t state);
-    static void inputHandleAxis(void *data,
-                                struct wl_input_device *wl_input_device,
-                                uint32_t time,
-                                uint32_t axis,
-                                int32_t value);
-    static void inputHandleKey(void *data,
-                              struct wl_input_device *input_device,
+    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 key, uint32_t state);
-    static void inputHandlePointerEnter(void *data,
-                                        struct wl_input_device *input_device,
-                                        uint32_t time, struct wl_surface *surface,
-                                        int32_t sx, int32_t sy);
-    static void inputHandlePointerLeave(void *data,
-                                        struct wl_input_device *input_device,
-                                        uint32_t time, struct wl_surface *surface);
-    static void inputHandleKeyboardEnter(void *data,
-                                         struct wl_input_device *input_device,
-                                         uint32_t time,
-                                         struct wl_surface *surface,
-                                         struct wl_array *keys);
-    static void inputHandleKeyboardLeave(void *data,
-                                         struct wl_input_device *input_device,
-                                         uint32_t time,
-                                         struct wl_surface *surface);
-    static void inputHandleTouchDown(void *data,
-                                     struct wl_input_device *wl_input_device,
-                                     uint32_t serial,
-                                     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 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 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);
+                                   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;