diff --git a/src/ftxui/component/screen_interactive.cpp b/src/ftxui/component/screen_interactive.cpp index aeea098a..58ee31dd 100644 --- a/src/ftxui/component/screen_interactive.cpp +++ b/src/ftxui/component/screen_interactive.cpp @@ -176,6 +176,11 @@ void ScreenInteractive::PostEvent(Event event) { } void ScreenInteractive::Loop(Component* component) { + // Install a SIGINT handler and restore the old handler on exit. + auto old_sigint_handler = std::signal(SIGINT, OnExit); + on_exit_functions.push( + [old_sigint_handler]() { std::signal(SIGINT, old_sigint_handler); }); + // Save the old terminal configuration and restore it on exit. #if defined(_WIN32) // Enable VT processing on stdout and stdin @@ -211,11 +216,6 @@ void ScreenInteractive::Loop(Component* component) { // Handle resize. on_resize = [&] { event_sender_->Send(Event::Special({0})); }; install_signal_handler(SIGWINCH, OnResize); - - // Install a SIGINT handler and restore the old handler on exit. - auto old_sigint_handler = std::signal(SIGINT, OnExit); - on_exit_functions.push( - [old_sigint_handler]() { std::signal(SIGINT, old_sigint_handler); }); #endif // Hide the cursor and show it at exit.