diff options
author | marha <marha@users.sourceforge.net> | 2011-03-25 15:37:13 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-25 15:37:13 +0000 |
commit | 41a502478a2972358dec934d82ee401c61a5cd36 (patch) | |
tree | 3fda8100e6da9b4a2863789e393016a750502067 /libXmu/src/ClientWin.c | |
parent | 81aeaf653a832c4054d9a40b1cc796911521a739 (diff) | |
parent | 272e57235cd60a2e65ac8258d96a02eb3939b687 (diff) | |
download | vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.gz vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.tar.bz2 vcxsrv-41a502478a2972358dec934d82ee401c61a5cd36.zip |
svn merge ^/branches/released .
Diffstat (limited to 'libXmu/src/ClientWin.c')
-rw-r--r-- | libXmu/src/ClientWin.c | 197 |
1 files changed, 97 insertions, 100 deletions
diff --git a/libXmu/src/ClientWin.c b/libXmu/src/ClientWin.c index 7fc273f1f..17a49365b 100644 --- a/libXmu/src/ClientWin.c +++ b/libXmu/src/ClientWin.c @@ -1,100 +1,97 @@ -/* $Xorg: ClientWin.c,v 1.4 2001/02/09 02:03:51 xorgcvs Exp $ */ - -/* - -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/Xmu/ClientWin.c,v 1.7 2001/12/14 19:55:34 dawes Exp $ */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <X11/Xlib.h> -#include <X11/Xatom.h> - -#include <X11/Xmu/WinUtil.h> - -/* - * Prototypes - */ -static Window TryChildren(Display*, Window, Atom); - -/* Find a window with WM_STATE, else return win itself, as per ICCCM */ - -Window -XmuClientWindow(Display *dpy, Window win) -{ - Atom WM_STATE; - Atom type = None; - int format; - unsigned long nitems, after; - unsigned char *data = NULL; - Window inf; - - WM_STATE = XInternAtom(dpy, "WM_STATE", True); - if (!WM_STATE) - return win; - XGetWindowProperty(dpy, win, WM_STATE, 0, 0, False, AnyPropertyType, - &type, &format, &nitems, &after, &data); - if (data) - XFree(data); - if (type) - return win; - inf = TryChildren(dpy, win, WM_STATE); - if (!inf) - inf = win; - return inf; -} - -static Window -TryChildren(Display *dpy, Window win, Atom WM_STATE) -{ - Window root, parent; - Window *children; - unsigned int nchildren; - unsigned int i; - Atom type = None; - int format; - unsigned long nitems, after; - unsigned char *data; - Window inf = 0; - - if (!XQueryTree(dpy, win, &root, &parent, &children, &nchildren)) - return 0; - for (i = 0; !inf && (i < nchildren); i++) { - data = NULL; - XGetWindowProperty(dpy, children[i], WM_STATE, 0, 0, False, - AnyPropertyType, &type, &format, &nitems, - &after, &data); - if (data) - XFree(data); - if (type) - inf = children[i]; - } - for (i = 0; !inf && (i < nchildren); i++) - inf = TryChildren(dpy, children[i], WM_STATE); - if (children) - XFree(children); - return inf; -} +/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+
+#include <X11/Xmu/WinUtil.h>
+
+/*
+ * Prototypes
+ */
+static Window TryChildren(Display*, Window, Atom);
+
+/* Find a window with WM_STATE, else return win itself, as per ICCCM */
+
+Window
+XmuClientWindow(Display *dpy, Window win)
+{
+ Atom WM_STATE;
+ Atom type = None;
+ int format;
+ unsigned long nitems, after;
+ unsigned char *data = NULL;
+ Window inf;
+
+ WM_STATE = XInternAtom(dpy, "WM_STATE", True);
+ if (!WM_STATE)
+ return win;
+ XGetWindowProperty(dpy, win, WM_STATE, 0, 0, False, AnyPropertyType,
+ &type, &format, &nitems, &after, &data);
+ if (data)
+ XFree(data);
+ if (type)
+ return win;
+ inf = TryChildren(dpy, win, WM_STATE);
+ if (!inf)
+ inf = win;
+ return inf;
+}
+
+static Window
+TryChildren(Display *dpy, Window win, Atom WM_STATE)
+{
+ Window root, parent;
+ Window *children;
+ unsigned int nchildren;
+ unsigned int i;
+ Atom type = None;
+ int format;
+ unsigned long nitems, after;
+ unsigned char *data;
+ Window inf = 0;
+
+ if (!XQueryTree(dpy, win, &root, &parent, &children, &nchildren))
+ return 0;
+ for (i = 0; !inf && (i < nchildren); i++) {
+ data = NULL;
+ XGetWindowProperty(dpy, children[i], WM_STATE, 0, 0, False,
+ AnyPropertyType, &type, &format, &nitems,
+ &after, &data);
+ if (data)
+ XFree(data);
+ if (type)
+ inf = children[i];
+ }
+ for (i = 0; !inf && (i < nchildren); i++)
+ inf = TryChildren(dpy, children[i], WM_STATE);
+ if (children)
+ XFree(children);
+ return inf;
+}
|