On Wed, Jun 12, 2013 at 7:39 PM, Rafael Antognolli <[email protected]> wrote: > On Wed, Jun 12, 2013 at 4:39 PM, Bill Spitzak <[email protected]> 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
I've just updated the proposal, considering my last statement. Take a look at it and see if it fits your suggestion. This lets us with 2 surface types (toplevel and fullscreen), and 5 states (maximized, minimized, sticky, always_on_top and transient) and their respective parameters. https://github.com/antognolli/wayland/wiki/Surface-States -- Rafael Antognolli _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
