summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorPrince <princedaryl3@tutanota.com>2021-05-13 01:09:38 +0300
committerPrince <princedaryl3@tutanota.com>2021-05-13 01:09:38 +0300
commitb2890b9058f3c6078869633e0c5a97cfee0e15a8 (patch)
tree635b7f183b4a2b4369d2e7810e076f008fd63c70 /src/ui
parented7f9c1a87cf4afe7cd25dcf2d3db7a512d9077d (diff)
fix rendering of inner borders.
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/views/tui_folder_view.rs42
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);
+ }
+}