fix(web): detect SubFrame client size changes - #204
Open
shrinktofit wants to merge 1 commit into
Open
Conversation
Contributor
Author
|
@cocos-robot run test cases |
Code Size Check Report
Interface Check ReportThis pull request does not change any public interfaces ! |
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.
Re: #
Changelog
Root Cause
ScreenAdapter._updateContainer()detected resize events by comparing the inlinewidthandheightstrings of the game frame and container. When a SubFrame uses stable values such aswidth: 100%andheight: 100%, resizing its embedding viewport changesclientWidthandclientHeightwhile those inline style strings remain unchanged. As a result,screen.windowSizecould reflect the new DOM size, but nowindow-resizeevent was emitted and dependent view/framebuffer state remained stale.Reproduction
GameDivwhose inline width and height remain100%.800x600to640x360.screenAdapter.windowSizereports the new size, but thewindow-resizeevent is not emitted.Solution
Cache and compare the effective CSS window size after container layout is updated. When it changes, update the cache before emitting
window-resize, and derive the event payload from the same CSS-size sample multiplied by the current device pixel ratio. This keeps the existing DPR-only, fullscreen, and orientation mechanisms unchanged and does not add a public API.Testing
node ./node_modules/jest/bin/jest.js tests/pal/screen-adapter.test.ts tests/core/view.test.ts --runInBandnode ./node_modules/typescript/bin/tsc --noEmitContinuous Integration
This pull request:
Compatibility Check
This pull request: