summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/wlcompositor.cpp
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2012-01-11 09:35:39 +0100
committerLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-01-11 11:07:24 +0100
commit8894f58e01b51e9b2072973edbe043ebe62858b4 (patch)
tree1a449793f14256d228b0ea0251e289a9013f13de /src/compositor/wayland_wrapper/wlcompositor.cpp
parentbf850bd6ea971a44a0af8e6940edb3ba419da962 (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.cpp46
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)