static EVENT cd_sizeevent( void ) /*******************************/ { SAREA area; unsigned state; unsigned arm; if( !StatePending ) return( EV_NO_EVENT ); StatePending = 0; state = console_state( UIConCtrl, UIConsole, 0, (_CON_EVENT_ACTIVE|_CON_EVENT_INACTIVE|_CON_EVENT_SIZE) ); arm = 0; if( state & _CON_EVENT_INACTIVE ) { clear_shift(); arm = _CON_EVENT_ACTIVE; } else if( state & _CON_EVENT_ACTIVE ) { arm = _CON_EVENT_INACTIVE; } console_arm( UIConCtrl, UIConsole, 0, arm | _CON_EVENT_SIZE ); if( !(state & _CON_EVENT_SIZE) ) return( EV_NO_EVENT ); if( !uiinlists( EV_BACKGROUND_RESIZE ) ) return( EV_NO_EVENT ); if( !setupscrnbuff() ) return( EV_NO_EVENT ); closebackground(); openbackground(); area.row = 0; area.col = 0; area.height = UIData->height; area.width = UIData->width; uidirty( area ); return( EV_BACKGROUND_RESIZE ); }
ui_event uidialog( a_dialog *ui_dlg_info ) { static ui_event dialog_events[] = { 'a', 'z', 'A', 'Z', EV_ALT_Q, EV_ALT_M, __rend__, EV_ALT_CURSOR_DOWN, EV_CURSOR_UP, EV_CURSOR_DOWN, EV_CURSOR_LEFT, EV_CURSOR_RIGHT, EV_TAB_FORWARD, EV_TAB_BACKWARD, EV_MOUSE_PRESS, EV_MOUSE_RELEASE, EV_MOUSE_DRAG, EV_MOUSE_REPEAT, EV_MOUSE_DCLICK, EV_ENTER, ' ', __end__ }; ui_event ui_ev; VFIELD *field; ui_ev = EV_NO_EVENT; enter_field( ui_dlg_info, ui_dlg_info->curr ); while( ui_ev == EV_NO_EVENT || !uiinlists( ui_ev ) ) { field = ui_dlg_info->curr; if( field != NULL ) { switch( field->typ ) { case FLD_EDIT: case FLD_INVISIBLE_EDIT: uieditpushlist(); break; case FLD_PULLDOWN: uiboxpushlist( ); break; case FLD_COMBOBOX: uiboxpushlist( ); uieditpushlist(); break; case FLD_LISTBOX: case FLD_EDIT_MLE: uiboxpushlist(); break; } } uipushlist( dialog_events ); ui_ev = uidialogevent( ui_dlg_info->vs ); ui_ev = uidialogcallback( ui_dlg_info, ui_ev ); uipoplist( /* dialog_events */ ); if( field != NULL ) { switch( field->typ ) { case FLD_EDIT: case FLD_INVISIBLE_EDIT: uieditpoplist(); break; case FLD_PULLDOWN: uiboxpoplist(); break; case FLD_COMBOBOX: uiboxpoplist(); uieditpoplist(); break; case FLD_LISTBOX: case FLD_EDIT_MLE: uiboxpoplist(); break; } } ui_ev = uiprocessdialogevent( ui_ev, ui_dlg_info ); } /* This code will make sure to exit the current fields before returning * a default hot spot event. This is for consistency with windows. */ if( uiisdefaulthotspot( ui_dlg_info->fields, ui_ev ) ) { if( exit_field( ui_dlg_info, ui_dlg_info->curr ) ) { ui_dlg_info->dirty = true; } } ui_dlg_info->field = ui_dlg_info->curr - ui_dlg_info->fields; return( ui_ev ); }