diff options
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/views/tui_folder_view.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/ui/views/tui_folder_view.rs b/src/ui/views/tui_folder_view.rs index 9cce97a..8fa23ad 100644 --- a/src/ui/views/tui_folder_view.rs +++ b/src/ui/views/tui_folder_view.rs @@ -3,6 +3,7 @@ use tui::layout::{Constraint, Direction, Layout, Rect}; use tui::style::{Color, Style}; use tui::text::Span; use tui::widgets::{Block, Borders, Paragraph, Widget, Wrap}; +use tui::symbols::line::{HORIZONTAL_UP,HORIZONTAL_DOWN}; use crate::context::AppContext; use crate::ui::widgets::{TuiDirList, TuiDirListDetailed, TuiFooter, TuiTabBar, TuiTopBar}; @@ -48,6 +49,7 @@ impl<'a> Widget for TuiFolderView<'a> { height: area.height - 2, ..area }; + let block = Block::default().borders(Borders::ALL); let inner = block.inner(area); block.render(area, buf); @@ -57,6 +59,23 @@ impl<'a> Widget for TuiFolderView<'a> { .constraints(constraints.as_ref()) .split(inner); + // Render inner borders properly. + { + let top = area.top(); + let bottom = area.bottom() - 1; + let left = layout_rect[1].left() - 1; + let right = layout_rect[2].left(); + let intersections = Intersections { top, bottom, left, right }; + + if parent_list.as_ref().is_some() { + intersections.render_left(buf); + } + if child_list.as_ref().is_some() { + intersections.render_right(buf); + } + } + + let block = Block::default().borders(Borders::RIGHT); let inner1 = block.inner(layout_rect[0]); block.render(layout_rect[0], buf); @@ -160,3 +179,26 @@ impl<'a> Widget for TuiFolderView<'a> { } } } + + +struct Intersections { + top: u16, + bottom: u16, + left: u16, + right: u16, +} + +impl Intersections { + fn render_left(&self,buf: &mut Buffer) { + buf.get_mut(self.left, self.top) + .set_symbol(HORIZONTAL_DOWN); + buf.get_mut(self.left, self.bottom) + .set_symbol(HORIZONTAL_UP); + } + fn render_right(&self,buf: &mut Buffer) { + buf.get_mut(self.right, self.top) + .set_symbol(HORIZONTAL_DOWN); + buf.get_mut(self.right, self.bottom) + .set_symbol(HORIZONTAL_UP); + } +} |