<div dir="ltr"><div>Hi Bill, and thanks a lot for sharing your thoughts,</div><div> </div><div>> You must allow a "toplevel" to become a non-toplevel and vice-versa</div><div> </div><div>That's true ; the current implementation doesn't address this case.</div>
<div> </div><div>> My recommendation is that a surface has a "parent" that can be changed at any time to any other surface or to NULL</div><div> </div><div>So for an application having a "main" surface (let's say, the first that has been created) and child (transient ?) surfaces, the schema would be :</div>
<div>NULL -> shell_surface -> shell_surface -> shell_surface</div><div> |->shell_surface</div><div> </div><div>In that case, an implementation *could* just display a button for the first shell_surface on the left, and minimize it and all its children at the same time. Well, I suppose it's really something up to the actual implementation, so a sample impl. could just do it the easiest way.</div>
<div> </div><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.</div><div> </div><div>Have just been reading the other (old) thread on this issue, so I get your objection :-).</div>
<div>I suppose I'll have to write a sample client application able to process such a request. GTK+ seems to have an impl, so I will check what it does.</div><div> </div><div>> I'm not clear on why the former api can't do this and you felt a new api had to be added.</div>
<div> </div><div>Well it's just a demo, I don't really feel like it should be merged in this state.In fact, I'd like to avoid adding any API.</div><div>----</div><div> </div><div>Taking your comments into account, here's what I think I should do next :</div>
<div> </div><div>- write a sample client able to send "xdg_shell_set_minimized()" requests, and process the responses to it ;</div><div>- write a minimal implementation for a "taskbar/main_shell_surfaces_list" (?) in the "shell" directory, and allow it to be built on demand ;</div>
<div>- make sure these 2 components communicate and react well.</div><div> </div><div>Thank you ; any further recommendation appreciated !</div><div> </div><div>Regards,<br>Manuel</div></div><div class="gmail_extra"><br><br>
<div class="gmail_quote">2014-01-31 Bill Spitzak <span dir="ltr"><<a href="mailto:spitzak@gmail.com" target="_blank">spitzak@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">
- 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.<div class="im">
<br>
<br>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">
- 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.<div class="im">
<br>
<br>
<blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">
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>
</blockquote></div><br><br clear="all"><br>-- <br><div dir="ltr"><font>Regards,<br>
<br>
<i><b>Manuel BACHMANN</b><br>
Tizen Project<br>
VANNES-FR</i><br>
</font></div>
</div>