It looks like i made a mistake. When xkl_engine_is_group_per_toplevel_window is true it means the setting is not global but per windows. I was fooled bye the toplevel adjective, with made me think "global".
Maybe this should be documented, that per_toplevel_window means per_app ?
Anyway, the patch is more like this now :
+if (xkl_engine_is_group_per_toplevel_window(engine) &&
!new_win_transparent) {
Bye

