On Thu Feb 19 17:06:11 2026 +0000, Gabriel Ivăncescu wrote:
Yes, `handle_wm_state_notify` is exactly what is calling `set_net_active_window` here, with activate set to TRUE / 1. And it doesn't work because of the reason I explained: it returns early since it sees the pending state net_active_window match the one we "skipped" because it was unmapped. I mean this line: if (data->pending_state.net_active_window == window) return; how can it possibly work then? I've tested this on compiz where it has this problem. I see. Well it seems that other WMs only offer activation *after* sending the WM_STATE update, which kind of makes sense IMO: no good reason for clients that aren't aware of a window being mapped to expect it to be activated either.
I'm not completely sure how to fix it, it's a very brittle assembly and changes are often causing more issues than they fix. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10133#note_129978