From ddded99bf73470b2a66e3fca54ae6b5eb2ab2165 Mon Sep 17 00:00:00 2001 From: ohyzha Date: Tue, 17 Dec 2024 13:07:23 +0200 Subject: [PATCH] introduce flag for emergency menu exit --- examples/main.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/examples/main.cpp b/examples/main.cpp index 8ac6541..e0a35b7 100644 --- a/examples/main.cpp +++ b/examples/main.cpp @@ -33,24 +33,30 @@ int main(int argc, char** argv) //screen.ForceHandleCtrlZ(true); option.on_enter = screen.ExitLoopClosure(); auto menu = ftxui::Menu(&examples, &selectedExample, option); - + bool emergencyExit = false; menu |= ftxui::CatchEvent( [&](ftxui::Event event) { if (event == ftxui::Event::CtrlC || event == ftxui::Event::CtrlZ) { screen.ExitLoopClosure()(); - exit(0); + emergencyExit = true; } return false; }); screen.Loop(menu); - if (selectedExample >= examples.size()) throw std::runtime_error("Invalid menu selection!"); + if (!emergencyExit) + { + if (selectedExample >= examples.size()) + { + throw std::runtime_error("Invalid menu selection!"); + } - std::unique_ptr app( EXAMPLE_APPS[selectedExample].second() ); + std::unique_ptr app(EXAMPLE_APPS[selectedExample].second()); - GraphicsAppManager manager(app.get()); - manager.Run(); + GraphicsAppManager manager(app.get()); + manager.Run(); + } return 0; }