diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-12 10:30:19 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-12 10:30:19 -0500 |
commit | 468e607c5d1cd5d554ae356fd3c8e78425840347 (patch) | |
tree | 37790a6abe8154836505ab3d1a7e8aaf26ada8b5 /src/ui/widgets | |
parent | 916d72c42cfc7bcb8fc560e17cb3bd75c00757da (diff) |
fix crash caused by char boundary slicing
Diffstat (limited to 'src/ui/widgets')
-rw-r--r-- | src/ui/widgets/tui_tab.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/ui/widgets/tui_tab.rs b/src/ui/widgets/tui_tab.rs index f4045ed..73b4d1d 100644 --- a/src/ui/widgets/tui_tab.rs +++ b/src/ui/widgets/tui_tab.rs @@ -4,6 +4,8 @@ use tui::style::{Modifier, Style}; use tui::text::{Span, Spans}; use tui::widgets::{Paragraph, Widget, Wrap}; +use unicode_width::UnicodeWidthStr; + pub struct TuiTabBar<'a> { name: &'a str, curr: usize, @@ -22,7 +24,7 @@ impl<'a> Widget for TuiTabBar<'a> { let str1 = format!("{}/{}", self.curr + 1, self.len); let str2 = { - let space_avail = if str1.len() >= area.width as usize { + let space_avail = if str1.width() >= area.width as usize { 0 } else { area.width as usize - str1.len() @@ -30,7 +32,7 @@ impl<'a> Widget for TuiTabBar<'a> { if space_avail >= self.name.len() { self.name } else { - &self.name[..space_avail] + "" } }; let text = Spans::from(vec![ |