Path: utzoo!utgpu!attcan!uunet!husc6!bloom-beacon!EDSEL.SIEMENS.COM!berman From: berman@EDSEL.SIEMENS.COM (A. Michael Berman) Newsgroups: comp.windows.x Subject: re: Siemens RTL Tiled Window Manager Message-ID: <8808032116.AA05072@edsel.siemens.com> Date: 3 Aug 88 21:16:04 GMT Sender: daemon@bloom-beacon.MIT.EDU Organization: The Internet Lines: 67 Mike Urban writes: I have just obtained the Siemens RTL tiled window manager and it is now operating on my (Sun 3/50) workstation. It seems to be quite usable, somewhat to my surprise. Thanks! We're not surprised that you find it usable. :-) However, contrary to the documentation, it seems to be completely insensitive to transient windows. The source code indicates that it does check the TRANSIENT_FOR property, and it appears that this hint is not being seen. Is there a known fix for this problem? We ran into this a little while ago, but didn't post a patch --- here it is. It seems that the problem is that when a popup widget is created in the X Toolkit, the TransientFor property is set, with the window to be transient for set to 0. At least, when we read the hint, the window is 0. Anyway, this patch works around this so that the window is treated as transient. Enjoy! --Mike *** /usr/cadillac/rtl/src/property.c Wed Jun 22 14:34:09 1988 --- property.c Wed Aug 3 16:06:08 1988 *************** *** 1,5 **** #ifndef lint ! static char sccs_id[] = "@(#)property.c 5.1 6/22/88"; #endif /* --- 1,5 ---- #ifndef lint ! static char sccs_id[] = "@(#)property.c 5.2 8/3/88"; #endif /* *************** *** 62,69 **** Window parent; parent = None; ! (void) XGetTransientForHint(dpy, Userwin_XClient(uwinp), &parent); ! Userwin_XTransient_For(uwinp) = parent; } /* ------------------------------------------------------------ */ --- 62,77 ---- Window parent; parent = None; ! if (XGetTransientForHint(dpy, Userwin_XClient(uwinp), &parent)) ! { ! /* it's possible to set the transient for hint, with no */ ! /* parent (toolkit does this) -- so make the transient */ ! /* for be the root (since we use 0 to mean not transient */ ! Userwin_XTransient_For(uwinp) = (parent == None)? root : parent; ! } ! else ! Userwin_XTransient_For(uwinp) = None; ! } /* ------------------------------------------------------------ */