From ab5516da96f33865f01d25db75ca2c02872f8e60 Mon Sep 17 00:00:00 2001 From: fanlusky <1730976608@qq.com> Date: Fri, 19 Jun 2026 13:03:32 +0800 Subject: [PATCH] Unclamp combo box popups --- ui/README.md | 1 + ui/src/Controls.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/ui/README.md b/ui/README.md index 83db6373..cc6b696f 100644 --- a/ui/README.md +++ b/ui/README.md @@ -115,6 +115,7 @@ - `Button` 点击后不再残留焦点高亮边框,保留按下态但去掉持续的描边强调 - `PopupHost` 现在会把按下/抬起鼠标事件转发给内部 trigger,因此像 `Open Quick Actions` 这样的弹层按钮也会显示正常的点击反馈 - `Popup` 新增是否限制在视口内的开关;demo 里的页面内弹层已关闭该限制,因此滚动页面时弹出框会跟随锚点自然滚出可视区,而不是停在窗口边缘 +- `ComboBox` 下拉层默认也已关闭视口贴边限制,因此其滚动行为现在与页面内的其它 popup 保持一致 - `CandidateList` 现支持基础键盘导航:弹层打开后会自动把焦点落到首个可聚焦内容上,候选列表可用 `Up/Down`、`Left/Right`、`Home/End`、`PageUp/PageDown` 切换高亮项 - demo 中的候选窗预览继续补上了底部分页/状态提示区,用来预演候选页码、当前高亮项和键盘操作提示的布局结构 - `Window` 新增公开的 `FocusVisual` 入口,方便 popup、候选窗、上下文菜单这类 overlay 内容在弹出后主动把焦点切到内部可交互控件 diff --git a/ui/src/Controls.cpp b/ui/src/Controls.cpp index d3e79ca2..eb39d82f 100644 --- a/ui/src/Controls.cpp +++ b/ui/src/Controls.cpp @@ -998,6 +998,7 @@ ComboBox::ComboBox(float height) : preferredHeight_(height) popup_ = std::make_shared(popupContent_); popup_->SetPlacement(PopupPlacement::BelowLeading); popup_->SetOffset(0.0f, 6.0f); + popup_->SetConstrainToViewport(false); } void ComboBox::AddItem(std::wstring item)