<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Thu, Jan 30, 2014 at 6:31 PM, Bill Spitzak <span dir="ltr"><<a href="mailto:spitzak@gmail.com" target="_blank">spitzak@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im"><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
- When the compositor creates a shell_surface having the TOPLEVEL type,<br>
it sets a numeral ID for it, and sends a "map" event to the desktop_shell client ;<br>
</blockquote>
<br></div>
You must allow a "toplevel" to become a non-toplevel and vice-versa, otherwise useful api for rearranging windows is impossible. My recommendation is that a surface has a "parent" that can be changed at any time to any other surface or to NULL, the only restriction is that a loop cannot be created. In any case please do not make a "type" called TOPLEVEL.<br>

</blockquote><div><br>This type already exists in wl_shell_surface_set_toplevel. It says 
nothing about transient parents, only that it's a toplevel as opposed to
 a subsurface.<br><br></div><div>Perhaps a misguided name, which is why xdg-shell removes the terminology. However, weston's shell.c still contains a type called "TOPLEVEL" since it started as an implementation for wl_shell_surface.<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

- if it should be hidden, then the compositor sends the shell_surface to a new<br>
weston_layer named "taskbar_layer". This layer is not displayed at all.<br>
</blockquote>
<br></div>
NO! The compositor must only send a "hide request" to the client. The client MUST be in final control over when and how it's surfaces disappear. This is to allow it to atomically remove child surfaces or to reparent them to other surfaces that are not being hidden.<br>

</blockquote><div><br></div><div>Hiding windows should not have any influence over the client, as many desktop environments, including Weston, want to show live previews for minimized or hidden windows in alt-tab or Expose-alikes.<br>
<br>Also, it matches user expectations. If the user clicks minimize on a window, they want it hidden, and they mean it, not get bested with "surprise! You tried to hide me but I resist by mapping my subsurfaces elsewhere!"<br>
</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

When their "minimize" button is pressed, they now call a taskbar_move_surface()<br>
function which will do the former, and additionally send a hint to the desktop_shell<br>
that this has been done (so the corresponding taskbar button stays tuned).<br>
</blockquote>
<br></div>
I'm not clear on why the former api can't do this and you felt a new api had to be added.<br>
______________________________<u></u>_________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org" target="_blank">wayland-devel@lists.<u></u>freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/<u></u>mailman/listinfo/wayland-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>  Jasper<br>
</div></div>