Expose the mouse focus functions from Wayland::Compositor
authorJørgen Lind <jorgen.lind@nokia.com>
Tue, 10 Jan 2012 07:09:58 +0000 (08:09 +0100)
committerSamuel Rødal <samuel.rodal@nokia.com>
Tue, 10 Jan 2012 14:56:45 +0000 (15:56 +0100)
For Compositors to handle mouse focus handling, ie enter/leave. This
calls down into wayland-server which keeps track of which surface holds
the focus. Trivial implementation in compositor would be to call
this function for all mouseMove events. I believe overhead should not be
significant.

Change-Id: I8fdd5115cc512562c1a8d8b90c28f8ef2d5b53c9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
src/compositor/compositor_api/waylandcompositor.cpp
src/compositor/compositor_api/waylandcompositor.h

index 73ddf23..6246ff3 100644 (file)
@@ -94,6 +94,18 @@ WaylandSurface *WaylandCompositor::inputFocus() const
     return surfaceImpl ? surfaceImpl->handle() : 0;
 }
 
+void WaylandCompositor::setMouseFocus(WaylandSurface *surface)
+{
+    Wayland::Surface *surfaceImpl = surface? surface->handle() : 0;
+    m_compositor->setPointerFocus(surfaceImpl);
+}
+
+WaylandSurface *WaylandCompositor::mouseFocus() const
+{
+    Wayland::Surface *surfaceImpl = m_compositor->pointerFocus();
+    return surfaceImpl ? surfaceImpl->handle() : 0;
+}
+
 void WaylandCompositor::destroyClientForSurface(WaylandSurface *surface)
 {
     m_compositor->destroyClientForSurface(surface->handle());
index b384585..7cf88b0 100644 (file)
@@ -65,6 +65,10 @@ public:
 
     void setInputFocus(WaylandSurface *surface);
     WaylandSurface *inputFocus() const;
+
+    void setMouseFocus(WaylandSurface *surface);
+    WaylandSurface *mouseFocus() const;
+
     void destroyClientForSurface(WaylandSurface *surface);
 
     void setDirectRenderSurface(WaylandSurface *surface);