Hello,

I am writing a Wayland client that acts as an OSD "overlay" on top of
another application. This OSD overlay should not handle any pointer
events -- these should "pass through" and be handled by the
application below.

From the docs, wwl_surface::set_input_region looked promising:

> Input events happening outside of this region will try the next surface in 
> the server surface stack. The compositor ignores the parts of the input 
> region that fall outside of the surface. [...] The initial value for an input 
> region is infinite. That means the whole surface will accept input. Setting 
> the pending input region has copy semantics, and the wl_region object can be 
> destroyed immediately. A NULL wl_region causes the input region to be set to 
> infinite.

I am trying this:

        struct wl_region* region =
wl_compositor_create_region(_glfw.wl.compositor);
        wl_surface_set_input_region(window->wl.surface, region);
        wl_region_destroy(region);

However it doesn't seem to work -- pointer events do not seem to "pass through".

Same problem is also reported here: https://github.com/glfw/glfw/pull/1568

Is this approach correct? Any hints on how to debug this?

Best regards,

Guillermo Rodriguez Garcia
guille.rodrig...@gmail.com
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to