[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
Top Document: comp.windows.x Frequently Asked Questions (FAQ) 7/7
Previous Document: 185) Can I have two applications draw to the same window?
Next Document: 187) Can I rely on a server which offers backing store?
-
Search the FAQ Archives
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
Top Document: comp.windows.x Frequently Asked Questions (FAQ) 7/7
Previous Document: 185) Can I have two applications draw to the same window?
Next Document: 187) Can I rely on a server which offers backing store?
186) Why can't my program work with tvtwm or swm?
A number of applications, including xwd, xwininfo, and xsetroot, do not
handle the virtual root window which tvtwm and swm use; they typically return
the wrong child of root. A general solution is to add this code or to use it in
your own application where you would normally use RootWindow(dpy,screen):
/* Function Name: GetVRoot
* Description: Gets the root window, even if it's a virtual root
* Arguments: the display and the screen
* Returns: the root window for the client
*/
#include <X11/Xatom.h>
Window GetVRoot(dpy, scr)
Display *dpy;
int scr;
{
Window rootReturn, parentReturn, *children;
unsigned int numChildren;
Window root = RootWindow(dpy, scr);
Atom __SWM_VROOT = None;
int i;
__SWM_VROOT = XInternAtom(dpy, "__SWM_VROOT", False);
XQueryTree(dpy, root, &rootReturn, &parentReturn, &children, &numChildren);
for (i = 0; i < numChildren; i++) {
Atom actual_type;
int actual_format;
long nitems, bytesafter;
Window *newRoot = NULL;
if (XGetWindowProperty(dpy, children[i], __SWM_VROOT, 0, 1,
False, XA_WINDOW, &actual_type, &actual_format, &nitems,
&bytesafter, (unsigned char **) &newRoot) == Success && newRoot) {
root = *newRoot;
break;
}
}
XFree((char *)children);
return root;
}
[courtesy David Elliott (dce@smsc.sony.com). Similar code is in ssetroot, a
version of xsetroot distributed with tvtwm. 2/91]
A header file by Andreas Stolcke of ICSI on
ftp.x.org:contrib/libraries/vroot.shar functions similarly by providing
macros for RootWindow and DefaultRootWindow; code can include this header
file first to run properly in the presence of a virtual desktop.
(Note the possible race condition.)
Top Document: comp.windows.x Frequently Asked Questions (FAQ) 7/7
Previous Document: 185) Can I have two applications draw to the same window?
Next Document: 187) Can I rely on a server which offers backing store?
Part1 - Part2 - Part3 - Part4 - Part5 - Part6 - Part7 - Single Page
[ Usenet FAQs | Web FAQs | Documents | RFC Index ]
Send corrections/additions to the FAQ Maintainer:
faq%craft@uunet.uu.net (X FAQ maintenance address)
Last Update October 22 2009 @ 05:36 AM