2 files changed, 12 insertions(+), 9 deletions(-)
M client.h
M dwl.c
M client.h => client.h +11 -0
@@ 231,6 231,17 @@ client_min_size(Client *c, int *width, int *height)
*height = state->min_height;
}
+static inline void
+client_restack_surface(Client *c)
+{
+#ifdef XWAYLAND
+ if (client_is_x11(c))
+ wlr_xwayland_surface_restack(c->surface.xwayland, NULL,
+ XCB_STACK_MODE_ABOVE);
+#endif
+ return;
+}
+
static inline Client *
client_from_wlr_surface(struct wlr_surface *s)
{
M dwl.c => dwl.c +1 -9
@@ 1129,6 1129,7 @@ focusclient(Client *c, int lift)
wl_list_insert(&fstack, &c->flink);
selmon = c->mon;
c->isurgent = 0;
+ client_restack_surface(c);
for (i = 0; i < 4; i++)
wlr_scene_rect_set_color(c->border[i], focuscolor);
@@ 1169,15 1170,6 @@ focusclient(Client *c, int lift)
return;
}
-#ifdef XWAYLAND
- /* This resolves an issue where the last spawned xwayland client
- * receives all pointer activity.
- */
- if (c->type == X11Managed)
- wlr_xwayland_surface_restack(c->surface.xwayland, NULL,
- XCB_STACK_MODE_ABOVE);
-#endif
-
/* Have a client, so focus its top-level wlr_surface */
kb = wlr_seat_get_keyboard(seat);
if (kb)