/*
 * -- $Header: /cec/src/nestor/servers/R3/shXlib/XGrButton.c,v 1.1.1.1
 * 90/04/23 09:59:50 spanachi Exp $
 */
#include "copyright.h"

/* $XConsortium: XGrButton.c,v 11.8 88/09/06 16:08:24 jim Exp $ */
/* Copyright    Massachusetts Institute of Technology    1986	 */

/* -- MULTIPLEX Extension -- */
#include "Xlibint.h"

/* -- additional includes -- */
#include "resources.h"

XGrabButton (dpy, button, modifiers, grab_window, owner_events, event_mask,
	     pointer_mode, keyboard_mode, confine_to, curs)
  register Display *dpy;
  unsigned int modifiers;	/* CARD16 */
  unsigned int button;		/* CARD8 */
  Window grab_window;
  Bool owner_events;
  unsigned int event_mask;	/* CARD16 */
  int pointer_mode, keyboard_mode;
  Window confine_to;
  Cursor curs;
{
  register xGrabButtonReq *req;
  LockDisplay (dpy);
  GetReq (GrabButton, req);
  req->modifiers = modifiers;
  req->button = button;
  req->grabWindow = grab_window;
  req->ownerEvents = owner_events;
  req->eventMask = event_mask;
  req->pointerMode = pointer_mode;
  req->keyboardMode = keyboard_mode;
  req->confineTo = confine_to;
  req->cursor = curs;

  /*
   * -- Another "hidden" request that involves resources. There's no -- way
   * to find out whether a window has passively grabbed buttons. -- But we
   * have to distribute this passive grab or ,e.g toolkit -- pop ups, won't
   * work on multiplex,ed connections
   */
  if (XmuXStoreResources (dpy))
    XmuXSetWindowButtonGrab (dpy, grab_window, button, modifiers,
			     owner_events, event_mask, pointer_mode,
			     keyboard_mode, confine_to, curs);
  UnlockDisplay (dpy);
  SyncHandle ();
}
