mirror of
https://github.com/swaywm/sway.git
synced 2024-11-04 23:43:14 +00:00
Adhere to ICCCM focus specification
For certain applications (e.g. JetBrains) the parent window controls input. We need to adhere to the ICCCM input focus specification to properly handle these cases. Relates to swaywm/wlroots#2604
This commit is contained in:
parent
38571e6a0c
commit
62ec528c8c
|
@ -785,7 +785,18 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface,
|
||||||
|
|
||||||
view_execute_criteria(view);
|
view_execute_criteria(view);
|
||||||
|
|
||||||
if (should_focus(view)) {
|
bool set_focus = should_focus(view);
|
||||||
|
|
||||||
|
#if HAVE_XWAYLAND
|
||||||
|
if (wlr_surface_is_xwayland_surface(wlr_surface)) {
|
||||||
|
struct wlr_xwayland_surface *xsurface =
|
||||||
|
wlr_xwayland_surface_from_wlr_surface(wlr_surface);
|
||||||
|
set_focus = (wlr_xwayland_icccm_input_model(xsurface) !=
|
||||||
|
WLR_ICCCM_INPUT_MODEL_NONE) && set_focus;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (set_focus) {
|
||||||
input_manager_set_focus(&view->container->node);
|
input_manager_set_focus(&view->container->node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue