Skip to content

Commit

Permalink
Skip drawing MultiProgress if backing draw target is hidden (#603)
Browse files Browse the repository at this point in the history
  • Loading branch information
djc committed Nov 10, 2023
1 parent 678e8aa commit f33789e
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 12 deletions.
8 changes: 4 additions & 4 deletions src/draw_target.rs
Expand Up @@ -126,12 +126,12 @@ impl ProgressDrawTarget {
}

/// Returns the current width of the draw target.
pub(crate) fn width(&self) -> u16 {
pub(crate) fn width(&self) -> Option<u16> {
match self.kind {
TargetKind::Term { ref term, .. } => term.size().1,
TargetKind::Term { ref term, .. } => Some(term.size().1),
TargetKind::Multi { ref state, .. } => state.read().unwrap().width(),
TargetKind::Hidden => 0,
TargetKind::TermLike { ref inner, .. } => inner.width(),
TargetKind::TermLike { ref inner, .. } => Some(inner.width()),
TargetKind::Hidden => None,
}
}

Expand Down
9 changes: 7 additions & 2 deletions src/multi.rs
Expand Up @@ -267,7 +267,12 @@ impl MultiState {
if panicking() {
return Ok(());
}
let width = self.width() as f64;

let width = match self.width() {
Some(width) => width as f64,
None => return Ok(()),
};

// Calculate real length based on terminal width
// This take in account linewrap from terminal
fn real_len(lines: &[String], width: f64) -> usize {
Expand Down Expand Up @@ -393,7 +398,7 @@ impl MultiState {
ret
}

pub(crate) fn width(&self) -> u16 {
pub(crate) fn width(&self) -> Option<u16> {
self.draw_target.width()
}

Expand Down
17 changes: 11 additions & 6 deletions src/state.rs
Expand Up @@ -151,10 +151,13 @@ impl BarState {
} else {
draw_state.lines.extend(lines);
}

draw_state.orphan_lines_count = draw_state.lines.len();
if !matches!(self.state.status, Status::DoneHidden) {
self.style
.format_state(&self.state, &mut draw_state.lines, width);
if let Some(width) = width {
if !matches!(self.state.status, Status::DoneHidden) {
self.style
.format_state(&self.state, &mut draw_state.lines, width);
}
}

drop(draw_state);
Expand Down Expand Up @@ -188,9 +191,11 @@ impl BarState {

let mut draw_state = drawable.state();

if !matches!(self.state.status, Status::DoneHidden) {
self.style
.format_state(&self.state, &mut draw_state.lines, width);
if let Some(width) = width {
if !matches!(self.state.status, Status::DoneHidden) {
self.style
.format_state(&self.state, &mut draw_state.lines, width);
}
}

drop(draw_state);
Expand Down

0 comments on commit f33789e

Please sign in to comment.