- if (n != 0) {
- // _nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
- // _nc_synchook(win);
+ if (n == 0)
+ return OK;
+
+ for (y = 0; y <= (win->_maxy - n); y++) {
+ win->_line[y].firstchar = win->_line[y + n].firstchar;
+ win->_line[y].lastchar = win->_line[y + n].lastchar;
+ for (x = 0; x <= win->_maxx; x++) {
+ if ((win->_line[y].text[x].chars[0] != win->_line[y + n].text[x].chars[0]) ||
+ (win->_line[y].text[x].attr != win->_line[y + n].text[x].attr)) {
+ if (win->_line[y].firstchar == _NOCHANGE)
+ win->_line[y].firstchar = x;
+
+ win->_line[y].lastchar = x;
+
+ win->_line[y].text[x].chars[0] = win->_line[y + n].text[x].chars[0];
+ win->_line[y].text[x].attr = win->_line[y + n].text[x].attr;
+ }
+ }
+ }
+
+ for (y = (win->_maxy+1 - n); y <= win->_maxy; y++) {
+ for (x = 0; x <= win->_maxx; x++) {
+ if ((win->_line[y].text[x].chars[0] != ' ') ||
+ (win->_line[y].text[x].attr != A_NORMAL)) {
+ if (win->_line[y].firstchar == _NOCHANGE)
+ win->_line[y].firstchar = x;
+
+ win->_line[y].lastchar = x;
+
+ win->_line[y].text[x].chars[0] = ' ';
+ win->_line[y].text[x].attr = A_NORMAL;
+ }
+ }