# include "curses.ext" /* @(#) _tscroll.c: 1.1 10/15/83 (1.3 7/17/82) */ _tscroll( win ) register WINDOW *win; { register chtype *sp; register int i; register chtype *temp; register int top, bot; #ifdef DEBUG if( win == stdscr ) { if(outf) fprintf( outf, "scroll( stdscr )\n" ); } else { if( win == curscr) { if(outf) fprintf( outf, "scroll( curscr )\n" ); } else { if(outf) fprintf( outf, "scroll( %x )\n", win ); } } #endif if( !win->_scroll ) { return ERR; } /* scroll the window lines themselves up */ top = win->_tmarg; bot = win->_bmarg; temp = win->_y[top]; #ifdef DEBUG if(outf) { fprintf( outf, "top = %d, bot = %d\n", top, bot ); } #endif DEBUG for (i = top; i < bot; i++) { win->_y[i] = win->_y[i+1]; } /* Put a blank line in the opened up space */ for (sp = temp; sp - temp < win->_maxx; ) *sp++ = ' '; win->_y[bot] = temp; #ifdef DEBUG if(outf) { fprintf(outf,"SCROLL win [0%o], curscr [0%o], top %d, bot %d\n", win, curscr, top, bot); fprintf( outf, "Doing --> touchwin( 0%o )\n", win ); } #endif DEBUG win->_cury--; /* ** This section taken out because it wasn't allowing the scrolling of a ** region smaller than the full screen. Taken out on 10/12/83. The ** function call touchwin(win) is done all the time now, & seems to do ** the correct thing when it comes to scrolling with a smaller than screen ** sized region, & a screen sized region. ** ** if( win->_flags&_FULLWIN ) ** { ** _scrdown(); ** } ** else ** { ** musttouch = 1; ** } ** if( musttouch ) ** touchwin(win); */ touchwin(win); return OK; }