forgot about transparency in wwdelete1()
[unix-history] / usr / src / usr.bin / window / cmd5.c
CommitLineData
0fae0eb5 1#ifndef lint
f176f953 2static char *sccsid = "@(#)cmd5.c 3.7 83/09/15";
0fae0eb5 3#endif
8baf70f5
EW
4
5#include "defs.h"
6
7/*
8 * Window movement.
9 */
f176f953 10
8baf70f5
EW
11c_move(w)
12register struct ww *w;
13{
14 int col, row;
19f9784c
EW
15 int mincol, minrow;
16 int maxcol, maxrow;
17 int curcol, currow;
8baf70f5
EW
18
19 col = w->ww_w.l;
20 row = w->ww_w.t;
21 wwadd(boxwin, framewin->ww_back);
22 for (;;) {
23 wwbox(boxwin, row - 1, col - 1, w->ww_w.nr + 2, w->ww_w.nc + 2);
19f9784c
EW
24 getminmax(row, w->ww_w.nr, 1, wwnrow,
25 &currow, &minrow, &maxrow);
26 getminmax(col, w->ww_w.nc, 0, wwncol,
27 &curcol, &mincol, &maxcol);
28 wwsetcursor(currow, curcol);
8baf70f5
EW
29 while (bpeekc() < 0)
30 bread();
31 wwunbox(boxwin);
19f9784c 32 switch (getpos(&row, &col, minrow, mincol, maxrow, maxcol)) {
8baf70f5
EW
33 case -1:
34 wwdelete(boxwin);
35 if (!terse)
36 (void) wwputs("\r\nCancelled. ", cmdwin);
37 return;
38 case 1:
39 break;
40 case 0:
41 continue;
42 }
43 break;
44 }
45 wwdelete(boxwin);
46 if (!terse)
47 (void) wwputs("\r\n", cmdwin);
48 wwcurtowin(cmdwin);
f176f953
EW
49 movewin(w, row, col);
50}
51
52movewin(w, row, col)
53register struct ww *w;
54{
55 struct ww *back = w->ww_back;
56
57 w->ww_altpos.r = w->ww_w.t;
58 w->ww_altpos.c = w->ww_w.l;
8baf70f5 59 wwdelete(w);
19f9784c 60 wwmove(w, row, col);
8baf70f5
EW
61 wwadd(w, back);
62 reframe();
63}
19f9784c
EW
64
65/*
66 * Weird stufff, don't ask.
67 */
68getminmax(x, n, a, b, curx, minx, maxx)
69register x, n, a, b;
70int *curx, *minx, *maxx;
71{
f2a77fe1 72 if (x < 0)
19f9784c 73 *curx = x + n - 1;
f2a77fe1 74 else
19f9784c 75 *curx = x;
f2a77fe1
EW
76
77 if (x <= a)
19f9784c 78 *minx = 1 - n;
f2a77fe1 79 else if (x <= b - n)
19f9784c 80 *minx = a;
f2a77fe1 81 else
19f9784c 82 *minx = b - n;
f2a77fe1
EW
83
84 if (x >= b - n)
19f9784c 85 *maxx = b - 1;
f2a77fe1
EW
86 else if (x >= a)
87 *maxx = b - n;
88 else
89 *maxx = a;
19f9784c 90}