diff --git a/menu.cpp b/menu.cpp index dd00a78..680716d 100644 --- a/menu.cpp +++ b/menu.cpp @@ -30,3 +30,14 @@ void runActiveMenu(const ButtonPress_e tuner_button, } }//end switch } + +void enterSubmenu(Menu_t *const submenu) +{ + Menu_t* current_menu = rootMenu; + while(nullptr != current_menu->active_submenu){ + current_menu = current_menu->active_submenu; + } + current_menu->active_submenu = submenu; + submenu->initMenu(); +} + diff --git a/menu.h b/menu.h index 97d06a6..82a755e 100644 --- a/menu.h +++ b/menu.h @@ -30,3 +30,5 @@ void runActiveMenu(const ButtonPress_e tuner_button, const ButtonPress_e touch_button, const Point touch_point, const int16_t knob); + +void enterSubmenu(Menu_t *const submenu); diff --git a/menu_main_buttons.cpp b/menu_main_buttons.cpp index 42c6266..ecd4982 100644 --- a/menu_main_buttons.cpp +++ b/menu_main_buttons.cpp @@ -588,6 +588,5 @@ void osMenu(){ } void osNumpad(){ - numpadMenu->initMenu(); - rootMenu->active_submenu = numpadMenu; + enterSubmenu(numpadMenu); }