summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/wayland/qwaylandintegration.cpp
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-10-07 14:54:39 (GMT)
committerJørgen Lind <jorgen.lind@nokia.com>2011-01-25 17:50:19 (GMT)
commit3c2bb14b11f590f425281184ae6a1dadb98d6326 (patch)
tree3f3d30e3d2f8823c19374dc0d5735dba4a438253 /src/plugins/platforms/wayland/qwaylandintegration.cpp
parent6c5ea196ff086b92687033208f15e36591dc70f6 (diff)
downloadQt-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.cpp164
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);
}
}