|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)cmd5.c 3.14 4/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 "defs.h"
12:
13: /*
14: * Window movement.
15: */
16:
17: c_move(w)
18: register struct ww *w;
19: {
20: int col, row;
21: int mincol, minrow;
22: int maxcol, maxrow;
23: int curcol, currow;
24:
25: if (!terse)
26: wwputs("New window position: ", cmdwin);
27: col = w->ww_w.l;
28: row = w->ww_w.t;
29: wwadd(boxwin, framewin->ww_back);
30: for (;;) {
31: wwbox(boxwin, row - 1, col - 1, w->ww_w.nr + 2, w->ww_w.nc + 2);
32: getminmax(row, w->ww_w.nr, 1, wwnrow,
33: &currow, &minrow, &maxrow);
34: getminmax(col, w->ww_w.nc, 0, wwncol,
35: &curcol, &mincol, &maxcol);
36: wwsetcursor(currow, curcol);
37: while (wwpeekc() < 0)
38: wwiomux();
39: switch (getpos(&row, &col, minrow, mincol, maxrow, maxcol)) {
40: case 3:
41: wwunbox(boxwin);
42: wwdelete(boxwin);
43: return;
44: case 2:
45: wwunbox(boxwin);
46: break;
47: case 1:
48: wwunbox(boxwin);
49: case 0:
50: continue;
51: }
52: break;
53: }
54: wwdelete(boxwin);
55: if (!terse)
56: wwputc('\n', cmdwin);
57: wwcurtowin(cmdwin);
58: movewin(w, row, col);
59: }
60:
61: movewin(w, row, col)
62: register struct ww *w;
63: {
64: struct ww *back = w->ww_back;
65:
66: w->ww_alt.t = w->ww_w.t;
67: w->ww_alt.l = w->ww_w.l;
68: wwdelete(w);
69: wwmove(w, row, col);
70: wwadd(w, back);
71: reframe();
72: }
73:
74: /*
75: * Weird stufff, don't ask.
76: */
77: getminmax(x, n, a, b, curx, minx, maxx)
78: register x, n, a, b;
79: int *curx, *minx, *maxx;
80: {
81: if (x < 0)
82: *curx = x + n - 1;
83: else
84: *curx = x;
85:
86: if (x <= a)
87: *minx = 1 - n;
88: else if (x <= b - n)
89: *minx = a;
90: else
91: *minx = b - n;
92:
93: if (x >= b - n)
94: *maxx = b - 1;
95: else if (x >= a)
96: *maxx = b - n;
97: else
98: *maxx = a;
99: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.