fix(ui): render detail popup labels in bold

Span::style assigns rather than patches, so chaining it after bold()
discarded the modifier that bold() had just set and every detail popup
label rendered plain. Apply the modifier to the style itself instead.

Snapshots compare rendered text and cannot observe styling, so this is
pinned by asserting the label span's modifier directly.
This commit is contained in:
Dark-Alex-17 committed 2026-09-03 16:31:12 -06:00
1 parent a311e2b895
commit da6c9e7b66
5 files changed
+16 -6

No files matched your search

+2 -2
View File
@@ -13,7 +13,7 @@ use crate::ui::widgets::popup::{Popup, Size};
use crate::ui::{DrawUi, draw_popup, draw_tabs}; use crate::ui::{DrawUi, draw_popup, draw_tabs};
use ratatui::Frame; use ratatui::Frame;
use ratatui::layout::{Alignment, Constraint, Rect}; use ratatui::layout::{Alignment, Constraint, Rect};
use ratatui::style::{Style, Stylize}; use ratatui::style::Style;
use ratatui::text::{Line, Span, Text}; use ratatui::text::{Line, Span, Text};
use ratatui::widgets::{Cell, Paragraph, Row, Wrap}; use ratatui::widgets::{Cell, Paragraph, Row, Wrap};
@@ -97,7 +97,7 @@ fn draw_track_details(f: &mut Frame<'_>, app: &App<'_>, area: Rect) {
let style = style_from_status(&track); let style = style_from_status(&track);
Line::from(vec![ Line::from(vec![
title.bold().style(style), Span::styled(title, style.bold()),
Span::styled(split[1..].join(":"), style), Span::styled(split[1..].join(":"), style),
]) ])
}) })
+1 -1
View File
@@ -204,7 +204,7 @@ fn draw_movie_details(f: &mut Frame<'_>, app: &App<'_>, area: Rect) {
let style = style_from_download_status(download_status, is_monitored, status.clone()); let style = style_from_download_status(download_status, is_monitored, status.clone());
Line::from(vec![ Line::from(vec![
title.bold().style(style), Span::styled(title, style.bold()),
Span::styled(split[1..].join(":"), style), Span::styled(split[1..].join(":"), style),
]) ])
}) })
@@ -9,7 +9,7 @@ use crate::ui::widgets::popup::Size;
use crate::ui::{DrawUi, draw_popup}; use crate::ui::{DrawUi, draw_popup};
use ratatui::Frame; use ratatui::Frame;
use ratatui::layout::Rect; use ratatui::layout::Rect;
use ratatui::style::{Style, Stylize}; use ratatui::style::Style;
use ratatui::text::{Line, Span, Text}; use ratatui::text::{Line, Span, Text};
use ratatui::widgets::{Paragraph, Wrap}; use ratatui::widgets::{Paragraph, Wrap};
@@ -97,7 +97,7 @@ fn edition_detail_line(line: &str, style: Style) -> Line<'static> {
match line.split_once(':') { match line.split_once(':') {
Some((label, value)) => Line::from(vec![ Some((label, value)) => Line::from(vec![
format!("{label}:").bold().style(style), Span::styled(format!("{label}:"), style.bold()),
Span::styled(value.to_owned(), style), Span::styled(value.to_owned(), style),
]), ]),
None => Line::from(Span::styled(line.to_owned(), style)), None => Line::from(Span::styled(line.to_owned(), style)),
@@ -1,6 +1,7 @@
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use pretty_assertions::assert_eq; use pretty_assertions::assert_eq;
use ratatui::style::Modifier;
use ratatui::text::Line; use ratatui::text::Line;
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
@@ -58,6 +59,15 @@ mod tests {
assert_eq!(span_contents(&line), vec!["Title:", " Test Edition"]); assert_eq!(span_contents(&line), vec!["Title:", " Test Edition"]);
} }
#[test]
fn test_edition_detail_line_renders_the_label_in_bold() {
let line = edition_detail_line("Title: Test Edition", unmonitored_style());
assert!(line.spans[0].style.add_modifier.contains(Modifier::BOLD));
assert_eq!(line.spans[0].style.fg, unmonitored_style().fg);
assert!(!line.spans[1].style.add_modifier.contains(Modifier::BOLD));
}
#[test] #[test]
fn test_edition_detail_line_keeps_colons_within_a_value() { fn test_edition_detail_line_keeps_colons_within_a_value() {
let line = edition_detail_line("Release Date: 2023-01-05 15:00:00 UTC", primary_style()); let line = edition_detail_line("Release Date: 2023-01-05 15:00:00 UTC", primary_style());
@@ -157,7 +157,7 @@ fn draw_episode_details(f: &mut Frame<'_>, app: &App<'_>, area: Rect) {
let style = style_from_status(download, &episode); let style = style_from_status(download, &episode);
Line::from(vec![ Line::from(vec![
title.bold().style(style), Span::styled(title, style.bold()),
Span::styled(split[1..].join(":"), style), Span::styled(split[1..].join(":"), style),
]) ])
}) })