progress-viewer-cancel-button (Issue #339)
Automation note: Keep the section headings below unchanged; the promotion tooling maps each of them into the GitHub bug issue template.
Summary
ProgressViewer displays its Cancel button in a disabled state when a
ProgressTracker or ProgressTrackerAsync initializes the viewer for loading.
The configured CancellationTokenSource is stored, but the disabled control
prevents the user from requesting cooperative cancellation.
Environment
- OS/version: Windows desktop environment supported by TaskMaster
- Runtime: .NET Framework WinForms/VSTO solution
- Entry points:
ProgressTracker.Initialize() and ProgressTrackerAsync.InitializeAsync()
- Data source or fixture: Any operation that displays
ProgressViewer while loading
Steps to Reproduce
- Create a
ProgressTracker or ProgressTrackerAsync with a non-null
CancellationTokenSource.
- Initialize the tracker so that it constructs and displays
ProgressViewer.
- Observe the Cancel button while the operation is loading.
Expected Behavior
The Cancel button is enabled while loading. Selecting it calls Cancel() on
the configured CancellationTokenSource, allowing background work that observes
the token to stop cooperatively.
Actual Behavior
The Cancel button is disabled. The tracker assigns the token source through the
CancelSource property, whose setter stores the source without enabling the
button. Because the control cannot be selected, cancellation is not propagated
from this UI path.
Acceptance Criteria
Logs / Screenshots
Impact / Severity
Suspected Cause / Notes
ProgressViewer.SetCancellationTokenSource(...) enables the button after
storing the source, but ProgressTracker and ProgressTrackerAsync configure
the viewer through the CancelSource property. The property setter omits the
equivalent enabled-state update.
Proposed Fix / Validation Ideas
Next Step
progress-viewer-cancel-button (Issue #339)
Summary
ProgressViewerdisplays its Cancel button in a disabled state when aProgressTrackerorProgressTrackerAsyncinitializes the viewer for loading.The configured
CancellationTokenSourceis stored, but the disabled controlprevents the user from requesting cooperative cancellation.
Environment
ProgressTracker.Initialize()andProgressTrackerAsync.InitializeAsync()ProgressViewerwhile loadingSteps to Reproduce
ProgressTrackerorProgressTrackerAsyncwith a non-nullCancellationTokenSource.ProgressViewer.Expected Behavior
The Cancel button is enabled while loading. Selecting it calls
Cancel()onthe configured
CancellationTokenSource, allowing background work that observesthe token to stop cooperatively.
Actual Behavior
The Cancel button is disabled. The tracker assigns the token source through the
CancelSourceproperty, whose setter stores the source without enabling thebutton. Because the control cannot be selected, cancellation is not propagated
from this UI path.
Acceptance Criteria
CancellationTokenSourcethroughProgressViewer.CancelSourceenables the Cancel button immediately,including the initial loading state used by
ProgressTrackerandProgressTrackerAsync.configured
CancellationTokenSourceso token-observing background workcan stop cooperatively.
setter, passes after the targeted fix, and the final C# toolchain completes
in format, analyzer, nullable-analysis, and coverage-enabled test order
without regression.
Logs / Screenshots
Impact / Severity
Suspected Cause / Notes
ProgressViewer.SetCancellationTokenSource(...)enables the button afterstoring the source, but
ProgressTrackerandProgressTrackerAsyncconfigurethe viewer through the
CancelSourceproperty. The property setter omits theequivalent enabled-state update.
Proposed Fix / Validation Ideas
CancelSourceand verifies the Cancelcontrol is enabled.
configured token to the cancellation-requested state.
coverage-enabled MSTest gates in the required order.
Next Step