Skip to content

Commit

Permalink
fix #341: make is_hidden() work for MultiProgress
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-laplante committed May 12, 2022
1 parent 6a9b2ce commit 85dc9d0
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/draw_target.rs
Expand Up @@ -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,
}
}
Expand Down Expand Up @@ -434,3 +435,21 @@ 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());

mp.set_draw_target(ProgressDrawTarget::stdout());
assert!(!mp.is_hidden());
assert!(!pb.is_hidden());
}
}
8 changes: 8 additions & 0 deletions src/multi.rs
Expand Up @@ -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)]
Expand Down Expand Up @@ -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<F: FnOnce() -> R, R>(&mut self, f: F, now: Instant) -> R {
self.clear(now).unwrap();
let ret = f();
Expand Down

0 comments on commit 85dc9d0

Please sign in to comment.