diff options
Diffstat (limited to 'src/plugins/platforms/wayland/qwaylandinputdevice.h')
-rw-r--r-- | src/plugins/platforms/wayland/qwaylandinputdevice.h | 146 |
1 files changed, 86 insertions, 60 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandinputdevice.h b/src/plugins/platforms/wayland/qwaylandinputdevice.h index 0146af9bd..f6eb66ca0 100644 --- a/src/plugins/platforms/wayland/qwaylandinputdevice.h +++ b/src/plugins/platforms/wayland/qwaylandinputdevice.h @@ -67,87 +67,113 @@ class QWaylandInputDevice { public: QWaylandInputDevice(QWaylandDisplay *display, uint32_t id); ~QWaylandInputDevice(); + + uint32_t capabilities() const { return mCaps; } + + struct wl_seat *wl_seat() const { return mSeat; } + void attach(QWaylandBuffer *buffer, 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; QPointF mSurfacePos; QPointF mGlobalPos; Qt::KeyboardModifiers mModifiers; uint32_t mTime; - static void inputHandleMotion(void *data, - struct wl_input_device *input_device, - uint32_t time, - wl_fixed_t sx, wl_fixed_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, - wl_fixed_t sx, wl_fixed_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, - int32_t id, - wl_fixed_t x, - wl_fixed_t y); - static void inputHandleTouchUp(void *data, - struct wl_input_device *wl_input_device, - uint32_t serial, - uint32_t time, - int32_t id); - static void inputHandleTouchMotion(void *data, - struct wl_input_device *wl_input_device, - uint32_t time, - int32_t id, - wl_fixed_t x, - wl_fixed_t 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); + uint32_t button, uint32_t state); + static void pointer_axis(void *data, + struct wl_pointer *pointer, + uint32_t time, + uint32_t axis, + int32_t value); + + static const struct wl_keyboard_listener keyboardListener; + + 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 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(); |