List of topmost window issues

Deron Johnson Deron.Johnson at Sun.COM
Fri Jan 6 16:48:00 PST 2006


I've compiled a list of all of the open issues I am aware of related to
topmost windows. I'd like to find out if there is a consensus on the
first issue, namely should we pursue the topmost window concept further?
Does anybody strongly disagree with this general approach. To me, it
has clean, well-defined semantics and solves many of my problems, so
I am all for it.

And, if you have any objections my position on the other issues, please
voice them too.


Top-Most Windows
================

Open Issues
-----------

+ Issue: Are topmost windows the right paradigm? Is there a better idea?

    Pros:
	Solves a lot of problems for LG
	Relatively easy to implement
        Already an established idea in Windows

    Cons:
        None (that I can think of)

    My position:
	I strongly believe that X should support this.

+ Issue: Should topmost windows be only override redirect, or should
         we allow non-override redirect topmost windows.

    Pros:
	More general.

    Cons:
	May require window manager changes to implement.

    My position:
        I recommend restricting topmost windows to be override
        redirect, and relax it down the road if we need to.

+ Issue: Should we special-case CompositeRedirectSubwindows to ignore
         topmost windows, or should we implement a separate mechanism
         for specifying that it ignore a specified window?

    Pros:
	Introduces less new API.

    Cons:
        Topmost windows seem like a separate idea from the composite
        ignoring. Forcing them to be linked together like this could
        restrict freedom later on.

    My position:
        I recommend the keeping the composite ignoring mechanism
        separate.


+ Issue: Should we introduce the concept of a topmost window stack?
  The semantics would be as follows:

	1. Windows in the topmost window stack always are displayed above
	   windows in the normal stack.

	2. A TBD request is called to move a window from one stack to another.
	
	3. The ConfigureWindow protocol request only restacks the given window
	   within its current stack. Expose and ConfigureNotify events are sent
	   as usual. If the override-redirect attribute is False and some other
	   client has selected SubstructureRedirectMask on the parent, the X
	   server generates a ConfigureRequest event to that client and no
	   restacking occurs.
	
	   Note: not all window managers may know how to handle properly handle
	   a ConfigureRequest event that is generated for a restack operation
	   within the topmost window stack, so it is recommended that windows
	   in this stack always have their override redirect attribute set
	   to True.
	
	4. The CirculateWindow protocol request only restacks the given window
	   within its current stack. Expose and CirculateNotify events are
	   sent as usual. If the override-redirect attribute is False and some
	   other client has selected SubstructureRedirectMask on the parent,
	   the X server generates a CirculateRequest event to that client and no
	   restacking occurs.

	   Note: not all window managers may know how to handle properly handle
	   a CirculateRequest event that is generated for a restack operation
	   within the topmost window stack, so it is recommended that windows
	   in this stack always have their override redirect attribute set
	   to True.

	5. If the highest window in the normal window stack is moved to the
	   topmost stack, no events are generated.
	
	6. If the lowest window in the topmost stack is moved to the normal
	   stack, no events are generated.

    Pros:
	Well-defined semantics for multiple topmost windows.
        Deals with what to say about non-override redirect topmost windows

    Cons:
        Probably will take a bit more to implement, but not much.

    My position:
	I am in favor of this.

+ Issue: Is there a bit available in the window structure that we can steal,
         or do we need to allocate a new window private?




More information about the xorg-arch mailing list