]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xwayland: handle unmanaged override-redirect requests
authorJohan Malm <jgm323@gmail.com>
Mon, 17 Apr 2023 16:05:13 +0000 (17:05 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Wed, 19 Apr 2023 13:30:54 +0000 (14:30 +0100)
Fixes: issue #874
src/xwayland-unmanaged.c

index 57870b099b73c0edfabcf2bf66f3bacd279ef9b9..39b221c09768ea1497327ee62e577812be0dfc01 100644 (file)
@@ -133,7 +133,26 @@ unmanaged_handle_destroy(struct wl_listener *listener, void *data)
 static void
 unmanaged_handle_override_redirect(struct wl_listener *listener, void *data)
 {
-       wlr_log(WLR_DEBUG, "override_redirect not handled\n");
+       wlr_log(WLR_DEBUG, "handle unmanaged override_redirect");
+       struct xwayland_unmanaged *unmanaged =
+               wl_container_of(listener, unmanaged, override_redirect);
+       struct wlr_xwayland_surface *xsurface = unmanaged->xwayland_surface;
+       struct server *server = unmanaged->server;
+
+       bool mapped = xsurface->mapped;
+       if (mapped) {
+               unmanaged_handle_unmap(&unmanaged->unmap, NULL);
+       }
+       unmanaged_handle_destroy(&unmanaged->destroy, NULL);
+       xsurface->data = NULL;
+
+       struct xwayland_view *xwayland_view = xwayland_view_create(server, xsurface);
+       if (mapped) {
+               struct view *view = &xwayland_view->base;
+               if (view->impl->map) {
+                       view->impl->map(view);
+               }
+       }
 }
 
 static void