diff --git a/ui/README.md b/ui/README.md index fceafb2d..4395494c 100644 --- a/ui/README.md +++ b/ui/README.md @@ -49,6 +49,7 @@ - 新增一版真正参与布局调度的 `arrange subtree dirty`:`Visual::InvalidateArrange()` 现在会把源控件一路上传到 `Scene`,`Scene` 会记录需要重排的最小公共祖先;在无需重测时,会优先只重排那一支子树,而不是整棵根树 - 进一步补上 `measure dirty` 的源追踪:`Scene` 现在会记录测量脏源,并在条件允许时优先按脏路径重测,再结合 `Visual` 的布局缓存尽量跳过无关分支 - 新增最小主题系统 `Theme / ThemeManager`:窗口背景、按钮、复选框、进度条、滑块、滚动条、`TextBlock` 字体和 `TextBox` 的部分视觉令牌已开始迁移到统一主题入口,便于后续做换肤和样式集中管理 +- 新增第一版 `PopupHost / Popup` 弹出层系统:`Scene` 现可管理 overlay popup,支持高于主视觉树的渲染顺序、命中测试、滚轮路由、窗口重排后的重新定位,以及点击空白区域自动关闭;demo 已加入一个快速操作弹出层示例 ## 构建 diff --git a/ui/demos/msimeui-demo/DemoScene.cpp b/ui/demos/msimeui-demo/DemoScene.cpp index fb3f1fcc..80de146e 100644 --- a/ui/demos/msimeui-demo/DemoScene.cpp +++ b/ui/demos/msimeui-demo/DemoScene.cpp @@ -367,6 +367,42 @@ std::unique_ptr CreateDemoScene() root->AddChild(tabsCard); root->AddChild(std::make_shared(24.0f)); + auto popupCard = std::make_shared(surface, 20.0f); + auto popupStack = std::make_shared(14.0f); + auto popupStatus = std::make_shared(L"Popup status: closed", 14.0f, D2D1::ColorF(0x475569), true); + auto popupTrigger = std::make_shared