diff --git a/src/backend/wayland/wl_xwayland.c b/src/backend/wayland/wl_xwayland.c index 1655721..9a7a204 100644 --- a/src/backend/wayland/wl_xwayland.c +++ b/src/backend/wayland/wl_xwayland.c @@ -14,6 +14,7 @@ #include #include #include "../../screen.h" +#include "../../application.h" #include "window.h" #include "wl_types.h" #include @@ -196,7 +197,14 @@ handle_xwayland_unmap(struct wl_listener *listener, void *data) WObjDescriptor *desc = wm_backend->context_find(view->id, WM_CTX_CLIENT_WIN); if (desc && desc->parent_type == WCLASS_WINDOW) { WWindow *wwin = (WWindow *)desc->parent; + WNativeWindow main_win = wwin->main_window; wUnmanageWindow(wwin, False, True); + WApplication *app = wApplicationOf(main_win); + if (app) { + if (main_win == app->main_window) + app->refcount = 0; + wApplicationDestroy(app); + } } } }