void WndInvokePopUp( a_window *wnd, gui_point *point, gui_menu_struct *menu ) { int dummy; if( _Isnt( wnd, WSW_ALLOW_POPUP ) ) return; WndMenuItem( wnd, MENU_INITIALIZE, WndMenuRow, WndMenuPiece ); if( menu != NULL && wnd->num_popups == 1 ) { if( menu->style & GUI_GRAYED ) { Ring(); } else { WndMenuItem( wnd, wnd->popupmenu[ 0 ].id, WndMenuRow, WndMenuPiece ); } } else if( wnd->num_popups != 0 ) { if( menu == NULL ) { WndCreateFloatingPopup( wnd, point, wnd->num_popups, wnd->popupmenu, &wnd->last_popup ); } else if( menu->style & GUI_GRAYED ) { Ring(); } else if( menu->child == NULL ) { WndMenuItem( wnd, menu->id, WndMenuRow, WndMenuPiece ); } else { WndCreateFloatingPopup( wnd, point, menu->num_child_menus, menu->child, &dummy ); } } }
bool WndProcMacro( a_window wnd, gui_key key ) { gui_ctl_id menu; int i; WndStatusText( "" ); for( i = 0; i < ArraySize( Key ); ++i ) { if( Key[i].key == key ) { WndStatusText( Key[i].name ); break; } } switch( key ) { case GUI_KEY_PERIOD: WndKeyPopUp( wnd, NULL ); return( true ); case GUI_KEY_EQUAL: menu = MENU_MATCH; break; case GUI_KEY_n: menu = MENU_NEXT; break; case GUI_KEY_p: menu = MENU_PREV; break; case GUI_KEY_q: menu = MENU_QUIT; break; case GUI_KEY_1: menu = MENU_OPEN1; break; case GUI_KEY_a: menu = MENU_OPEN1A; break; case GUI_KEY_2: menu = MENU_OPEN2; break; case GUI_KEY_3: menu = MENU_OPEN3; break; case GUI_KEY_4: menu = MENU_OPEN4; break; case GUI_KEY_b: menu = MENU_OPEN4B; break; case GUI_KEY_5: menu = MENU_OPEN5; break; case GUI_KEY_6: menu = MENU_OPEN6; break; case GUI_KEY_7: menu = MENU_OPEN7; break; case GUI_KEY_8: menu = MENU_OPEN8; break; case GUI_KEY_w: menu = MENU_W1_NEWWORD; break; case GUI_KEY_c: menu = MENU_COMMAND; break; case GUI_KEY_SLASH: menu = MENU_SEARCH; break; case GUI_KEY_x: WndPopUp( wnd, NULL ); break; case GUI_KEY_CTRL_X: { static gui_ctl_id last_menu_pos = 0; WndCreateFloatingPopup( wnd, NULL, &menu_PopTart, &last_menu_pos ); } default: return( false ); } WndMainMenuProc( wnd, menu ); return( true ); }