From bb464481c008fbebc17297a475ebbbfb5f0387a4 Mon Sep 17 00:00:00 2001 From: Matthew Toohey Date: Sun, 23 Feb 2025 11:41:17 -0500 Subject: [PATCH 1/2] fix: prevent graph lines from showing up behind legend --- src/canvas/components/time_graph/time_chart.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/canvas/components/time_graph/time_chart.rs b/src/canvas/components/time_graph/time_chart.rs index 69af0e81a..aa6509ea2 100644 --- a/src/canvas/components/time_graph/time_chart.rs +++ b/src/canvas/components/time_graph/time_chart.rs @@ -12,7 +12,7 @@ use std::{cmp::max, str::FromStr, time::Instant}; use canvas::*; use tui::{ buffer::Buffer, - layout::{Alignment, Constraint, Flex, Layout, Rect}, + layout::{Alignment, Constraint, Flex, Layout, Position, Rect}, style::{Color, Style, Styled}, symbols::{self, Marker}, text::{Line, Span}, @@ -872,10 +872,13 @@ impl Widget for TimeChart<'_> { if let Some(legend_area) = layout.legend_area { buf.set_style(legend_area, original_style); - Block::default() + let block = Block::default() .borders(Borders::ALL) - .border_style(self.legend_style) - .render(legend_area, buf); + .border_style(self.legend_style); + for Position { x, y } in block.inner(legend_area).positions() { + buf[(x, y)].set_symbol(" "); + } + block.render(legend_area, buf); for (i, (dataset_name, dataset_style)) in self .datasets From 9a27c41149c81ef18164834093d4280064e6727e Mon Sep 17 00:00:00 2001 From: ClementTsang <34804052+ClementTsang@users.noreply.github.com> Date: Fri, 28 Feb 2025 03:51:28 -0500 Subject: [PATCH 2/2] use cell_mut instead --- src/canvas/components/time_graph/time_chart.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/canvas/components/time_graph/time_chart.rs b/src/canvas/components/time_graph/time_chart.rs index aa6509ea2..d7bcc99f4 100644 --- a/src/canvas/components/time_graph/time_chart.rs +++ b/src/canvas/components/time_graph/time_chart.rs @@ -12,7 +12,7 @@ use std::{cmp::max, str::FromStr, time::Instant}; use canvas::*; use tui::{ buffer::Buffer, - layout::{Alignment, Constraint, Flex, Layout, Position, Rect}, + layout::{Alignment, Constraint, Flex, Layout, Rect}, style::{Color, Style, Styled}, symbols::{self, Marker}, text::{Line, Span}, @@ -875,8 +875,10 @@ impl Widget for TimeChart<'_> { let block = Block::default() .borders(Borders::ALL) .border_style(self.legend_style); - for Position { x, y } in block.inner(legend_area).positions() { - buf[(x, y)].set_symbol(" "); + for pos in block.inner(legend_area).positions() { + if let Some(cell) = buf.cell_mut(pos) { + cell.set_symbol(" "); + } } block.render(legend_area, buf);