Skip to content

ProgressBarWindow: the bar fills its row (R2026a draws it 2.7 px tall) - #1020

Merged
stevevanhooser merged 5 commits into
mainfrom
claude/progressbar-fill
Oct 14, 2026
Merged

stevevanhooser merged 5 commits into
mainfrom
claude/progressbar-fill

Conversation

@jesshaley

@jesshaley jesshaley commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

On R2026a, ndi.gui.component.ProgressBarWindow draws each bar a few pixels tall. Measured on a 1920×1080 screen, one bar:

axes outer    [11 11 511 28]     the grid row: 28 px tall
axes inner    [16 16 501 2.67]   the drawing area: 2.67 px

The cause: in a grid layout, MATLAB places a uiaxes by its outer box and keeps room inside it for tick labels and a title, even hidden ones. The window's code is unchanged since June 2025. Its sizing and drawing lines are the same as in 463b0ba, so the difference comes from the MATLAB release.

Change:

  • Each bar's axes now sit in a borderless uipanel that the grid lays out.
  • The axes' inner box is placed BarMargin (5) px inside the panel, in pixels (PositionConstraint innerposition). fitBarAxes places it again whenever the panel resizes, and the panel turns AutoResizeChildren off, without which the resize callback never runs.
  • The panel takes the grid's background colour.
  • removeBar moves and deletes the panel, which it reaches as Axes.Parent.
  • The ProgressBars struct is unchanged; Axes and Patch are still there.

Tests:

  • Checked by hand on R2024b and R2026a at 175b08a: the bar now looks the same in both, 5 px inside its row as R2024b drew it, and stays so after the window is resized.
  • New test: testBarFillsItsRow. It checks the panel, the margin, AutoResizeChildren, and that the panel moves and is deleted on removeBar.
  • testRemoveBar and testDockedBarRenders now read the bar's panel (Axes.Parent), not the axes, for its grid row and parent.
  • CI has no display, so the visual check is the manual one above.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf


Generated by Claude Code


Generated by Claude Code

In a grid layout MATLAB places a uiaxes by its outer box and keeps room
inside it for tick labels and a title, even hidden ones. On R2026a that
left a 28 px bar row with a 2.67 px drawing area (measured: OuterPosition
[11 11 511 28], InnerPosition [16 16 501 2.67]). Each bar's axes now sit
in a borderless panel that the grid lays out, with the axes' inner box set
to fill the panel; removeBar moves and deletes the panel. Confirmed by
hand on R2026a; testBarFillsItsRow pins the structure.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf

Copy link
Copy Markdown
Collaborator Author

The failing checks here are Cloud CI 1, 2 and 3, the NDI Cloud API tests (testCloudApiProdPart). They aren't caused by this PR:

  • The same workflow is red on main (0a2cdec), in every nightly scheduled run from 2026-10-02 to 2026-10-06 (runs 36947377537, 37083040616, 37167587089, 37248878338, 37395496772).
  • It also fails on an unrelated PR branch (claude/lightsheet-zarr-ndi-viewer-djp5vk).
  • This PR touches nothing those tests run: only ProgressBarWindow.m and its test.

I don't know of a fix for the cloud failure yet, so there's nothing to port here. I'm not re-running it, since it fails on main too.


Generated by Claude Code

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

1 555 tests  +1   1 522 ✅ +1   9m 16s ⏱️ + 1m 15s
  223 suites ±0      33 💤 ±0 
    1 files   ±0       0 ❌ ±0 

Results for commit aa96851. ± Comparison against base commit d292984.

♻️ This comment has been updated with latest results.

claude added 2 commits October 6, 2026 01:06
…background

Matches how R2024b drew it: the previous commit filled the row edge to
edge on a white panel. The panel now takes the grid's background colour,
and fitBarAxes places the axes' inner box BarMargin (5) px inside the
panel, in pixels, again whenever the panel resizes (SizeChangedFcn).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
testRemoveBar and testDockedBarRenders asserted the old structure (axes
directly in the grid); they now read the panel, Axes.Parent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf

Copy link
Copy Markdown
Collaborator Author

The first run's Test Results had 6 failures. Two were caused by this PR, and the push I just made fixes them:

  • TestProgressBarWindow/testRemoveBar and TestProgressBarWindowDocked/testDockedBarRenders checked that the bar sits directly in the grid. With this PR it sits in a panel, so both now check the panel instead.

The other four aren't caused by this PR. They're cloud token-expiry tests, and this PR doesn't touch their code:

  • IsTokenExpiredTest/expiredTokenReportsExpired
  • IsTokenExpiredTest/tokenInsideSkewWindowReportsExpired
  • IsTokenExpiredTest/customSkewIsRespected
  • TestGEFManager/testAnExpiredTokenIsWorthRenewing

The same four failed on claude/lightsheet-zarr-ndi-viewer-djp5vk on 2026-10-04 (run 37165768218), a branch that passes otherwise. I haven't found their cause and don't know of a fix, so there's nothing to port.


Generated by Claude Code

Otherwise MATLAB warns that SizeChangedFcn will not execute, and the bar
keeps the size it had before the grid laid the panel out (found on
R2026a).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
jesshaley pushed a commit that referenced this pull request Oct 6, 2026
… on R2026a

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
@jesshaley
jesshaley marked this pull request as ready for review October 6, 2026 01:35
@codecov

codecov Bot commented Oct 14, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.73684% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 31.63%. Comparing base (d292984) to head (aa96851).

Files with missing lines Patch % Lines
src/ndi/+ndi/+gui/+component/ProgressBarWindow.m 94.73% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1020      +/-   ##
==========================================
+ Coverage   31.62%   31.63%   +0.01%     
==========================================
  Files         898      898              
  Lines       46893    46907      +14     
==========================================
+ Hits        14828    14841      +13     
- Misses      32065    32066       +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@stevevanhooser
stevevanhooser merged commit 695e8d8 into main Oct 14, 2026
12 checks passed
@stevevanhooser
stevevanhooser deleted the claude/progressbar-fill branch October 14, 2026 01:04
@stevewds

Copy link
Copy Markdown
Collaborator

Sorry I missed that this was for me. Done now

jesshaley pushed a commit that referenced this pull request Oct 14, 2026
main at 695e8d8 (PR #1020, ProgressBarWindow) and the 135 commits before
it. Two files changed on both sides (+cloud/+api/url.m, didsqlite.m); both
merged without conflict.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
jesshaley pushed a commit that referenced this pull request Oct 14, 2026
main at 695e8d8 (PR #1020, ProgressBarWindow) and the commits before it
that V2 did not have (147). Merged without conflict; requirements.txt and
tests/requirements.txt take main's openMINDS_MATLAB v0.12.0 and keep V2's
other lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FxKLA8Tbf9cpvDe7fuVeKf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants