GNOME Bugzilla – Bug 648079
Setting dialog parent with XSetTransientForHint or group leader with XSetWMHints fails if the window in request is not mapped.
Last modified: 2014-12-29 02:36:30 UTC
I'm filing this report against Metacity 2.28.x, but as far as I see current git sources have the same problem. src/core/window-props.c,reload_transient_for() uses meta_display_lookup_x_window() to validate a passed in xwindow handle. src/core/window-props.c,reload_wm_hints() does the same indirectly by calling meta_window_group_leader_changed(). But meta_display_lookup_x_window() fails for a not mapped window. Unfortunately Metacity registers a window only in the MapRequest handler. Neither XSetTransientForHint/XSetWMHints man pages nor ICCCM mention such a limitation.
Obviously mutter has the same codebase and exactly the same problem. Changing component in the hope that this bug report takes more attention.
Is there any hope to get at least some comment to this bug report?
This is technically against ICCCM spec. From careful reading, it's supposed to be that from the perspective of the WM, unmapped windows are effectively unknown windows. So you can't specify an XID of an unmapped window in any old field. I know that Wine relies on this behavior, but I'd recommend just fixing wine instead.