Fix tab row acrylic mixed-source flicker#20293
Draft
Rokurolize wants to merge 1 commit into
Draft
Conversation
Avoid layering titlebar HostBackdrop acrylic over terminal content that is already using in-app Backdrop acrylic when tab row acrylic, tabs-in-titlebar, and unfocused acrylic are combined. Add a local TerminalApp test for the mixed-source case.
Author
|
@microsoft-github-policy-service agree |
2 tasks
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.
Note: This PR was prepared with Codex assistance in my local environment. I personally experience the tab-row flickering described in #14384, but the patch authoring, evidence synthesis, and validation notes below were prepared by Codex.
Summary of the Pull Request
When
useAcrylicInTabRowandenableUnfocusedAcrylicare both enabled, the tab row should not layer titlebarHostBackdropacrylic over terminal content that is already using in-appBackdropacrylic. This changes only that mixed-source tabs-in-titlebar case to use the evaluated solid titlebar/tab-row brush, while preserving the existingHostBackdropacrylic path for non-mixed cases.References and Relevant Issues
Closes #14384.
Detailed Description of the Pull Request / Additional comments
TerminalPage.cppnow detects when all of these are true:AcrylicBackgroundSource::Backdrop,AcrylicBackgroundSource::HostBackdropacrylic.In that combination,
TitlebarBrushis set to aSolidColorBrushusing the evaluated tab-row/titlebar color. Existing behavior is retained for titlebar-only acrylic cases and for non-mixed-source cases.TabTests.cppaddsTabRowAcrylicUsesSolidTitlebarWhenTerminalUsesInAppAcrylic. The test enables tabs in titlebar, tab-row acrylic, unfocused acrylic, profile acrylic, and opacity below 100%, then verifies that afterWindowActivated(false)the active terminal background usesBackdropwhile the titlebar brush is solid rather than acrylic.Process note: I converted this PR to Draft after opening it because the Contributor's Guide asks contributors to start with a Draft PR while the approach is discussed. The patch and exact-head validation are included here so maintainers can review the approach with concrete evidence.
Validation Steps Performed
Exact-head Windows-native validation:
Rokurolize:fix-tab-row-acrylic-mixed-source8ab20192d085773a6c3fbbe3287334aab9308888dep\nuget\packages.configpassed.Terminal\Tests\TestHostAppsolution-target build passed; this builtTerminalApp.LocalTests.dllfor the hosted local test run.TerminalAppLocalTests::TabTests::TabRowAcrylicUsesSolidTitlebarWhenTerminalUsesInAppAcrylic.Total=1, Passed=1, Failed=0, Blocked=0, Not Run=0, Skipped=0.PR Checklist
showTabsInTitlebar,useAcrylicInTabRow,compatibility.enableUnfocusedAcrylic, profileuseAcrylic, and profileopacity.doc/cascadia/profiles.schema.json; this PR does not add or change schema keys.