Blame lib/Xm/ValTime.c

Packit b099d7
/* $TOG: ValTime.c /main/6 1997/06/18 17:46:26 samborn $ */
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
 */
Packit b099d7
/*
Packit b099d7
 * HISTORY
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 "XmI.h"
Packit b099d7
Packit b099d7
/**********************************************************************
Packit b099d7
 *
Packit b099d7
 *  _XmValidTimestamp
Packit b099d7
 *      Returns a valid timestamp by generating an event.  The time
Packit b099d7
 *      that is returned is not 0 or CurrentTime.
Packit b099d7
 *      Arguments: w - any widget on the display.
Packit b099d7
 *
Packit b099d7
 **********************************************************************/
Packit b099d7
Packit b099d7
Time 
Packit b099d7
_XmValidTimestamp(
Packit b099d7
     Widget w )
Packit b099d7
{
Packit b099d7
  Window win;
Packit b099d7
  Display *dsp = XtDisplay(w);
Packit b099d7
  XEvent event;
Packit b099d7
  EventMask shellMask;
Packit b099d7
  Atom timeProp = XInternAtom(dsp, XmI_MOTIF_CURRENT_TIME, False);
Packit b099d7
Packit b099d7
  while (!XtIsShell(w)) w = XtParent(w);
Packit b099d7
  win = XtWindow(w);
Packit b099d7
 
Packit b099d7
  if (! ((shellMask = XtBuildEventMask(w)) & PropertyChangeMask) )
Packit b099d7
    XSelectInput(dsp, win, shellMask | PropertyChangeMask);
Packit b099d7
Packit b099d7
  XChangeProperty(dsp, win, timeProp, timeProp,
Packit b099d7
		  8, PropModeAppend, NULL, 0);
Packit b099d7
Packit b099d7
  XWindowEvent(dsp, win, PropertyChangeMask, &event);
Packit b099d7
  if (!(shellMask & PropertyChangeMask))
Packit b099d7
    XSelectInput(dsp, win, shellMask);
Packit b099d7
Packit b099d7
  return (event.xproperty.time);
Packit b099d7
}
Packit b099d7