xref: /original-bsd/usr.bin/window/wwunframe.c (revision a0a7d8f4)
1 #ifndef lint
2 static char sccsid[] = "@(#)wwunframe.c	3.14 04/24/85";
3 #endif
4 
5 /*
6  * Copyright (c) 1983 Regents of the University of California,
7  * All rights reserved.  Redistribution permitted subject to
8  * the terms of the Berkeley Software License Agreement.
9  */
10 
11 #include "ww.h"
12 
13 wwunframe(w)
14 register struct ww *w;
15 {
16 	int i;
17 
18 	for (i = w->ww_i.t; i < w->ww_i.b; i++) {
19 		register j;
20 		register char *win = w->ww_win[i];
21 		register char *fmap = w->ww_fmap ? w->ww_fmap[i] : 0;
22 		register char *smap = wwsmap[i];
23 		register struct ww_char *ns = wwns[i];
24 		int nchanged = 0;
25 
26 		for (j = w->ww_i.l; j < w->ww_i.r; j++) {
27 			if (win[j] & WWM_GLS)
28 				continue;
29 			win[j] |= WWM_GLS;
30 			if (fmap != 0)
31 				fmap[j] = 0;
32 			if (smap[j] == w->ww_index) {
33 				smap[j] = WWX_NOBODY;
34 				ns[j].c_w = ' ';
35 				nchanged++;
36 			}
37 		}
38 		if (nchanged > 4)
39 			wwtouched[i] |= WWU_MAJOR|WWU_TOUCHED;
40 		else if (nchanged > 0)
41 			wwtouched[i] |= WWU_TOUCHED;
42 		w->ww_nvis[i] = 0;
43 	}
44 
45 	if (w->ww_forw != &wwhead)
46 		wwdelete1(w->ww_forw,
47 			w->ww_i.t, w->ww_i.b, w->ww_i.l, w->ww_i.r);
48 }
49