From c81ac99d82a0f50e8b97d404cb57870cc30131f5 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Tue, 31 Jan 2023 21:37:32 +0000 Subject: [PATCH] foreign: fix initial leave/enter event bug Create foreign-toplevel-handle after initial view positioning to ensure leave/enter events are sent to the correct output. Fixes: #744 --- src/xdg.c | 7 ++++++- src/xwayland.c | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/xdg.c b/src/xdg.c index 0f5e8b52..f7203339 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -344,7 +344,6 @@ xdg_toplevel_view_map(struct view *view) if (!view->been_mapped) { struct wlr_xdg_toplevel_requested *requested = &xdg_toplevel_from_view(view)->requested; - foreign_toplevel_handle_create(view); view_set_decorations(view, has_ssd(view)); position_xdg_toplevel_view(view); @@ -357,6 +356,12 @@ xdg_toplevel_view_map(struct view *view) } view_moved(view); + + /* + * Create toplevel handle after initial positioning to ensure + * enter event is sent to the right output + */ + foreign_toplevel_handle_create(view); view->been_mapped = true; } diff --git a/src/xwayland.c b/src/xwayland.c index bc0f2379..06a6e1d4 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -491,10 +491,6 @@ map(struct view *view) view->scene_node = &tree->node; } - if (!view->toplevel_handle) { - foreign_toplevel_handle_create(view); - } - if (!view->been_mapped) { view_set_decorations(view, want_deco(xwayland_surface)); @@ -506,6 +502,10 @@ map(struct view *view) view->been_mapped = true; } + if (!view->toplevel_handle) { + foreign_toplevel_handle_create(view); + } + if (view->ssd_enabled && !view->fullscreen && !view->maximized) { top_left_edge_boundary_check(view); }