From a35ad98288eb0f9086c3e7efaf48066a58a3903b Mon Sep 17 00:00:00 2001 From: Chris Laplante Date: Thu, 12 May 2022 13:46:26 -0400 Subject: [PATCH] fix #341: make is_hidden() work for MultiProgress --- src/draw_target.rs | 15 +++++++++++++++ src/multi.rs | 8 ++++++++ 2 files changed, 23 insertions(+) diff --git a/src/draw_target.rs b/src/draw_target.rs index 24265295..dc83e59b 100644 --- a/src/draw_target.rs +++ b/src/draw_target.rs @@ -102,6 +102,7 @@ impl ProgressDrawTarget { match self.kind { TargetKind::Hidden => true, TargetKind::Term { ref term, .. } => !term.is_term(), + TargetKind::Multi { ref state, .. } => state.read().unwrap().is_hidden(), _ => false, } } @@ -434,3 +435,17 @@ impl DrawState { self.orphan_lines = 0; } } + +#[cfg(test)] +mod tests { + use crate::{MultiProgress, ProgressBar, ProgressDrawTarget}; + + #[test] + fn multi_is_hidden() { + let mp = MultiProgress::with_draw_target(ProgressDrawTarget::hidden()); + + let pb = mp.add(ProgressBar::new(100)); + assert!(mp.is_hidden()); + assert!(pb.is_hidden()); + } +} diff --git a/src/multi.rs b/src/multi.rs index 6b5155e2..cf00c89d 100644 --- a/src/multi.rs +++ b/src/multi.rs @@ -159,6 +159,10 @@ impl MultiProgress { pub fn clear(&self) -> io::Result<()> { self.state.write().unwrap().clear(Instant::now()) } + + pub fn is_hidden(&self) -> bool { + self.state.read().unwrap().is_hidden() + } } #[derive(Debug)] @@ -256,6 +260,10 @@ impl MultiState { DrawStateWrapper::for_multi(state, orphans) } + pub(crate) fn is_hidden(&self) -> bool { + self.draw_target.is_hidden() + } + pub(crate) fn suspend R, R>(&mut self, f: F, now: Instant) -> R { self.clear(now).unwrap(); let ret = f();