mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-30 00:15:58 +01:00
xwm: allow applications to change focus between their own surfaces
Although currently this problem is present in only Steam, and it is actually a client bug.
This commit is contained in:
parent
51f8c22f4d
commit
c067fbc010
1 changed files with 10 additions and 1 deletions
|
@ -1234,8 +1234,17 @@ static void xwm_handle_focus_in(struct wlr_xwm *xwm,
|
||||||
|
|
||||||
// Do not let X clients change the focus behind the compositor's
|
// Do not let X clients change the focus behind the compositor's
|
||||||
// back. Reset the focus to the old one if it changed.
|
// back. Reset the focus to the old one if it changed.
|
||||||
if (!xwm->focus_surface || ev->event != xwm->focus_surface->window_id) {
|
//
|
||||||
|
// Note: Some applications rely on being able to change focus, for ex. Steam:
|
||||||
|
// https://github.com/swaywm/sway/issues/1865
|
||||||
|
// Because of that, we allow changing focus between surfaces belonging to the
|
||||||
|
// same application.
|
||||||
|
struct wlr_xwayland_surface *requested_focus = lookup_surface(xwm, ev->event);
|
||||||
|
if (!xwm->focus_surface || !requested_focus ||
|
||||||
|
requested_focus->pid != xwm->focus_surface->pid) {
|
||||||
xwm_send_focus_window(xwm, xwm->focus_surface);
|
xwm_send_focus_window(xwm, xwm->focus_surface);
|
||||||
|
} else {
|
||||||
|
xwm->focus_surface = requested_focus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue