xref: /original-bsd/usr.bin/window/wwunframe.c (revision c3e32dec)
1 /*
2  * Copyright (c) 1983, 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Edward Wang at The University of California, Berkeley.
7  *
8  * %sccs.include.redist.c%
9  */
10 
11 #ifndef lint
12 static char sccsid[] = "@(#)wwunframe.c	8.1 (Berkeley) 06/06/93";
13 #endif /* not lint */
14 
15 #include "ww.h"
16 
17 wwunframe(w)
18 register struct ww *w;
19 {
20 	int i;
21 
22 	for (i = w->ww_i.t; i < w->ww_i.b; i++) {
23 		register j;
24 		register char *win = w->ww_win[i];
25 		register char *fmap = w->ww_fmap ? w->ww_fmap[i] : 0;
26 		register char *smap = wwsmap[i];
27 		register union ww_char *ns = wwns[i];
28 		int nchanged = 0;
29 
30 		for (j = w->ww_i.l; j < w->ww_i.r; j++) {
31 			if (win[j] & WWM_GLS)
32 				continue;
33 			win[j] |= WWM_GLS;
34 			if (fmap != 0)
35 				fmap[j] = 0;
36 			if (smap[j] == w->ww_index) {
37 				smap[j] = WWX_NOBODY;
38 				ns[j].c_w = ' ';
39 				nchanged++;
40 			}
41 		}
42 		if (nchanged > 0)
43 			wwtouched[i] |= WWU_TOUCHED;
44 		w->ww_nvis[i] = 0;
45 	}
46 
47 	if (w->ww_forw != &wwhead)
48 		wwdelete1(w->ww_forw,
49 			w->ww_i.t, w->ww_i.b, w->ww_i.l, w->ww_i.r);
50 }
51