Blame clients/mwm/WmWsm.c

Packit b099d7
/*
Packit b099d7
 * Motif
Packit b099d7
 *
Packit b099d7
 * Copyright (c) 1987-2012, The Open Group. All rights reserved.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are free software; you can
Packit b099d7
 * redistribute them and/or modify them under the terms of the GNU
Packit b099d7
 * Lesser General Public License as published by the Free Software
Packit b099d7
 * Foundation; either version 2 of the License, or (at your option)
Packit b099d7
 * any later version.
Packit b099d7
 *
Packit b099d7
 * These libraries and programs are distributed in the hope that
Packit b099d7
 * they will be useful, but WITHOUT ANY WARRANTY; without even the
Packit b099d7
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit b099d7
 * PURPOSE. See the GNU Lesser General Public License for more
Packit b099d7
 * details.
Packit b099d7
 *
Packit b099d7
 * You should have received a copy of the GNU Lesser General Public
Packit b099d7
 * License along with these librararies and programs; if not, write
Packit b099d7
 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
Packit b099d7
 * Floor, Boston, MA 02110-1301 USA
Packit b099d7
 */
Packit b099d7
/* $XConsortium: WmWsm.c /main/6 1996/06/11 17:12:44 rswiston $
Packit b099d7
 *
Packit b099d7
 * (c) Copyright 1996 Digital Equipment Corporation.
Packit b099d7
 * (c) Copyright 1996 Hewlett-Packard Company.
Packit b099d7
 * (c) Copyright 1996 International Business Machines Corp.
Packit b099d7
 * (c) Copyright 1996 Sun Microsystems, Inc.
Packit b099d7
 * (c) Copyright 1996 Novell, Inc. 
Packit b099d7
 * (c) Copyright 1996 FUJITSU LIMITED.
Packit b099d7
 * (c) Copyright 1996 Hitachi.
Packit b099d7
 */
Packit b099d7
Packit b099d7
#ifdef HAVE_CONFIG_H
Packit b099d7
#include <config.h>
Packit b099d7
#endif
Packit b099d7
Packit b099d7
Packit b099d7
#include <Xm/Xm.h>
Packit b099d7
#include "WmGlobal.h"
Packit b099d7
#include "WmWsmLib/wsm_proto.h"
Packit b099d7
Packit b099d7
/*------------------------------------------------------------------*
Packit b099d7
 |                              GetPCD                              |
Packit b099d7
 *------------------------------------------------------------------*/
Packit b099d7
/*ARGSUSED*/
Packit b099d7
ClientData *
Packit b099d7
GetPCD (
Packit b099d7
     int    scr,		/* unused */
Packit b099d7
     Window win)
Packit b099d7
{
Packit b099d7
  ClientData   *pCD = NULL;
Packit b099d7
  Window        root, parent, *children;
Packit b099d7
  unsigned int  nchildren;
Packit b099d7
Packit b099d7
  if (XQueryTree(DISPLAY, win & WIN_MASK, &root, &parent,
Packit b099d7
		 &children, &nchildren))
Packit b099d7
Packit b099d7
    if (XFindContext (DISPLAY, parent, wmGD.windowContextType,
Packit b099d7
		      (XPointer *)&pCD))
Packit b099d7
      {
Packit b099d7
	Boolean foundIt = False;
Packit b099d7
Packit b099d7
	while ((parent != root) && (!foundIt))
Packit b099d7
	  {
Packit b099d7
	    win = parent;
Packit b099d7
	    if (!XQueryTree(DISPLAY, win, &root, &parent,
Packit b099d7
			    &children, &nchildren))
Packit b099d7
	      break;
Packit b099d7
	    foundIt =
Packit b099d7
	      (XFindContext (DISPLAY, parent, wmGD.windowContextType,
Packit b099d7
			     (XPointer *)&pCD) == 0);
Packit b099d7
	  }
Packit b099d7
Packit b099d7
	if (!foundIt) pCD = NULL;
Packit b099d7
      }
Packit b099d7
Packit b099d7
  return (pCD);
Packit b099d7
}