Bugfix: Avoid crash with ResizeableSplit. (#1025)

Component
---------
- Bugfix: Fix a crash with ResizeableSplit. See #1023.
  - Clamp screen size to terminal size.
  - Disallow `ResizeableSplit` with negative size.

Dom
---
- Bugfix: Disallow specifying a negative size constraint. See #1023.

Bug: https://github.com/ArthurSonzogni/FTXUI/issues/1023
This commit is contained in:
Arthur Sonzogni
2025-03-31 18:19:48 +02:00
committed by GitHub
parent 09eb2f7fb0
commit 07fd3e685a
4 changed files with 20 additions and 8 deletions

View File

@@ -34,6 +34,7 @@
#include "ftxui/dom/requirement.hpp" // for Requirement
#include "ftxui/screen/pixel.hpp" // for Pixel
#include "ftxui/screen/terminal.hpp" // for Dimensions, Size
#include "ftxui/screen/util.hpp" // for util::clamp
#if defined(_WIN32)
#define DEFINE_CONSOLEV2_PROPERTIES
@@ -917,15 +918,15 @@ void ScreenInteractive::Draw(Component component) {
break;
case Dimension::TerminalOutput:
dimx = terminal.dimx;
dimy = document->requirement().min_y;
dimy = util::clamp(document->requirement().min_y, 0, terminal.dimy);
break;
case Dimension::Fullscreen:
dimx = terminal.dimx;
dimy = terminal.dimy;
break;
case Dimension::FitComponent:
dimx = std::min(document->requirement().min_x, terminal.dimx);
dimy = std::min(document->requirement().min_y, terminal.dimy);
dimx = util::clamp(document->requirement().min_x, 0, terminal.dimx);
dimy = util::clamp(document->requirement().min_y, 0, terminal.dimy);
break;
}