diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2010-10-07 14:54:39 (GMT) |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2011-01-25 17:50:19 (GMT) |
commit | 3c2bb14b11f590f425281184ae6a1dadb98d6326 (patch) | |
tree | 3f3d30e3d2f8823c19374dc0d5735dba4a438253 /src/plugins/platforms/wayland/qwaylandintegration.cpp | |
parent | 6c5ea196ff086b92687033208f15e36591dc70f6 (diff) | |
download | Qt-3c2bb14b11f590f425281184ae6a1dadb98d6326.zip Qt-3c2bb14b11f590f425281184ae6a1dadb98d6326.tar.gz Qt-3c2bb14b11f590f425281184ae6a1dadb98d6326.tar.bz2 |
wayland: Split input device out to its own file
Diffstat (limited to 'src/plugins/platforms/wayland/qwaylandintegration.cpp')
-rw-r--r-- | src/plugins/platforms/wayland/qwaylandintegration.cpp | 164 |
1 files changed, 2 insertions, 162 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandintegration.cpp b/src/plugins/platforms/wayland/qwaylandintegration.cpp index 577dd28..c93ff25 100644 --- a/src/plugins/platforms/wayland/qwaylandintegration.cpp +++ b/src/plugins/platforms/wayland/qwaylandintegration.cpp @@ -74,167 +74,6 @@ const struct wl_output_listener QWaylandDisplay::outputListener = { QWaylandDisplay::outputHandleGeometry }; -class QWaylandInputDevice { -public: - QWaylandInputDevice(struct wl_display *display, uint32_t id); - -private: - struct wl_display *mDisplay; - struct wl_input_device *mInputDevice; - struct wl_surface *mPointerFocus; - struct wl_surface *mKeyboardFocus; - static const struct wl_input_device_listener inputDeviceListener; - Qt::MouseButtons mButtons; - QPoint mSurfacePos; - QPoint mGlobalPos; - - 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); -}; - -QWaylandInputDevice::QWaylandInputDevice(struct wl_display *display, - uint32_t id) - : mDisplay(display) - , mInputDevice(wl_input_device_create(display, id)) - , mPointerFocus(NULL) - , mKeyboardFocus(NULL) - , mButtons(0) -{ - wl_input_device_add_listener(mInputDevice, - &inputDeviceListener, - this); - wl_input_device_set_user_data(mInputDevice, this); -} - -void QWaylandInputDevice::inputHandleMotion(void *data, - struct wl_input_device *input_device, - uint32_t time, - int32_t x, int32_t y, - int32_t surface_x, int32_t surface_y) -{ - QWaylandInputDevice *inputDevice = (QWaylandInputDevice *) data; - QWaylandWindow *window = - (QWaylandWindow *) wl_surface_get_user_data(inputDevice->mPointerFocus); - - inputDevice->mSurfacePos = QPoint(surface_x, surface_y); - inputDevice->mGlobalPos = QPoint(x, y); - QWindowSystemInterface::handleMouseEvent(window->widget(), - time, - inputDevice->mSurfacePos, - inputDevice->mGlobalPos, - inputDevice->mButtons); -} - -void QWaylandInputDevice::inputHandleButton(void *data, - struct wl_input_device *input_device, - uint32_t time, uint32_t button, uint32_t state) -{ - QWaylandInputDevice *inputDevice = (QWaylandInputDevice *) data; - QWaylandWindow *window = - (QWaylandWindow *) wl_surface_get_user_data(inputDevice->mPointerFocus); - Qt::MouseButton qt_button; - - switch (button) { - case 272: - qt_button = Qt::LeftButton; - break; - case 273: - qt_button = Qt::RightButton; - break; - case 274: - qt_button = Qt::MidButton; - break; - default: - return; - } - - if (state) - inputDevice->mButtons |= qt_button; - else - inputDevice->mButtons &= ~qt_button; - - QWindowSystemInterface::handleMouseEvent(window->widget(), - time, - inputDevice->mSurfacePos, - inputDevice->mGlobalPos, - inputDevice->mButtons); -} - -void QWaylandInputDevice::inputHandleKey(void *data, - struct wl_input_device *input_device, - uint32_t time, uint32_t key, uint32_t state) -{ -} - -void QWaylandInputDevice::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) -{ - QWaylandInputDevice *inputDevice = (QWaylandInputDevice *) data; - QWaylandWindow *window; - - if (inputDevice->mPointerFocus) { - window = (QWaylandWindow *) - wl_surface_get_user_data(inputDevice->mPointerFocus); - QWindowSystemInterface::handleLeaveEvent(window->widget()); - inputDevice->mPointerFocus = NULL; - } - - if (surface) { - window = (QWaylandWindow *) wl_surface_get_user_data(surface); - QWindowSystemInterface::handleEnterEvent(window->widget()); - inputDevice->mPointerFocus = surface; - } -} - -void QWaylandInputDevice::inputHandleKeyboardFocus(void *data, - struct wl_input_device *input_device, - uint32_t time, - struct wl_surface *surface, - struct wl_array *keys) -{ - QWaylandInputDevice *inputDevice = (QWaylandInputDevice *) data; - QWaylandWindow *window; - - if (inputDevice->mKeyboardFocus) { - window = (QWaylandWindow *) - wl_surface_get_user_data(inputDevice->mKeyboardFocus); - inputDevice->mKeyboardFocus = NULL; - } - - if (surface) { - window = (QWaylandWindow *) wl_surface_get_user_data(surface); - inputDevice->mKeyboardFocus = surface; - } -} - -const struct wl_input_device_listener QWaylandInputDevice::inputDeviceListener = { - QWaylandInputDevice::inputHandleMotion, - QWaylandInputDevice::inputHandleButton, - QWaylandInputDevice::inputHandleKey, - QWaylandInputDevice::inputHandlePointerFocus, - QWaylandInputDevice::inputHandleKeyboardFocus, -}; - void QWaylandDisplay::displayHandleGlobal(struct wl_display *display, uint32_t id, const char *interface, @@ -254,7 +93,8 @@ void QWaylandDisplay::displayHandleGlobal(struct wl_display *display, struct wl_output *output = wl_output_create(display, id); wl_output_add_listener(output, &outputListener, qwd); } else if (strcmp(interface, "input_device") == 0) { - QWaylandInputDevice *inputDevice = new QWaylandInputDevice(display, id); + QWaylandInputDevice *inputDevice = + waylandInputDeviceCreate(display, id); qwd->mInputDevices.append(inputDevice); } } |