From: tokyo4j Date: Tue, 13 Aug 2024 01:01:49 +0000 (+0900) Subject: xwayland: sync foreign-toplevel and associated outputs on re-map X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=f31457392b392379aa0ae12ae7f13e854bbed7ed;p=proto%2Flabwc.git xwayland: sync foreign-toplevel and associated outputs on re-map Fixes a bug that `zwlr_foreign_toplevel_handle_v1::output_enter` is not sent when a xwayland surface is re-mapped (e.g. opening Slack desktop app when it's running in background). --- diff --git a/src/xwayland.c b/src/xwayland.c index 738c2b17..b98a02c2 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -738,15 +738,6 @@ xwayland_view_map(struct view *view) view->scene_node = &tree->node; } - /* - * Exclude unfocusable views from wlr-foreign-toplevel. These - * views (notifications, floating toolbars, etc.) should not be - * shown in taskbars/docks/etc. - */ - if (!view->toplevel.handle && view_is_focusable(view)) { - init_foreign_toplevel(view); - } - if (!view->been_mapped) { check_natural_geometry(view); set_initial_position(view, xwayland_surface); @@ -760,6 +751,16 @@ xwayland_view_map(struct view *view) view_moved(view); } + /* + * Exclude unfocusable views from wlr-foreign-toplevel. These + * views (notifications, floating toolbars, etc.) should not be + * shown in taskbars/docks/etc. + */ + if (!view->toplevel.handle && view_is_focusable(view)) { + init_foreign_toplevel(view); + foreign_toplevel_update_outputs(view); + } + /* Add commit here, as xwayland map/unmap can change the wlr_surface */ wl_signal_add(&xwayland_surface->surface->events.commit, &view->commit); view->commit.notify = handle_commit; @@ -797,7 +798,6 @@ xwayland_view_unmap(struct view *view, bool client_request) out: if (client_request && view->toplevel.handle) { wlr_foreign_toplevel_handle_v1_destroy(view->toplevel.handle); - view->toplevel.handle = NULL; } }