On Wed, Jun 12, 2013 at 4:39 PM, Bill Spitzak <spit...@gmail.com> wrote: > >>> Shell surface types, exclusive: >>> - top-level >>> - transient (umm, what was this for, again?) >>> - popup (menu?) >> >> >> Transcient is for dialog (modal?) boxes, isn’t it? > > > It means "this window stays above another one". > > Transient cannot be a type, but instead a state of a surface. It has to be > done by setting a "parent surface" which means that the compositor keeps the > surface above the parent. It does not imply anything else, in particular the > client decides whether either surface is currently visible. > > The client has to be able to arbitrarily rearrange the parent pointers. This > means it can set them to null (since otherwise it is not possible to get all > rearrangements if the compositor rejects any attempts that make a loop). > Therefore a "transient surface" can become a "main surface" and thus they > must be the same object.
In this case, it's the "transient" state could be set/unset on surfaces that have a parent. However, if the surface has its parent set to NULL, the "transient" state must be automatically unset too, otherwise we would have an inconsistent state. Is this correct? > This is a requirement so that non-trivial clients can be written that are > not forced to blink the transient windows to change their parenting. > > Popups are also transient windows (and thus normal windows) but they have > some effects on event delivery when they are first mapped. So this would be a different state, that has the "transient" state being set as a requirement, or would it be a flag passed to the "transient" state when setting it? (I think the latter makes more sense to me). -- Rafael Antognolli _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel