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)


Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to