<div dir="ltr"><div>If we respect the ICCCM, we need to map the child window when the client asks for it to be mapped. If the WM_TRANSIENT_FOR hint specifies an invalid window, we just ignore it.<br><br>Looking through the mutter code, it seems that if we don't recognize a window specified in WM_TRANSIENT_FOR, we warn and ignore the hint. When new windows get mapped, we don't recheck the existing WM_TRANSIENT_FOR hints.<br>
<br></div><div>So, this seems correct to me.<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jan 17, 2014 at 3:01 PM, Kristian Høgsberg <span dir="ltr"><<a href="mailto:hoegsberg@gmail.com" target="_blank">hoegsberg@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Sun, Jan 12, 2014 at 03:06:05PM +0100, Axel Davy wrote:<br>
> Signed-off-by: Axel Davy <<a href="mailto:axel.davy@ens.fr">axel.davy@ens.fr</a>><br>
> ---<br>
>  xwayland/window-manager.c | 2 +-<br>
>  1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
</div>I don't think we have the right fix here, but I've applied the patch<br>
since we're too close to release right now.  If a window is<br>
transient_for another window and we don't have a surface for the<br>
parent, I think we should wait for the parent to be mapped before we<br>
map the child window.<br>
<span class="HOEnZb"><font color="#888888"><br>
Kristian<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c<br>
> index d475e36..1bb9825 100644<br>
> --- a/xwayland/window-manager.c<br>
> +++ b/xwayland/window-manager.c<br>
> @@ -2214,7 +2214,7 @@ xserver_map_shell_surface(struct weston_wm *wm,<br>
>                                             window->x,<br>
>                                             window->y,<br>
>                                             WL_SHELL_SURFACE_TRANSIENT_INACTIVE);<br>
> -     } else if (window->transient_for) {<br>
> +     } else if (window->transient_for && window->transient_for->surface) {<br>
>               parent = window->transient_for;<br>
>               shell_interface->set_transient(window->shsurf,<br>
>                                              parent->surface,<br>
> --<br>
> 1.8.3.2<br>
><br>
> _______________________________________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>  Jasper<br>
</div>