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 ); }
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 ); }