mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: new ui.Text:scroll() API for setting text to scroll horizontally or vertically
This commit is contained in:
parent
2e1156f267
commit
53077f157c
2 changed files with 10 additions and 5 deletions
|
|
@ -23,9 +23,9 @@ pub struct Text {
|
|||
pub area: Area,
|
||||
|
||||
// TODO: block
|
||||
pub inner: ratatui::text::Text<'static>,
|
||||
pub wrap: u8,
|
||||
// TODO: scroll
|
||||
pub inner: ratatui::text::Text<'static>,
|
||||
pub wrap: u8,
|
||||
pub scroll: ratatui::layout::Position,
|
||||
}
|
||||
|
||||
impl Text {
|
||||
|
|
@ -58,7 +58,7 @@ impl Text {
|
|||
trans: impl Fn(yazi_config::popup::Position) -> ratatui::layout::Rect,
|
||||
) {
|
||||
let rect = self.area.transform(trans);
|
||||
if self.wrap == WRAP_NO {
|
||||
if self.wrap == WRAP_NO && self.scroll == Default::default() {
|
||||
self.inner.render(rect, buf);
|
||||
} else {
|
||||
ratatui::widgets::Paragraph::from(self).render(rect, buf);
|
||||
|
|
@ -130,7 +130,7 @@ impl From<Text> for ratatui::widgets::Paragraph<'static> {
|
|||
if value.wrap != WRAP_NO {
|
||||
p = p.wrap(ratatui::widgets::Wrap { trim: value.wrap == WRAP_TRIM });
|
||||
}
|
||||
p
|
||||
p.scroll((value.scroll.y, value.scroll.x))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -155,6 +155,10 @@ impl UserData for Text {
|
|||
};
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_function_mut("scroll", |_, (ud, x, y): (AnyUserData, u16, u16)| {
|
||||
ud.borrow_mut::<Self>()?.scroll = ratatui::layout::Position { x, y };
|
||||
Ok(ud)
|
||||
});
|
||||
methods.add_method("max_width", |_, me, ()| {
|
||||
Ok(me.inner.lines.iter().take(me.area.size().height as usize).map(|l| l.width()).max())
|
||||
});
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ impl Utils {
|
|||
area,
|
||||
inner,
|
||||
wrap: if YAZI.preview.wrap == PreviewWrap::Yes { WRAP } else { WRAP_NO },
|
||||
scroll: Default::default(),
|
||||
})];
|
||||
|
||||
emit!(Call(Cmd::new("mgr:update_peeked").with_any("lock", lock)));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue