summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-12-15 20:04:06 -0500
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-12-15 20:04:06 -0500
commit2f3b4423a9e9c6f57bdf9e83052bbcda9ad121c1 (patch)
treeeca6acb73733fac597f2e4cf472778dc4b045160
parentc4d85b59ff124e0ea047be352ab667e1b0d03a5c (diff)
parent8a4b1c17d5b539c07daaf5af4f3187247b47c626 (diff)
Merge branch 'main' into dev
-rw-r--r--config/joshuto.toml2
-rw-r--r--docs/configuration/joshuto.toml.md3
-rw-r--r--src/config/general/display_crude.rs5
-rw-r--r--src/ui/views/tui_folder_view.rs16
-rw-r--r--src/ui/widgets/tui_dirlist.rs5
5 files changed, 19 insertions, 12 deletions
diff --git a/config/joshuto.toml b/config/joshuto.toml
index 40d0e00..22a18bb 100644
--- a/config/joshuto.toml
+++ b/config/joshuto.toml
@@ -4,7 +4,7 @@ use_trash = true
[display]
automatically_count_files = false
collapse_preview = true
-# ratios for parent view, current view and preview
+# ratios for parent view (optional), current view and preview
column_ratio = [1, 4, 4]
scroll_offset = 6
show_borders = true
diff --git a/docs/configuration/joshuto.toml.md b/docs/configuration/joshuto.toml.md
index c87c3ff..eeacf58 100644
--- a/docs/configuration/joshuto.toml.md
+++ b/docs/configuration/joshuto.toml.md
@@ -21,7 +21,8 @@ max_preview_size = 2097152 # 2MB
[display]
# Collapse the preview window when there is no preview available
collapse_preview = true
-# Ratios for parent view, current view and preview
+# Ratios for parent view, current view and preview. You can specify 0 for
+# parent view or omit it (So there are only 2 nums) and it won't be displayed
column_ratio = [1, 3, 4]
# Show borders around different views
show_borders = true
diff --git a/src/config/general/display_crude.rs b/src/config/general/display_crude.rs
index 26473ae..409091a 100644
--- a/src/config/general/display_crude.rs
+++ b/src/config/general/display_crude.rs
@@ -28,7 +28,7 @@ pub struct DisplayOptionCrude {
pub collapse_preview: bool,
#[serde(default)]
- pub column_ratio: Option<[usize; 3]>,
+ pub column_ratio: Option<Vec<usize>>,
#[serde(default = "default_scroll_offset")]
pub scroll_offset: usize,
@@ -76,7 +76,8 @@ impl std::default::Default for DisplayOptionCrude {
impl From<DisplayOptionCrude> for DisplayOption {
fn from(crude: DisplayOptionCrude) -> Self {
let column_ratio = match crude.column_ratio {
- Some(s) => (s[0], s[1], s[2]),
+ Some(s) if s.len() == 3 => (s[0], s[1], s[2]),
+ Some(s) if s.len() == 2 => (0, s[0], s[1]),
_ => default_column_ratio(),
};
diff --git a/src/ui/views/tui_folder_view.rs b/src/ui/views/tui_folder_view.rs
index 9284674..de3c8a0 100644
--- a/src/ui/views/tui_folder_view.rs
+++ b/src/ui/views/tui_folder_view.rs
@@ -32,7 +32,6 @@ impl<'a> Widget for TuiFolderView<'a> {
let curr_tab = self.context.tab_context_ref().curr_tab_ref();
let curr_list = curr_tab.curr_list_ref();
- let parent_list = curr_tab.parent_list_ref();
let child_list = curr_tab.child_list_ref();
let curr_entry = curr_list.and_then(|c| c.curr_entry_ref());
@@ -87,7 +86,11 @@ impl<'a> Widget for TuiFolderView<'a> {
right,
};
- intersections.render_left(buf);
+ // Won't render intersections if parent view is turned off
+ match constraints[0] {
+ Constraint::Ratio(0, _) => (),
+ _ => intersections.render_left(buf),
+ }
if default_layout {
intersections.render_right(buf);
}
@@ -121,8 +124,13 @@ impl<'a> Widget for TuiFolderView<'a> {
};
// render parent view
- if let Some(list) = parent_list.as_ref() {
- TuiDirList::new(list).render(layout_rect[0], buf);
+ match constraints[0] {
+ Constraint::Ratio(0, _) => (),
+ _ => {
+ if let Some(list) = curr_tab.parent_list_ref().as_ref() {
+ TuiDirList::new(list).render(layout_rect[0], buf);
+ }
+ }
}
// render current view
diff --git a/src/ui/widgets/tui_dirlist.rs b/src/ui/widgets/tui_dirlist.rs
index f66c9f0..9a14e6a 100644
--- a/src/ui/widgets/tui_dirlist.rs
+++ b/src/ui/widgets/tui_dirlist.rs
@@ -20,10 +20,7 @@ impl<'a> TuiDirList<'a> {
impl<'a> Widget for TuiDirList<'a> {
fn render(self, area: Rect, buf: &mut Buffer) {
- if area.width < 1 || area.height < 1 {
- return;
- }
- if area.width < 4 {
+ if area.width < 4 || area.height < 1 {
return;
}
let x = area.left();