Example #1
0
static  void    WndDownOne( a_window *wnd )
{
    if( !WndAtTop( wnd ) ) {
        if( WndScroll( wnd, 1 ) != 0 ) {
            if( WndHasCurrent( wnd ) ) WndMoveUp( wnd );
        }
    } else {
        WndScroll( wnd, 1 );
    }
}
Example #2
0
static  void    WndUpOne( a_window *wnd )
{
    if( !WndAtBottom( wnd ) ) {
        if( WndScroll( wnd, -1 ) != 0 ) {
            if( WndHasCurrent( wnd ) ) WndMoveDown( wnd );
        }
    } else {
        WndScroll( wnd, -1 );
    }
}
Example #3
0
static  void    WndMoveDown( a_window *wnd )
{
    if( WndAtBottom( wnd ) ) {
        WndDirtyCurr( wnd );
        WndScroll( wnd, 1 );
        if( !WndFindCloseTab( wnd, wnd->current.row ) ) {
            wnd->current.row--;
        }
        WndCurrVisible( wnd );
        WndDirtyCurr( wnd );
    } else if( WndHasCurrent( wnd ) ) {
        WndDirtyCurr( wnd );
        if( WndFindCloseTab( wnd, wnd->current.row+1 ) ) {
            wnd->current.row++;
        }
        WndCurrVisible( wnd );
        WndDirtyCurr( wnd );
    } else {
        if( WndFirstCurrent( wnd ) ) {
            WndDirtyCurr( wnd );
        }
    }
}
Example #4
0
static void FileTrack( a_window *wnd, cue_handle *ch )
{
    unsigned    active, old_active;
    unsigned    end_line;
    int         slack;
    file_window *file = WndFile( wnd );
    mod_handle  mod;
    cue_fileid  id;
    wnd_row     curr_row;
    int         curr_piece;

    if( ch == NULL ) {
        mod = NO_MOD;
        id = 0;
    } else {
        mod = CueMod( ch );
        id = CueFileId( ch );
    }
    if( file->viewhndl == NULL
      || file->mod != mod
      || file->file_id != id ) {
        if( file->viewhndl != NULL ) {
            FDoneSource( file->viewhndl );
        }
        file->mod = mod;
        file->file_id = id;
        FileSetDotAddr( wnd, GetCodeDot() );
        if( file->mod == NO_MOD ) {
            file->viewhndl = NULL;
        } else {
            file->viewhndl = OpenSrcFile( ch );
        }
        FileSetTitle( wnd, mod );
        SeekToTheEnd( file );
        file->eof = UINT_MAX;
        WndZapped( wnd );
        FilePosInit( wnd );
        file->active = NOT_ACTIVE;
        FilePos( wnd, 0 );
        DbgUpdate( UP_OPEN_CHANGE );
    }
    active = ActiveLine();
    if( active != file->active ) {
        FileSetDotAddr( wnd, GetCodeDot() );
        WndGetCurrent( wnd, &curr_row, &curr_piece );
        WndNoCurrent( wnd );
        if( curr_row != WND_NO_ROW ) {
            WndRowDirty( wnd, curr_row );
        }
    }
    old_active = file->active;
    file->active = NOT_ACTIVE;
    slack = WndRows( wnd ) / 4;
    if( slack > 2 )
        slack = 2;
    end_line = WndTop( wnd ) + WndRows( wnd ) - 1;
    if( old_active == NOT_ACTIVE || active > end_line ) {
        WndZapped( wnd );
        WndScroll( wnd, active - slack - WndTop( wnd ) );
    } else if( active > end_line - slack ) {
        WndRowDirtyImmed( wnd, old_active );
        WndScroll( wnd, WndRows( wnd ) - 2 * slack );
    } else if( active < WndTop( wnd ) ) {
        WndRowDirtyImmed( wnd, old_active );
        WndScroll( wnd, active - WndTop( wnd ) - slack );
    } else {
        WndRowDirty( wnd, old_active );
    }
    WndNewCurrent( wnd, active, PIECE_SOURCE );
    WndRowDirty( wnd, active );
    file->active = active;
}
Example #5
0
static void Centre( a_window *wnd, unsigned line )
{
    WndZapped( wnd );
    WndScroll( wnd, line - ( WndRows( wnd ) / 2 ) - WndTop( wnd ) );
}
Example #6
0
void WndPageDown( a_window *wnd )
{
    WndScroll( wnd, WndPageSize( wnd ) );
}
Example #7
0
void WndPageUp( a_window *wnd )
{
    WndScroll( wnd, -WndPageSize( wnd ) );
}