示例#1
0
static EVENT doget( bool update )
/*******************************/
{
    register    EVENT                   ev;
    static      short                   ReturnIdle = 1;
    SAREA       screen;

    for( ;; ) {
        ev = forcedevent();
        if( ev > EV_NO_EVENT )
            break;
        ev = _uievent();
        if( ev > EV_NO_EVENT )
            break;
        if( ReturnIdle ) {
            --ReturnIdle;
            return( EV_IDLE );
        } else {
            if( update )
                uirefresh();
            if( UIData->busy_wait ) {
                return( EV_SINK );
            }
        }
        _armkeyboard();
        Receive( UILocalProxy, 0, 0 ); /* wait for some input */
    }
    ReturnIdle = 1;
    switch( ev ) {
    case EV_REDRAW_SCREEN:
        screen.row = 0;
        screen.col = 0;
        screen.height= UIData->height;
        screen.width=  UIData->width;

        uidirty( screen );
        UserForcedTermRefresh = true;
        physupdate( &screen );
        break;
    case EV_MOUSE_HOLD:
    case EV_MOUSE_HOLD_R:
    case EV_MOUSE_HOLD_M:
    case EV_MOUSE_REPEAT:
    case EV_MOUSE_REPEAT_R:
    case EV_MOUSE_REPEAT_M:
        if( update )
            uirefresh();
        break;
    }
    return( ev );
}
示例#2
0
static EVENT doget( bool update )
/*******************************/
{
    register    EVENT                   ev;
    static      short                   ReturnIdle = 1;

    for( ;; ) {
        ev = forcedevent();
        if( ev > EV_NO_EVENT )
            break;
        ev = _uievent();
        if( ev > EV_NO_EVENT )
            break;
        if( ReturnIdle ) {
            --ReturnIdle;
            return( EV_IDLE );
        } else {
            if( update )
                uirefresh();
            if( UIData->busy_wait ) {
                return( EV_SINK );
            }
        }
        kb_wait( 60, 0 );
    }
    ReturnIdle = 1;
    if( ev==EV_REDRAW_SCREEN ){
        extern bool     UserForcedTermRefresh;
        SAREA           screen={ 0, 0, 0, 0 };

        screen.height= UIData->height;
        screen.width=  UIData->width;

        uidirty( screen );
        UserForcedTermRefresh= TRUE;
        physupdate( &screen );
    }
    return( ev );
}