home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / EMXLIB8F.ZIP / EMX / LIB / VIDEO / WMMOVE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-02  |  1.1 KB  |  39 lines

  1. /* wmmove.c (emx+gcc) -- Copyright (c) 1987-1993 by Eberhard Mattes */
  2.  
  3. #include <sys/winmgr.h>
  4. #include "winmgr2.h"
  5.  
  6. void wm_move (wm_handle wh, int new_x, int new_y)
  7. {
  8.   int i, dx, dy;
  9.   wm_handle p;
  10.   struct _wm_window new_win, old_win;
  11.  
  12.   if (wh->used != WM_USED)
  13.     return;
  14.   dx = new_x - wh->x0;
  15.   dy = new_y - wh->y0;
  16.   old_win = new_win = *wh;
  17.   new_win.x0 += dx; new_win.x1 += dx; new_win.bx0 += dx; new_win.bx1 += dx;
  18.   new_win.y0 += dy; new_win.y1 += dy; new_win.by0 += dy; new_win.by1 += dy;
  19.   if (new_win.open)
  20.     {
  21.       _wm_unhide1 (wh, &new_win);                         /* Show background */
  22.       *wh = new_win;
  23.       _wm_copy1 (wh, &old_win);                           /* Save background */
  24.       _wm_hide1 ();                                    /* Hide lower windows */
  25.       for (i = 0; i < _wm_count; ++i)
  26.         {
  27.           p = _wm_idx[i];
  28.           if (p == wh)
  29.             break;
  30.           if (p->open && _wm_jam1 (p, &old_win))
  31.             _wm_put1 (p);
  32.         }
  33.       _wm_put1 (wh);                              /* Restore window contents */
  34.     }
  35.   else
  36.     *wh = new_win;
  37.   _wm_cursor1 ();
  38. }
  39.