diff --git a/bar.go b/bar.go index 358cb04..4917359 100644 --- a/bar.go +++ b/bar.go @@ -54,9 +54,9 @@ lastN int64 iterated bool trimSpace bool - toComplete bool + completed bool completeFlushed bool - ignoreComplete bool + triggerComplete bool dropOnComplete bool noPop bool aDecorators []decor.Decorator @@ -159,19 +159,18 @@ // SetTotal sets total dynamically. // If total is less than or equal to zero it takes progress' current value. -// A complete flag enables or disables complete event on `current >= total`. -func (b *Bar) SetTotal(total int64, complete bool) { - select { - case b.operateState <- func(s *bState) { - s.ignoreComplete = !complete +func (b *Bar) SetTotal(total int64, triggerComplete bool) { + select { + case b.operateState <- func(s *bState) { + s.triggerComplete = triggerComplete if total <= 0 { s.total = s.current } else { s.total = total } - if !s.ignoreComplete && !s.toComplete { + if s.triggerComplete && !s.completed { s.current = s.total - s.toComplete = true + s.completed = true go b.refreshTillShutdown() } }: @@ -187,9 +186,9 @@ s.iterated = true s.lastN = current - s.current s.current = current - if !s.ignoreComplete && s.current >= s.total { + if s.triggerComplete && s.current >= s.total { s.current = s.total - s.toComplete = true + s.completed = true go b.refreshTillShutdown() } }: @@ -214,9 +213,9 @@ s.iterated = true s.lastN = n s.current += n - if !s.ignoreComplete && s.current >= s.total { + if s.triggerComplete && s.current >= s.total { s.current = s.total - s.toComplete = true + s.completed = true go b.refreshTillShutdown() } }: @@ -280,7 +279,7 @@ // Completed reports whether the bar is in completed state. func (b *Bar) Completed() bool { select { - case b.operateState <- func(s *bState) { b.completed <- s.toComplete }: + case b.operateState <- func(s *bState) { b.completed <- s.completed }: return <-b.completed case <-b.done: return true @@ -322,11 +321,11 @@ b.frameCh <- frame b.dlogger.Println(p) } - s.completeFlushed = s.toComplete + s.completeFlushed = s.completed }() frame, lines := s.extender(s.draw(stat), s.reqWidth, stat) b.extendedLines = lines - b.toShutdown = s.toComplete && !s.completeFlushed + b.toShutdown = s.completed && !s.completeFlushed b.frameCh <- frame }: case <-b.done: