home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1999 March / PCShareware-3-99.iso / IMPLE / DJGPP.RAR / DJGPP2 / XLIB-SR0.ZIP / SRC / XLIBEMU / REPWIND.C < prev    next >
C/C++ Source or Header  |  1994-02-20  |  2KB  |  57 lines

  1. /* $Id: repwind.c 1.1 1994/02/20 17:36:13 ulrich Exp $ */
  2. /*
  3.  * X library function XReparentWindow.
  4.  */
  5. #include "Xlibemu.h"
  6.  
  7. int
  8. XReparentWindow (Display *dpy, Window window, Window parent, int x, int y)
  9. {
  10.   int mapped;
  11.   XEvent xe;
  12.  
  13.   if (0 == _WCheckWindow (dpy, window, X_ReparentWindow))
  14.     return 0;
  15.   if (window == DefaultRootWindow (dpy) ||
  16.       window->override_redirect != False)
  17.     return 0;
  18.   if (parent == NULL)
  19.     parent = DefaultRootWindow (dpy);
  20.   if (parent == window->parent)
  21.     return 0;
  22.  
  23.   if (window->event_mask & StructureNotifyMask) {
  24.     xe.xreparent.type = ReparentNotify;
  25.     xe.xreparent.send_event = False;
  26.     xe.xreparent.event = window;
  27.     xe.xreparent.window = window;
  28.     xe.xreparent.parent = parent;
  29.     xe.xreparent.x = x;
  30.     xe.xreparent.y = y;
  31.     xe.xreparent.override_redirect = window->override_redirect;
  32.     _WDispatchEvent (&xe);
  33.   }
  34.   if (window->parent != None &&
  35.       window->parent->event_mask & SubstructureNotifyMask) {
  36.     xe.xreparent.type = ReparentNotify;
  37.     xe.xreparent.send_event = False;
  38.     xe.xreparent.event = window->parent;
  39.     xe.xreparent.window = window;
  40.     xe.xreparent.parent = parent;
  41.     xe.xreparent.x = x;
  42.     xe.xreparent.y = y;
  43.     xe.xreparent.override_redirect = window->override_redirect;
  44.     _WDispatchEvent (&xe);
  45.   }
  46.   mapped = window->mapped;
  47.   if (mapped) _WUnmapWindow (dpy, window);
  48.   _WTreeDelete (window);
  49.   _WTreeInsertTop (parent, window);
  50.   /* move window */
  51.   window->x = x;
  52.   window->y = y;
  53.   _WNewWindowContext (window);
  54.   if (mapped) _WMapWindow (dpy, window);
  55.   return 1;
  56. }
  57.