summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-10 12:55:56 +0100
committerrabite <rabite@posteo.de>2019-03-10 12:55:56 +0100
commit9fcc12f464132d75660f331de5588ba454327fa3 (patch)
tree027eb5bdf2dcfd8667540dab7b6fed25c0a01d56 /src
parente1a9d62b16647c10297269c077c177067cf2d517 (diff)
crash fix
Diffstat (limited to 'src')
-rw-r--r--src/proclist.rs4
-rw-r--r--src/tabview.rs20
2 files changed, 18 insertions, 6 deletions
diff --git a/src/proclist.rs b/src/proclist.rs
index acacf2e..eac107c 100644
--- a/src/proclist.rs
+++ b/src/proclist.rs
@@ -172,10 +172,9 @@ impl ListView<Vec<Process>> {
Ok(format!(
"{}{}{}{}{}{}",
termion::cursor::Save,
- format!("{}{}{:padding$}{}",
+ format!("{}{:padding$}{}",
term::normal_color(),
&sized_string,
- " ",
term::normal_color(),
padding = padding as usize),
termion::cursor::Restore,
@@ -271,6 +270,7 @@ impl ProcView {
}
pub fn remove_proc(&mut self) -> HResult<()> {
+ if self.get_listview().content.len() == 0 { return Ok(()) }
self.get_listview().remove_proc()?;
self.get_textview().change_to(Box::new(move |_, core| {
let mut textview = TextView::new_blank(&core);
diff --git a/src/tabview.rs b/src/tabview.rs
index 77abdb4..cd171c5 100644
--- a/src/tabview.rs
+++ b/src/tabview.rs
@@ -43,15 +43,28 @@ impl<T> TabView<T> where T: Widget, TabView<T>: Tabbable {
pub fn push_widget(&mut self, widget: T) -> HResult<()> {
self.widgets.push(widget);
- self.refresh()
+ Ok(())
}
pub fn pop_widget(&mut self) -> HResult<T> {
let widget = self.widgets.pop()?;
- self.refresh()?;
+ if self.widgets.len() <= self.active {
+ self.active -= 1;
+ }
Ok(widget)
}
+ pub fn remove_widget(&mut self, index: usize) -> HResult<()> {
+ let len = self.widgets.len();
+ if len > 1 {
+ self.widgets.remove(index);
+ if index+1 == len {
+ self.active -= 1;
+ }
+ }
+ Ok(())
+ }
+
pub fn active_tab_(&self) -> &T {
&self.widgets[self.active]
}
@@ -61,8 +74,7 @@ impl<T> TabView<T> where T: Widget, TabView<T>: Tabbable {
}
pub fn close_tab_(&mut self) -> HResult<()> {
- self.pop_widget()?;
- self.active -= 1;
+ self.remove_widget(self.active).log();
Ok(())
}