Allow non-modal utility windows to enter fullscreen

Closes #809.

Firefox Picture-in-Picture windows use _NET_WM_WINDOW_TYPE_UTILITY. When WM_TRANSIENT_FOR is absent, xfwm4 treats them as transient for their window group, and the existing fullscreen guards reject them even though they are not modal.

Use a shared fullscreen eligibility predicate for non-modal NORMAL and UTILITY windows in the EWMH handler, window menu, keyboard action, and _NET_WM_ALLOWED_ACTIONS. Keep fullscreen exit available if a window becomes modal or changes type at runtime.

Tested against current master and the xfwm4-4.20.0 tag:

  • stock 4.20.0 reproduces the issue;
  • patched builds enter fullscreen and restore the original geometry and ABOVE state;
  • non-modal direct/group-transient NORMAL and UTILITY windows work;
  • modal windows and unsupported window types remain rejected;
  • Meson master, Autotools 4.20.0, and Arch package builds pass.

Merge request reports

Loading