/* @(#) _pos.c: 1.1 10/15/83 (1.21 2/11/83) */ #include "curses.ext" extern int _outch(); /* Position the SP->curptr to (row, column) which start at 0. */ _pos(row, column) int row; int column; { #ifdef DEBUG if(outf) fprintf(outf, "_pos from row %d, col %d => row %d, col %d\n", SP->phys_y, SP->phys_x, row, column); #endif if( SP->phys_x == column && SP->phys_y == row ) { return; /* already there */ } /* * Many terminals can't move the cursor when in standout mode. * We must be careful, however, because HP's and cookie terminals * will drop a cookie when we do this. */ if( !move_standout_mode && SP->phys_gr && magic_cookie_glitch < 0 ) { if( !ceol_standout_glitch ) { _clearhl (); } } /* some terminals can't move in insert mode */ if( SP->phys_irm == 1 && !move_insert_mode ) { tputs(exit_insert_mode, 1, _outch); SP->phys_irm = 0; } /* If we try to move outside the scrolling region, widen it */ if( row<SP->phys_top_mgn || row>SP->phys_bot_mgn ) { _window(0, lines-1, 0, columns-1); _setwind(); } mvcur(SP->phys_y, SP->phys_x, row, column); SP->phys_x = column; SP->phys_y = row; }