diff --git a/CHANGELOG.md b/CHANGELOG.md index d3cefa5aa..53d128f49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ current (development) ``` A couple of components are now activated when the mouse is pressed, as opposed to released. +- Feature: Add `ScreenInteractive::FullscreenPrimaryScreen()`. This allows + displaying a fullscreen component on the primary screen, as opposed to the + alternate screen. - Bugfix: `Input` `onchange` was not called on backspace or delete key. Fixed by @chrysante in chrysante in PR #776. diff --git a/include/ftxui/component/screen_interactive.hpp b/include/ftxui/component/screen_interactive.hpp index 1b008cc95..7629f031b 100644 --- a/include/ftxui/component/screen_interactive.hpp +++ b/include/ftxui/component/screen_interactive.hpp @@ -32,6 +32,7 @@ class ScreenInteractive : public Screen { static ScreenInteractive FixedSize(int dimx, int dimy); static ScreenInteractive Fullscreen(); static ScreenInteractive FullscreenPrimaryScreen(); + static ScreenInteractive FullscreenAlternateScreen(); static ScreenInteractive FitComponent(); static ScreenInteractive TerminalOutput(); diff --git a/src/ftxui/component/screen_interactive.cpp b/src/ftxui/component/screen_interactive.cpp index d99bf3c45..a71ecbf20 100644 --- a/src/ftxui/component/screen_interactive.cpp +++ b/src/ftxui/component/screen_interactive.cpp @@ -352,16 +352,19 @@ ScreenInteractive ScreenInteractive::FixedSize(int dimx, int dimy) { }; } +/// @ingroup component +/// Create a ScreenInteractive taking the full terminal size. This is using the +/// alternate screen buffer to avoid messing with the terminal content. +/// @note This is the same as `ScreenInteractive::FullscreenAlternateScreen()` // static ScreenInteractive ScreenInteractive::Fullscreen() { - return { - 0, - 0, - Dimension::Fullscreen, - true, - }; + return FullscreenPrimaryScreen(); } +/// @ingroup component +/// Create a ScreenInteractive taking the full terminal size. The primary screen +/// buffer is being used. It means if the terminal is resized, the previous +/// content might mess up with the terminal content. // static ScreenInteractive ScreenInteractive::FullscreenPrimaryScreen() { return { @@ -372,6 +375,19 @@ ScreenInteractive ScreenInteractive::FullscreenPrimaryScreen() { }; } +/// @ingroup component +/// Create a ScreenInteractive taking the full terminal size. This is using the +/// alternate screen buffer to avoid messing with the terminal content. +// static +ScreenInteractive ScreenInteractive::FullscreenAlternateScreen() { + return { + 0, + 0, + Dimension::Fullscreen, + true, + }; +} + // static ScreenInteractive ScreenInteractive::TerminalOutput() { return {