fix(scrollbar): change margin to individual start/end
This commit is contained in:
+1
-2
@@ -5,7 +5,6 @@ use crossterm::{
|
|||||||
};
|
};
|
||||||
use ratatui::{
|
use ratatui::{
|
||||||
backend::{Backend, CrosstermBackend},
|
backend::{Backend, CrosstermBackend},
|
||||||
layout::Margin,
|
|
||||||
style::{Color, Modifier, Style},
|
style::{Color, Modifier, Style},
|
||||||
widgets::{Block, Scrollbar, ScrollbarOrientation},
|
widgets::{Block, Scrollbar, ScrollbarOrientation},
|
||||||
Terminal,
|
Terminal,
|
||||||
@@ -125,7 +124,7 @@ fn run_app<B: Backend>(terminal: &mut Terminal<B>, mut app: App) -> io::Result<(
|
|||||||
.title("Tree Widget")
|
.title("Tree Widget")
|
||||||
.title_bottom(format!("{:?}", app.state)),
|
.title_bottom(format!("{:?}", app.state)),
|
||||||
)
|
)
|
||||||
.scrollbar_margin(Margin::new(0, 1))
|
.scrollbar_margin((1, 1))
|
||||||
.scrollbar(Some(
|
.scrollbar(Some(
|
||||||
Scrollbar::new(ScrollbarOrientation::VerticalRight)
|
Scrollbar::new(ScrollbarOrientation::VerticalRight)
|
||||||
.begin_symbol(None)
|
.begin_symbol(None)
|
||||||
|
|||||||
+11
-4
@@ -63,7 +63,7 @@ pub struct Tree<'a, Identifier> {
|
|||||||
#[cfg(feature = "experimental_scrollbar")]
|
#[cfg(feature = "experimental_scrollbar")]
|
||||||
scrollbar: Option<ratatui::widgets::Scrollbar<'a>>,
|
scrollbar: Option<ratatui::widgets::Scrollbar<'a>>,
|
||||||
#[cfg(feature = "experimental_scrollbar")]
|
#[cfg(feature = "experimental_scrollbar")]
|
||||||
scrollbar_margin: ratatui::layout::Margin,
|
scrollbar_margin: (u16, u16),
|
||||||
/// Style used as a base style for the widget
|
/// Style used as a base style for the widget
|
||||||
style: Style,
|
style: Style,
|
||||||
|
|
||||||
@@ -107,7 +107,7 @@ where
|
|||||||
#[cfg(feature = "experimental_scrollbar")]
|
#[cfg(feature = "experimental_scrollbar")]
|
||||||
scrollbar: None,
|
scrollbar: None,
|
||||||
#[cfg(feature = "experimental_scrollbar")]
|
#[cfg(feature = "experimental_scrollbar")]
|
||||||
scrollbar_margin: ratatui::layout::Margin::new(0, 0),
|
scrollbar_margin: (0, 0),
|
||||||
style: Style::new(),
|
style: Style::new(),
|
||||||
highlight_style: Style::new(),
|
highlight_style: Style::new(),
|
||||||
highlight_symbol: "",
|
highlight_symbol: "",
|
||||||
@@ -133,7 +133,7 @@ where
|
|||||||
|
|
||||||
#[cfg(feature = "experimental_scrollbar")]
|
#[cfg(feature = "experimental_scrollbar")]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub const fn scrollbar_margin(mut self, margin: ratatui::layout::Margin) -> Self {
|
pub const fn scrollbar_margin(mut self, margin: (u16, u16)) -> Self {
|
||||||
self.scrollbar_margin = margin;
|
self.scrollbar_margin = margin;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
@@ -257,7 +257,14 @@ where
|
|||||||
let mut scrollbar_state = ratatui::widgets::ScrollbarState::new(visible.len())
|
let mut scrollbar_state = ratatui::widgets::ScrollbarState::new(visible.len())
|
||||||
.position(start)
|
.position(start)
|
||||||
.viewport_content_length(height);
|
.viewport_content_length(height);
|
||||||
let scrollbar_area = full_area.inner(&self.scrollbar_margin);
|
let scrollbar_area = Rect {
|
||||||
|
y: full_area.y.saturating_add(self.scrollbar_margin.0),
|
||||||
|
height: full_area
|
||||||
|
.height
|
||||||
|
.saturating_sub(self.scrollbar_margin.0)
|
||||||
|
.saturating_sub(self.scrollbar_margin.1),
|
||||||
|
..full_area
|
||||||
|
};
|
||||||
scrollbar.render(scrollbar_area, buf, &mut scrollbar_state);
|
scrollbar.render(scrollbar_area, buf, &mut scrollbar_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user