- if ((w->ww_w.nr = nrow) <= 0
- || (w->ww_w.nc = ncol) <= 0
- || (w->ww_w.l = col) < 0
- || (w->ww_w.r = col + ncol) > wwncol
- || (w->ww_w.t = row) < 0
- || (w->ww_w.b = row + nrow) > wwnrow) {
- wwerrno = WWE_SIZE;
- goto bad;
- }
- w->ww_nline = MAX(nline, w->ww_w.nr);
+ if (nline < nrow)
+ nline = nrow;
+
+ w->ww_w.t = row;
+ w->ww_w.b = row + nrow;
+ w->ww_w.l = col;
+ w->ww_w.r = col + ncol;
+ w->ww_w.nr = nrow;
+ w->ww_w.nc = ncol;
+
+ w->ww_b.t = row;
+ w->ww_b.b = row + nline;
+ w->ww_b.l = col;
+ w->ww_b.r = col + ncol;
+ w->ww_b.nr = nline;
+ w->ww_b.nc = ncol;
+
+ w->ww_i.t = MAX(w->ww_w.t, 0);
+ w->ww_i.b = MIN(w->ww_w.b, wwnrow);
+ w->ww_i.l = MAX(w->ww_w.l, 0);
+ w->ww_i.r = MIN(w->ww_w.r, wwncol);
+ w->ww_i.nr = w->ww_i.b - w->ww_i.t;
+ w->ww_i.nc = w->ww_i.r - w->ww_i.l;
+
+ w->ww_cur.r = w->ww_w.t;
+ w->ww_cur.c = w->ww_w.l;