/*
 * -- $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();
}
