Repository navigation
Conversation
…llbar. Principle VIII. ConnectionPanel::preferredClientHeight() sized the dialog as chrome plus the body's preferred height and left out the horizontal scrollbar. When the body is wider than the window, that bar takes its height out of the viewport, so the auto-fit came up exactly one bar short and the dialog opened needing a vertical scrollbar anyway. On Windows at scale 1.0 the body (766 px minimum) is wider than the 760 px default window, so this happens on every open; on the Linux CI image the body fits, which is why full-suite stayed green while connection_panel_size_test failed locally (aethersdr#5811). preferredClientHeight() now takes the client width fitToScreen() is about to apply and adds the bar's height when the body's minimum width exceeds the scrollbar-free viewport at that width. A body that fits horizontally gets the same height as before. Test: - New wide-body check forces horizontal overflow with a harness-only minimum width, so the case is reached on every platform, and asserts the viewport against the body's preferred height. Against the unfixed code it misses by exactly one bar (674 vs 688); vbarMax alone caught only 1 px of the 14, since the scroll range runs off the minimum height. - The growth check's spacer counts a showing horizontal bar, and its headroom takes what the 800 px offscreen screen leaves, up to 40 px, instead of skipping on Windows once the fit is correctly 14 px taller. Fixes aethersdr#5811. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #5811.
This fixes the last open item in #5811. The others are already resolved on
main:got []underoffscreenmainsincecd4c2b68d(ten9876's re-run, 2026-09-18)SKIP:and return 77, andtests/tests.cmakesetsSKIP_RETURN_CODE 77on bothfull-suite.ymlruns them underoffscreenon every push tomainconnection_panel_size_testfailsThe failure is a real sizing bug in
ConnectionPanel::preferredClientHeight(), not a flaky test. That function asks for chrome + body height but leaves out the horizontal scrollbar. When the body is wider than the window, that bar takes its height out of the viewport. The auto-fit then comes up exactly one bar short, and the dialog opens with a vertical scrollbar anyway.On Windows this happens at the default window size. At scale 1.0 the body's minimum width is 766 px, and the 760 px panel leaves a 734 px viewport. On the Linux CI image the body is narrower than the viewport, so no horizontal bar appears and
full-suitestays green. That is why only Windows and font-dependent local runs fail.Measured offscreen on Windows (MSVC, Qt 6.12.0) at
upstream/main7864ef544, after the growth fit:vbarMaxequals the horizontal bar's height, 14.Fix.
preferredClientHeight()now takes the client widthfitToScreen()is about to apply. It adds the horizontal bar's height when the body's minimum width exceeds the viewport at that width. The viewport is measured withmaximumViewportSize(), i.e. with no scrollbars, since that is the state the fit aims for. When the body fits horizontally, as on Linux, nothing changes.Test.
tests/connection_panel_size_test.cpp:vbarMax == 0alone does not reliably fail: the scroll range runs off the body's minimum height, and the slack between minimum and preferred can hide the bar. In the control below it caught only 1 of the 14 px.mainon Linux: the auto-fit there is 776 px on the 800 px offscreen screen, leaving 24 px. On Linux at Qt 6.12.0, base7864ef544prints[SKIP] growth proof needs headroom above the auto-fit height autoHeight=776 workAreaH=800. So the test(gui): ConnectionPanel growth-path assertion fails when scaled content fits at 660 px #4679 growth proof (auto-sized panel opens without needing to scroll, and the three checks after it) was skipping in that configuration. With this PR it runs and passes. No existing check changes its result.Constitution principle honored
Principle VIII — Evidence Over Assertion. Every claim in this PR was measured, and the new check was run against the unfixed code. It fails there by exactly the bar height, then passes with the fix.
Test plan
AetherSDR,connection_panel_size_test,startup_autoconnect_lockout_testctest -R "^(connection_panel_size_test|startup_autoconnect_lockout_test)$": both pass, no[SKIP]linesConnectionPanel.cpp/.h(source change stashed, test kept):[FAIL]and no[SKIP]lines. Wide-body checkviewportH=698 bodyWantsH=698. Growth proof runs (height=800 vbarMax=0).full-suitestayed green.viewportH=684 bodyWantsH=698withhbarH=14, the same 14 px as on Windows. The plainvbarMax == 0check passes the control on Linux, so on its own it would not catch this bug there. That is why the viewport check is the one asserted.Checklist
docs/COMMIT-SIGNING.md)AppSettingscallsCHANGELOG.mdentryOut of scope, noted for whoever owns the canon dialogs. On Windows at scale 1.0, the Connect dialog's body (766 px minimum) is wider than its 760 px default window. So it opens with a horizontal scrollbar at its default size. This PR makes the height correct around that bar; whether the default width should grow is a design call I have left alone.
🤖 Generated with Claude Code
👨🏼💻 Co-authored by Claude Opus 5.5