|
|
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.