fix: element style of ui.Text was not applied to the entire area (#2093)

This commit is contained in:
三咲雅 · Misaki Masa 2024-12-24 16:43:19 +08:00 committed by GitHub
parent d746ae8338
commit 50a81bea31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,3 +1,5 @@
use std::mem;
use ansi_to_tui::IntoText; use ansi_to_tui::IntoText;
use mlua::{ExternalError, ExternalResult, FromLua, IntoLua, Lua, Table, UserData, Value}; use mlua::{ExternalError, ExternalResult, FromLua, IntoLua, Lua, Table, UserData, Value};
use ratatui::widgets::Widget; use ratatui::widgets::Widget;
@ -56,8 +58,11 @@ impl Text {
trans: impl Fn(yazi_config::popup::Position) -> ratatui::layout::Rect, trans: impl Fn(yazi_config::popup::Position) -> ratatui::layout::Rect,
) { ) {
let rect = self.area.transform(trans); let rect = self.area.transform(trans);
let p: ratatui::widgets::Paragraph = self.into(); if self.wrap == WRAP_NO {
p.render(rect, buf); self.inner.render(rect, buf);
} else {
ratatui::widgets::Paragraph::from(self).render(rect, buf);
}
} }
} }
@ -114,15 +119,18 @@ impl From<Text> for ratatui::text::Text<'static> {
} }
impl From<Text> for ratatui::widgets::Paragraph<'static> { impl From<Text> for ratatui::widgets::Paragraph<'static> {
fn from(value: Text) -> Self { fn from(mut value: Text) -> Self {
let align = value.inner.alignment.unwrap_or_default(); let align = value.inner.alignment.take();
let mut p = ratatui::widgets::Paragraph::new(value.inner); 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 { if value.wrap != WRAP_NO {
p = p.wrap(ratatui::widgets::Wrap { trim: value.wrap == WRAP_TRIM }); p = p.wrap(ratatui::widgets::Wrap { trim: value.wrap == WRAP_TRIM });
} }
p
p.alignment(align)
} }
} }