And don't activate clients while an overlay is focused.
YL6TMLW5YFLMKYPWGTNJHD5GQ2LR2Y7KC4N5U3Y4NBFQXZQ6NRZAC 3YASTKW6ARYFEDXJU2OH2O26NLG24ZKGELZNCRCPSMQ6KJ63OBUQC 65GPTMYLVOQPVAKNBCN5RHHZEL7USZYSJ4VJQO7LYBCS7BZM7BYAC 2OGQ2YPLFUBNUKVQSOI77GEKZGGPDVFPL2VKDHHX4LVOXWP4S5RQC DI5JM3QZKGN2RLH7PJLPDTQL3JLDYJGV6NHRNB23EZAV6IMJM23AC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC 5IGKKZ3URJE5EL5ZVCOKDTIBHRL7DTLKUJXIVYVJ4LRMKYARRNZAC 2FBILAASURBC6XQLU7Q4NOOTAZMWFFSIB66S4YHWJ5JHYEUAMJWQC VYZMMYEO3CEHLATYEHS7G6XBGEVOWDMAXHMHMINACSNF75TH72UAC 4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC FCEQONUYK6M5ZEWKBAPW6F64EURYKHBH4YIM4HVBSBKFRDD7YHRQC BI7H3J3BRWCCZEPPL3RBWEG5OKN25TCVVP3Z2CBIARI56FJS2GWQC LJJH53FPOX3RP5PCHNORRMTUSV4DXYYP2A47X6VDZ5KZI6T2DEOAC ZDQINUTDXQUS7OBW53UEYR6IN7DJLTPBOMRURGYQBGJ2FBROIQVAC 7ATQKTE47BQ5QI66Z5VS2BSPGBQFUN3ZJUDC6NLMH7WCZAH437HAC /* If an overlay is focused, don't focus or activate the client,* but only update its position in fstack to render its border with focuscolor* and focus it after the overlay is closed.* It's probably pointless to check if old is a layer surface* since it can't be anything else at this point. */else if (wlr_surface_is_layer_surface(old)) {struct wlr_layer_surface_v1 *wlr_layer_surface =wlr_layer_surface_v1_from_wlr_surface(old);if (wlr_layer_surface->mapped && (wlr_layer_surface->current.layer == ZWLR_LAYER_SHELL_V1_LAYER_TOP ||wlr_layer_surface->current.layer == ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY))return;}
if (shouldfocusclients(c->mon))wlr_seat_keyboard_notify_enter(seat, WLR_SURFACE(c),kb->keycodes, kb->num_keycodes, &kb->modifiers);
wlr_seat_keyboard_notify_enter(seat, WLR_SURFACE(c),kb->keycodes, kb->num_keycodes, &kb->modifiers);
/* Put the new client atop the focus stack and select its monitor */wl_list_remove(&c->flink);wl_list_insert(&fstack, &c->flink);selmon = c->mon;
boolshouldfocusclients(Monitor *m){LayerSurface *layersurface;uint32_t layers_above_shell[] = {ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY,ZWLR_LAYER_SHELL_V1_LAYER_TOP,};for (size_t i = 0; i < LENGTH(layers_above_shell); ++i)wl_list_for_each(layersurface, &m->layers[layers_above_shell[i]], link)if (layersurface->layer_surface->current.keyboard_interactive &&layersurface->layer_surface->mapped)return false;return true;}