All pastes #111210 Raw Edit

hisham

public c v1 · immutable
·published 2006-08-02 07:02 UTC
rendered paste body
/* * Routine to let user select a window using the mouse */Window Select_Window(dpy)     Display *dpy;{  int status;  Cursor cursor;  XEvent event;  Window target_win = None, root = RootWindow(dpy,screen);  int buttons = 0;  /* Make the target cursor */  cursor = XCreateFontCursor(dpy, XC_crosshair);  /* Grab the pointer using target cursor, letting it room all over */  status = XGrabPointer(dpy, root, False,			ButtonPressMask|ButtonReleaseMask, GrabModeSync,			GrabModeAsync, root, cursor, CurrentTime);  if (status != GrabSuccess) Fatal_Error("Can't grab the mouse.");  /* Let the user select a window... */  while ((target_win == None) || (buttons != 0)) {    /* allow one more event */    XAllowEvents(dpy, SyncPointer, CurrentTime);    XWindowEvent(dpy, root, ButtonPressMask|ButtonReleaseMask, &event);    switch (event.type) {    case ButtonPress:      if (target_win == None) {	target_win = event.xbutton.subwindow; /* window selected */	if (target_win == None) target_win = root;      }      buttons++;      break;    case ButtonRelease:      if (buttons > 0) /* there may have been some down before we started */	buttons--;       break;    }  }   XUngrabPointer(dpy, CurrentTime);      /* Done with pointer */  return(target_win);}