From 50a81bea3165e0e83523100ed4a8bafa9f813692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E9=9B=85=20=C2=B7=20Misaki=20Masa?= Date: Tue, 24 Dec 2024 16:43:19 +0800 Subject: [PATCH] fix: element style of `ui.Text` was not applied to the entire area (#2093) --- yazi-plugin/src/elements/text.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/yazi-plugin/src/elements/text.rs b/yazi-plugin/src/elements/text.rs index 119bfa25..6f66b34e 100644 --- a/yazi-plugin/src/elements/text.rs +++ b/yazi-plugin/src/elements/text.rs @@ -1,3 +1,5 @@ +use std::mem; + use ansi_to_tui::IntoText; use mlua::{ExternalError, ExternalResult, FromLua, IntoLua, Lua, Table, UserData, Value}; use ratatui::widgets::Widget; @@ -56,8 +58,11 @@ impl Text { trans: impl Fn(yazi_config::popup::Position) -> ratatui::layout::Rect, ) { let rect = self.area.transform(trans); - let p: ratatui::widgets::Paragraph = self.into(); - p.render(rect, buf); + if self.wrap == WRAP_NO { + self.inner.render(rect, buf); + } else { + ratatui::widgets::Paragraph::from(self).render(rect, buf); + } } } @@ -114,15 +119,18 @@ impl From for ratatui::text::Text<'static> { } impl From for ratatui::widgets::Paragraph<'static> { - fn from(value: Text) -> Self { - let align = value.inner.alignment.unwrap_or_default(); - let mut p = ratatui::widgets::Paragraph::new(value.inner); + fn from(mut value: Text) -> Self { + let align = value.inner.alignment.take(); + let style = mem::take(&mut value.inner.style); + let mut p = ratatui::widgets::Paragraph::new(value.inner).style(style); + if let Some(align) = align { + p = p.alignment(align); + } if value.wrap != WRAP_NO { p = p.wrap(ratatui::widgets::Wrap { trim: value.wrap == WRAP_TRIM }); } - - p.alignment(align) + p } }