aboutsummaryrefslogtreecommitdiffstats
path: root/default-plugins/session-manager/src/ui
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-03-26 16:37:42 +0100
committerGitHub <noreply@github.com>2024-03-26 16:37:42 +0100
commit631ffd9bc46e9b4f79794525793e0cd2b76a10fa (patch)
tree831e987e3dfbc28a3097f5b5ebae93ef64ab67f1 /default-plugins/session-manager/src/ui
parentdocs(changelog): binding ctrl space (diff)
downloadsl0ppij-631ffd9bc46e9b4f79794525793e0cd2b76a10fa.tar.gz
sl0ppij-631ffd9bc46e9b4f79794525793e0cd2b76a10fa.tar.xz
sl0ppij-631ffd9bc46e9b4f79794525793e0cd2b76a10fa.zip
fix(ui): session manager UI fixes (#3226)
* fix(ui): display new session folder prompt always * fix(ui): truncate session name and error on too long a name * fix(ui): scrolling layout list in welcome screen * style(fmt): rustfmt
Diffstat (limited to 'default-plugins/session-manager/src/ui')
-rw-r--r--default-plugins/session-manager/src/ui/components.rs41
1 files changed, 29 insertions, 12 deletions
diff --git a/default-plugins/session-manager/src/ui/components.rs b/default-plugins/session-manager/src/ui/components.rs
index d44fddf4..5c265f54 100644
--- a/default-plugins/session-manager/src/ui/components.rs
+++ b/default-plugins/session-manager/src/ui/components.rs
@@ -709,6 +709,23 @@ pub fn render_new_session_block(
long_instruction,
);
} else {
+ let space_for_new_session_name =
+ max_cols_of_new_session_block.saturating_sub(prompt.width() + 18);
+ let new_session_name = if new_session_name.width() > space_for_new_session_name {
+ let mut truncated = String::new();
+ for character in new_session_name.chars().rev() {
+ if truncated.width() + character.width().unwrap_or(0)
+ < space_for_new_session_name
+ {
+ truncated.push(character);
+ } else {
+ break;
+ }
+ }
+ format!("...{}", truncated.chars().rev().collect::<String>())
+ } else {
+ new_session_name.to_owned()
+ };
println!(
"\u{1b}[m{}{} {}_ {}",
format!("\u{1b}[{};{}H", y + 1, x + 1),
@@ -747,18 +764,23 @@ pub fn render_new_session_block(
}
render_layout_selection_list(
new_session_info,
- colors,
- max_rows_of_new_session_block.saturating_sub(1),
+ max_rows_of_new_session_block.saturating_sub(8),
max_cols_of_new_session_block,
x,
y + 1,
);
}
+ render_new_session_folder_prompt(
+ new_session_info,
+ colors,
+ x,
+ (y + max_rows_of_new_session_block).saturating_sub(3),
+ max_cols_of_new_session_block,
+ );
}
pub fn render_layout_selection_list(
new_session_info: &NewSessionInfo,
- colors: Colors,
max_rows_of_new_session_block: usize,
max_cols_of_new_session_block: usize,
x: usize,
@@ -786,8 +808,10 @@ pub fn render_layout_selection_list(
print_text_with_coordinates(layout_indication_line, x, y + 1, None, None);
println!();
let mut table = Table::new();
- for (i, (layout_info, indices, is_selected)) in
- new_session_info.layouts_to_render().into_iter().enumerate()
+ for (i, (layout_info, indices, is_selected)) in new_session_info
+ .layouts_to_render(max_rows_of_new_session_block)
+ .into_iter()
+ .enumerate()
{
let layout_name = layout_info.name();
let layout_name_len = layout_name.width();
@@ -818,13 +842,6 @@ pub fn render_layout_selection_list(
}
let table_y = y + 3;
print_table_with_coordinates(table, x, table_y, None, None);
- render_new_session_folder_prompt(
- new_session_info,
- colors,
- x,
- (y + max_rows_of_new_session_block).saturating_sub(3),
- max_cols_of_new_session_block,
- );
}
pub fn render_error(error_text: &str, rows: usize, columns: usize, x: usize, y: usize) {