2
* @OPENGROUP_COPYRIGHT@
4
* Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
5
* Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
6
* ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
7
* the full copyright text.
9
* This software is subject to an open license. It may only be
10
* used on, with or for operating systems which are themselves open
11
* source systems. You must contact The Open Group for a license
12
* allowing distribution and sublicensing of this software on, with,
13
* or for operating systems which are not Open Source programs.
15
* See http://www.opengroup.org/openmotif/license for full
16
* details of the license agreement. Any use, reproduction, or
17
* distribution of the program constitutes recipient's acceptance of
20
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
21
* PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
22
* KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
23
* WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
24
* OR FITNESS FOR A PARTICULAR PURPOSE
26
* EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
27
* NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
28
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29
* DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
30
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
* ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
33
* EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGES.
41
static char rcsid[] = "$XConsortium: client_win.c /main/5 1995/07/14 09:47:48 drk $"
44
/* $XConsortium: client_win.c /main/5 1995/07/14 09:47:48 drk $ */
47
* 01/04/92 aja - return the property
51
* Copyright 1989 by the Massachusetts Institute of Technology
53
* Permission to use, copy, modify, and distribute this software and its
54
* documentation for any purpose and without fee is hereby granted, provided
55
* that the above copyright notice appear in all copies and that both that
56
* copyright notice and this permission notice appear in supporting
57
* documentation, and that the name of M.I.T. not be used in advertising
58
* or publicity pertaining to distribution of the software without specific,
59
* written prior permission. M.I.T. makes no representations about the
60
* suitability of this software for any purpose. It is provided "as is"
61
* without express or implied warranty.
67
#include <X11/Xatom.h>
69
static Window TryChildren();
71
/* Find a window with WM_STATE, else return win itself, as per ICCCM */
72
static Atom WM_STATE = None;
74
Window IsClientWindow(dpy, win, retdata)
77
unsigned int **retdata;
81
unsigned long nitems, after;
88
if(WM_STATE == None) {
89
WM_STATE = XInternAtom(dpy, "WM_STATE", True);
91
if (!WM_STATE) return win;
93
XGetWindowProperty(dpy, win, WM_STATE, 0, 2, False, AnyPropertyType,
94
&type, &format, &nitems, &after, (unsigned char **)&data);
99
inf = TryChildren(dpy, win, WM_STATE, retdata);
105
static Window TryChildren (dpy, win, WM_STATE, retdata)
109
unsigned int **retdata;
113
unsigned int nchildren;
117
unsigned long nitems, after;
121
if (!XQueryTree(dpy, win, &root, &parent, &children, &nchildren))
123
for (i = 0; !inf && (i < nchildren); i++) {
124
XGetWindowProperty(dpy, children[i], WM_STATE, 0, 2, False,
125
AnyPropertyType, &type, &format, &nitems,
126
&after, (unsigned char **)&data);
132
for (i = 0; !inf && (i < nchildren); i++)
133
inf = TryChildren(dpy, children[i], WM_STATE, retdata);
134
if (children) XFree((char *)children);