Skip to content
Snippets Groups Projects
Unverified Commit 62c0b43c authored by Clément Roblot's avatar Clément Roblot Committed by GitHub
Browse files

Scrollbar coloring (#755)

This a proposed MR to fix #754. While building the scroll bar the pixels were completely reseted thus canceling any style previously applied to said pixels. This MR removes this resetting of the pixels and leaves only the drawing of the shape of the scroll bar.
parent c24a2742
No related branches found
No related tags found
No related merge requests found
...@@ -64,7 +64,6 @@ Element vscroll_indicator(Element child) { ...@@ -64,7 +64,6 @@ Element vscroll_indicator(Element child) {
const bool down = (start_y <= y_down) && (y_down <= start_y + size); const bool down = (start_y <= y_down) && (y_down <= start_y + size);
const char* c = up ? (down ? "┃" : "╹") : (down ? "╻" : " "); // NOLINT const char* c = up ? (down ? "┃" : "╹") : (down ? "╻" : " "); // NOLINT
screen.PixelAt(x, y) = Pixel();
screen.PixelAt(x, y).character = c; screen.PixelAt(x, y).character = c;
} }
} }
...@@ -121,7 +120,6 @@ Element hscroll_indicator(Element child) { ...@@ -121,7 +120,6 @@ Element hscroll_indicator(Element child) {
const char* c = const char* c =
left ? (right ? "─" : "╴") : (right ? "╶" : " "); // NOLINT left ? (right ? "─" : "╴") : (right ? "╶" : " "); // NOLINT
screen.PixelAt(x, y) = Pixel();
screen.PixelAt(x, y).character = c; screen.PixelAt(x, y).character = c;
} }
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "ftxui/dom/elements.hpp" // for operator|, Element, operator|=, text, vbox, Elements, border, focus, frame, vscroll_indicator #include "ftxui/dom/elements.hpp" // for operator|, Element, operator|=, text, vbox, Elements, border, focus, frame, vscroll_indicator
#include "ftxui/dom/node.hpp" // for Render #include "ftxui/dom/node.hpp" // for Render
#include "ftxui/screen/screen.hpp" // for Screen #include "ftxui/screen/screen.hpp" // for Screen
#include "ftxui/screen/color.hpp" // for Color, Color::Red
// NOLINTBEGIN // NOLINTBEGIN
namespace ftxui { namespace ftxui {
...@@ -127,6 +128,60 @@ TEST(ScrollIndicator, BasicVertical) { ...@@ -127,6 +128,60 @@ TEST(ScrollIndicator, BasicVertical) {
"╰────╯"); "╰────╯");
} }
TEST(ScrollIndicator, VerticalColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│0 ┃│\r\n"
// "│1 ┃│\r\n"
// "│2 │\r\n"
// "│3 │\r\n"
// "╰────╯"
auto element = MakeVerticalList(0, 10) | color(Color::Red);
Screen screen(6, 6);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 4).foreground_color, Color::Red);
EXPECT_EQ(screen.PixelAt(4, 4).background_color, Color());
}
TEST(ScrollIndicator, VerticalBackgroundColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│0 ┃│\r\n"
// "│1 ┃│\r\n"
// "│2 │\r\n"
// "│3 │\r\n"
// "╰────╯"
auto element = MakeVerticalList(0, 10) | bgcolor(Color::Red);
Screen screen(6, 6);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 4).foreground_color, Color());
EXPECT_EQ(screen.PixelAt(4, 4).background_color, Color::Red);
}
TEST(ScrollIndicator, VerticalFullColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│0 ┃│\r\n"
// "│1 ┃│\r\n"
// "│2 │\r\n"
// "│3 │\r\n"
// "╰────╯"
auto element = MakeVerticalList(0, 10) | color(Color::Red) | bgcolor(Color::Red);
Screen screen(6, 6);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 4).foreground_color, Color::Red);
EXPECT_EQ(screen.PixelAt(4, 4).background_color, Color::Red);
}
TEST(ScrollIndicator, BasicHorizontal) { TEST(ScrollIndicator, BasicHorizontal) {
EXPECT_EQ(PrintHorizontalList(0, 10), EXPECT_EQ(PrintHorizontalList(0, 10),
"╭────╮\r\n" "╭────╮\r\n"
...@@ -177,6 +232,54 @@ TEST(ScrollIndicator, BasicHorizontal) { ...@@ -177,6 +232,54 @@ TEST(ScrollIndicator, BasicHorizontal) {
"╰────╯"); "╰────╯");
} }
TEST(ScrollIndicator, HorizontalColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│5678│\r\n"
// "│ ──│\r\n"
// "╰────╯"
auto element = MakeHorizontalList(6, 10) | color(Color::Red);
Screen screen(6, 4);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 2).foreground_color, Color::Red);
EXPECT_EQ(screen.PixelAt(4, 2).background_color, Color());
}
TEST(ScrollIndicator, HorizontalBackgroundColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│5678│\r\n"
// "│ ──│\r\n"
// "╰────╯"
auto element = MakeHorizontalList(6, 10) | bgcolor(Color::Red);
Screen screen(6, 4);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 2).foreground_color, Color());
EXPECT_EQ(screen.PixelAt(4, 2).background_color, Color::Red);
}
TEST(ScrollIndicator, HorizontalFullColorable) {
// The list we generate looks like this
// "╭────╮\r\n"
// "│5678│\r\n"
// "│ ──│\r\n"
// "╰────╯"
auto element = MakeHorizontalList(6, 10) | color(Color::Red) | bgcolor(Color::Red);
Screen screen(6, 4);
Render(screen, element);
EXPECT_EQ(screen.PixelAt(4, 2).foreground_color, Color::Red);
EXPECT_EQ(screen.PixelAt(4, 2).background_color, Color::Red);
}
namespace { namespace {
Element MakeHorizontalFlexboxList(int n) { Element MakeHorizontalFlexboxList(int n) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment