diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2012-01-11 09:35:39 +0100 |
---|---|---|
committer | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-01-11 11:07:24 +0100 |
commit | 8894f58e01b51e9b2072973edbe043ebe62858b4 (patch) | |
tree | 1a449793f14256d228b0ea0251e289a9013f13de /src/compositor/wayland_wrapper/wlcompositor.cpp | |
parent | bf850bd6ea971a44a0af8e6940edb3ba419da962 (diff) |
Move event handling into WaylandInput api
Qt only gives us 1 input device as of now, ie. the mouse/keyboard and
touch events. However, at some point in the future, this will change, so
that the events will have a device id. This will ie on x map to the same
device, but on evdev this can be different devices.
Also this is part of what is needed to implement grabbing
Change-Id: Ice049502d6f0f53fd06142d4dedde05806d60120
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper/wlcompositor.cpp')
-rw-r--r-- | src/compositor/wayland_wrapper/wlcompositor.cpp | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/src/compositor/wayland_wrapper/wlcompositor.cpp b/src/compositor/wayland_wrapper/wlcompositor.cpp index 806a5f7d3..5b762f533 100644 --- a/src/compositor/wayland_wrapper/wlcompositor.cpp +++ b/src/compositor/wayland_wrapper/wlcompositor.cpp @@ -40,10 +40,10 @@ #include "wlcompositor.h" +#include "waylandinput.h" #include "wldisplay.h" #include "wlshmbuffer.h" #include "wlsurface.h" -#include "wlinputdevice.h" #include "waylandcompositor.h" #include "wldatadevicemanager.h" #include "wldatadevice.h" @@ -103,6 +103,7 @@ Compositor *Compositor::instance() Compositor::Compositor(WaylandCompositor *qt_compositor) : m_display(new Display) , m_shm(m_display) + , m_default_input_device(0) , m_current_frame(0) , m_last_queued_buf(-1) , m_qt_compositor(qt_compositor) @@ -130,8 +131,6 @@ Compositor::Compositor(WaylandCompositor *qt_compositor) m_data_device_manager = new DataDeviceManager(this); - m_input = new InputDevice(this); - wl_display_add_global(m_display->handle(),&wl_output_interface, &m_output_global,OutputGlobal::output_bind_func); wl_display_add_global(m_display->handle(), &wl_shell_interface, &m_shell, Shell::bind_func); @@ -157,7 +156,7 @@ Compositor::Compositor(WaylandCompositor *qt_compositor) Compositor::~Compositor() { - delete m_input; + delete m_default_input_device; delete m_data_device_manager; delete m_display; @@ -268,37 +267,6 @@ void Compositor::destroyClientForSurface(Surface *surface) } } -void Compositor::setInputFocus(Surface *surface) -{ - setKeyFocus(surface); - setPointerFocus(surface); -} - -void Compositor::setKeyFocus(Surface *surface) -{ - m_input->sendSelectionFocus(surface); - wl_input_device_set_keyboard_focus(m_input->base(), surface ? surface->base() : 0, currentTimeMsecs()); -} - -Surface *Compositor::keyFocus() const -{ - return wayland_cast<Surface *>(m_input->base()->keyboard_focus); -} - -void Compositor::setPointerFocus(Surface *surface, const QPoint &globalPos, const QPoint &localPos) -{ - wl_input_device_set_pointer_focus(m_input->base(), - surface ? surface->base() : 0, - currentTimeMsecs(), - globalPos.x(), globalPos.y(), - localPos.x(), localPos.y()); -} - -Surface *Compositor::pointerFocus() const -{ - return wayland_cast<Surface *>(m_input->base()->pointer_focus); -} - QWindow *Compositor::window() const { return m_qt_compositor->window(); @@ -321,6 +289,12 @@ void Compositor::initializeHardwareIntegration() #endif } +void Compositor::initializeDefaultInputDevice() +{ + WaylandInputDevice *defaultInput = new WaylandInputDevice(m_qt_compositor); + m_default_input_device = defaultInput->handle(); +} + void Compositor::initializeWindowManagerProtocol() { m_windowManagerIntegration->initialize(m_display); @@ -384,7 +358,7 @@ void Compositor::setOutputGeometry(const QRect &geometry) InputDevice* Compositor::defaultInputDevice() { - return m_input; + return m_default_input_device; } QList<Wayland::Surface *> Compositor::surfacesForClient(wl_client *client) |