From c9fbd8de9d7b7ef827ef5b0e9d8e9eddc40d7508 Mon Sep 17 00:00:00 2001 From: Clement Roblot Date: Thu, 31 Oct 2024 21:15:59 +0700 Subject: [PATCH] Wrap around both directions --- src/ftxui/dom/text.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/ftxui/dom/text.cpp b/src/ftxui/dom/text.cpp index c89b360a..08de9317 100644 --- a/src/ftxui/dom/text.cpp +++ b/src/ftxui/dom/text.cpp @@ -41,19 +41,28 @@ class Text : public Node { if (cell == "\n") { continue; } - screen.PixelAt(x, y).character = cell; - if(screen.PixelAt(x, y).selectable == true) + Pixel ¤tPixel = screen.PixelAt(x, y); + currentPixel.character = cell; + + if(currentPixel.selectable == true) { if(screen.selection_region.Contain(x, y)) { - screen.PixelAt(x, y).inverted ^= true; - screen.selection_text += screen.PixelAt(x, y).character; + currentPixel.inverted ^= true; + screen.selection_text += currentPixel.character; } else if(screen.selection_region.x_min <= x && screen.selection_region.x_max <= x && screen.selection_region.y_min <= y && screen.selection_region.y_max > y) { - screen.PixelAt(x, y).inverted ^= true; - screen.selection_text += screen.PixelAt(x, y).character; + currentPixel.inverted ^= true; + screen.selection_text += currentPixel.character; } + else if(screen.selection_region.x_min >= x && screen.selection_region.x_max >= x && + screen.selection_region.y_min < y && screen.selection_region.y_max >= y) + { + currentPixel.inverted ^= true; + screen.selection_text += currentPixel.character; + } + } ++x;