int Menu_Up(MENU *m) { int llev=m->headerlevels[m->act_header], lmen=m->act_header, lentr=m->lastheaderentrys[m->act_header]; if(m->menact) { OnMenuClose(m->menact,m->menactdep); } while((lmen>=0) && (m->headerlevels[lmen]>=llev)) { --lmen; } if(lmen<0) { return 0; } m->act_header=lmen; Get_Menu(1); m->act_entry=lentr; return 1; }
//---------------------------------------------- // close this menu and go back to previous //---------------------------------------------- void TLMenu::TMenuController::CloseMenu() { if ( m_MenuStack.GetSize() == 0 ) { TLDebug_Break("No menus in stack to close"); return; } // remove last menu from stack m_MenuStack.RemoveLast(); // send out message // if all gone, send all-closed message if ( m_MenuStack.GetSize() == 0 ) OnMenuCloseAll(); else OnMenuClose(); // we have a new menu item at top, so "reopen" that if ( GetCurrentMenu() ) OnMenuOpen(); }