Skip to content

fix(desktop): 同步 JCEF 首次原生尺寸 - #20

Merged
generalio merged 1 commit into
mainfrom
generalio/fix/desktop-initial-native-resize
Aug 8, 2026
Merged

fix(desktop): 同步 JCEF 首次原生尺寸#20
generalio merged 1 commit into
mainfrom
generalio/fix/desktop-initial-native-resize

Conversation

@generalio

Copy link
Copy Markdown
Owner

目的

修复 Compose Desktop 中 JCEF windowed 视图首帧可能黑屏、必须手动调整窗口尺寸后才显示的问题。

改动内容

  • 在 JCEF 完成创建且 Swing 视图已有有效边界后,按当前边界再次调用原生视图的 setBounds()
  • 保留既有 revalidate、同步绘制和重绘步骤;尺寸同步只在首次就绪时执行一次。
  • 新增回归测试,并将涉及延迟回调的单元测试改为确定性调度。
  • 未修改任何公开 API。

平台影响

  • Android:无影响。
  • iOS:无影响。
  • Desktop:修复 JCEF windowed 模式在 Compose SwingPanel 首次布局早于浏览器创建时遗漏原生尺寸通知的问题。
  • JS/Wasm:无影响。

验证命令与结果

  • ./gradlew --no-configuration-cache :webview-desktop:test --tests io.github.multiweb.desktop.DesktopInitialNativeViewLayoutCoordinatorTest --console=plain:通过。
  • ./gradlew --no-configuration-cache :webview-desktop:test :webview-compose:jvmTest :sample-compose:compileKotlinDesktop --console=plain:通过。
  • ./gradlew --no-configuration-cache apiCheck --console=plain:未完成;环境未安装 Xcode,webview-ios:cinteropMultiWebFileChooserIosArm64xcrun xcodebuild -version 失败退出。Desktop 受影响模块测试与编译均已通过。

风险与兼容性

低风险。改动只作用于 Desktop 内部首次原生布局流程,不改变浏览器创建、销毁、导航、JS 桥或安全配置;重复使用现有边界,不会改变 Compose 布局尺寸或位置。

文档变更

更新了内部 KDoc,说明为何浏览器就绪后必须重新同步当前边界;无需修改公开接入文档。

Copilot AI lite review requested due to automatic review settings August 8, 2026 05:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@generalio
generalio merged commit 645e0bf into main Aug 8, 2026
2 checks passed
@generalio
generalio deleted the generalio/fix/desktop-initial-native-resize branch August 11, 2026 11:11
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.

2 participants