114980Sedward #ifndef lint 2*14989Sedward static char *sccsid = "@(#)wwmove.c 3.2 83/09/15"; 314980Sedward #endif 414980Sedward 514980Sedward #include "ww.h" 614980Sedward 714980Sedward /* 814980Sedward * Move a window. Should be unattached. 914980Sedward */ 1014980Sedward wwmove(w, row, col) 1114980Sedward register struct ww *w; 1214980Sedward { 13*14989Sedward register dr, dc; 14*14989Sedward register i; 15*14989Sedward 1614980Sedward if (w->ww_forw != 0 || w->ww_back != 0) 1714980Sedward return; /* sanity */ 1814980Sedward 19*14989Sedward dr = row - w->ww_w.t; 20*14989Sedward dc = col - w->ww_w.l; 2114980Sedward 22*14989Sedward w->ww_w.t += dr; 23*14989Sedward w->ww_w.b += dr; 24*14989Sedward w->ww_w.l += dc; 25*14989Sedward w->ww_w.r += dc; 26*14989Sedward 27*14989Sedward w->ww_b.t += dr; 28*14989Sedward w->ww_b.b += dr; 29*14989Sedward w->ww_b.l += dc; 30*14989Sedward w->ww_b.r += dc; 31*14989Sedward 3214980Sedward w->ww_i.t = MAX(w->ww_w.t, 0); 3314980Sedward w->ww_i.b = MIN(w->ww_w.b, wwnrow); 3414980Sedward w->ww_i.nr = w->ww_i.b - w->ww_i.t; 3514980Sedward w->ww_i.l = MAX(w->ww_w.l, 0); 3614980Sedward w->ww_i.r = MIN(w->ww_w.r, wwncol); 3714980Sedward w->ww_i.nc = w->ww_i.r - w->ww_i.l; 38*14989Sedward 39*14989Sedward w->ww_cur.r += dr; 40*14989Sedward w->ww_cur.c += dc; 41*14989Sedward 42*14989Sedward w->ww_win -= dr; 43*14989Sedward for (i = w->ww_w.t; i < w->ww_w.b; i++) 44*14989Sedward w->ww_win[i] -= dc; 45*14989Sedward w->ww_cov -= dr; 46*14989Sedward for (i = w->ww_w.t; i < w->ww_w.b; i++) 47*14989Sedward w->ww_cov[i] -= dc; 48*14989Sedward if (w->ww_fmap != 0) { 49*14989Sedward w->ww_fmap -= dr; 50*14989Sedward for (i = w->ww_w.t; i < w->ww_w.b; i++) 51*14989Sedward w->ww_fmap[i] -= dc; 52*14989Sedward } 53*14989Sedward w->ww_nvis -= dr; 54*14989Sedward w->ww_buf -= dr; 55*14989Sedward for (i = w->ww_b.t; i < w->ww_b.b; i++) 56*14989Sedward w->ww_buf[i] -= dc; 5714980Sedward } 58