override-redirect issues in Xquartz

Jeremy Huddleston jeremyhu at freedesktop.org
Thu Oct 16 14:13:44 PDT 2008


We're having some difficulty with menus in some applications like  
nedit and xemacs.  I believe these menus are windows with override- 
redirect set on them per section 4.1.10 (popup windows) of ICCCM:
http://tronche.com/gui/x/icccm/sec-4.html#s-4.1.10

"""
If the window will be visible for a very short time and should not be  
decorated at all, the client can set override-redirect on the window.  
In general, this should be done only if the pointer is grabbed while  
the window is mapped. The window manager will never interfere with  
these windows, which should be used with caution. An example of an  
appropriate use is a pop-up menu.
"""

The problem is that windows following this route don't get handled by  
our WM and don't get their native windows parented properly by quartz- 
wm.  When a window sets WM_TRANSIENT_FOR, we set its native window as  
a child to its parent's native window so the menu "belongs to" and  
"moves with" the parent.  This works fine for nedit's Open dialog for  
example.  Menus that don't set WM_TRANSIENT_FOR and follow this  
override-redirect approach don't get parented properly and cause  
problems (like the menu appearing in the wrong Space [virtual desktop]  
because that's the Space it was last rendered in and thus the native  
window bound to).

We need a way to bind the native window for this menu to the native  
window for its parent.  Currently it is just bound to the Space in  
which it is first rendered... so does anyone have some suggestions for  
the least invasive way to go about this?  Doing some quick  
investigation with xwininfo on the window, I see no wm hints, and it's  
parent window id is the root window... so... yick.

Any thoughts?


xwininfo: Window id: 0x800044 (has no name)

   Absolute upper-left X:  4
   Absolute upper-left Y:  67
   Relative upper-left X:  4
   Relative upper-left Y:  67
   Width: 202
   Height: 418
   Depth: 24
   Visual Class: TrueColor
   Border width: 0
   Class: InputOutput
   Colormap: 0x21 (installed)
   Bit Gravity State: NorthWestGravity
   Window Gravity State: NorthWestGravity
   Backing Store State: NotUseful
   Save Under State: yes
   Map State: IsViewable
   Override Redirect State: yes
   Corners:  +4+67  -3154+67  -3154-715  +4-715
   -geometry 202x418+4+67

xwininfo: Window id: 0x800044 (has no name)

   No window manager hints defined

xwininfo: Window id: 0x800044 (has no name)

   Root window id: 0xbf (the root window) (has no name)
   Parent window id: 0xbf (the root window) (has no name)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3040 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg/attachments/20081016/563efef5/attachment.bin>


More information about the xorg mailing list