Repository navigation
fix: adjust search icon size in compact mode - #433
GongHeng2017 wants to merge 1 commit into
Conversation
1. Root cause: DSearchEdit hardcodes DIconButton iconSize to 20x20 regardless of SizeMode, so in CompactMode (search edit height 24px) the icon ratio reaches 83.3% vs 55.6% in NormalMode (height 36px) 2. Fix: add setSearchIconSize lambda in FindWidget to set the internal DIconButton iconSize to 20 in NormalMode and 14 in CompactMode, applied in both initial setup and the sizeModeChanged handler 3. Impact: only affects FindWidget search icon visual size in CompactMode; NormalMode icon size unchanged, no behavior change Log: Adjusted search magnifier icon size to match compact mode layout Influence: 1. Test search box icon display in NormalMode (icon should be 20x20) 2. Test search box icon display in CompactMode (icon should be 14x14) 3. Test icon size updates when switching SizeMode at runtime fix: 调整紧凑模式下搜索图标尺寸 1. 根因:DSearchEdit 硬编码 DIconButton iconSize 为 20×20,不随 SizeMode 变化,CompactMode 下搜索框高度仅 24px 时图标占比达 83.3%(NormalMode 为 55.6%),视觉上放大镜图标过大 2. 方案:在 FindWidget 中新增 setSearchIconSize lambda,NormalMode 设 20、CompactMode 设 14,初始设置与 sizeModeChanged 回调中 同步调用 3. 影响:仅影响 CompactMode 下搜索框图标的视觉尺寸,NormalMode 无行为变化 Log: 调整紧凑模式下搜索放大镜图标尺寸以匹配布局比例 Influence: 1. 测试普通模式下搜索框图标显示(应为 20×20) 2. 测试紧凑模式下搜索框图标显示(应为 14×14) 3. 测试运行时在普通模式与紧凑模式间切换时图标尺寸是否同步更新 PMS: BUG-224407
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: GongHeng2017 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's guide (collapsed on small PRs)Reviewer's GuideAdjusts the FindWidget search magnifier to remain visually proportional across size modes by reaching the DSearchEdit internal icon button and applying mode-specific sizes during initial setup and subsequent size-mode changes. Sequence diagram for responsive search icon sizingsequenceDiagram
participant FindWidget
participant DGuiApplicationHelper
participant DSearchEdit
participant DIconButton
FindWidget->>DSearchEdit: findChildren<DIconButton *>()
DSearchEdit-->>FindWidget: DSearchEditIconButton
FindWidget->>DIconButton: setIconSize(QSize(20, 20))
DGuiApplicationHelper-->>FindWidget: sizeModeChanged(sizeMode)
alt NormalMode
FindWidget->>DSearchEdit: findChildren<DIconButton *>()
DSearchEdit-->>FindWidget: DSearchEditIconButton
FindWidget->>DIconButton: setIconSize(QSize(20, 20))
else CompactMode
FindWidget->>DSearchEdit: findChildren<DIconButton *>()
DSearchEdit-->>FindWidget: DSearchEditIconButton
FindWidget->>DIconButton: setIconSize(QSize(14, 14))
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
deepin pr auto review🤖 AI 代码审查报告📊 总体评价
🔍 详细分析1. 语法逻辑 ✅评价: 语法正确,逻辑清晰 ✅ 通过 潜在问题: 建议: [] 2. 代码质量 ✅评价: 代码结构清晰,注释完整 ✅ 通过 潜在问题: 建议: ['可考虑将lambda捕获改为 [searchEdit = m_pSearchEdit](int size),使依赖更显式并降低耦合'] 3. 代码性能 ✅评价: 性能良好,资源使用合理 ✅ 通过 潜在问题: 建议: [] 4. 代码安全 🔒评价: 存在0个安全漏洞 ✅ 通过
安全漏洞详情: 建议: [] 💡 改进建议代码示例// 建议改进:直接捕获 m_pSearchEdit 而非 this,使依赖更显式
auto setSearchIconSize = [searchEdit = m_pSearchEdit](int size) {
const auto buttons = searchEdit->findChildren<DIconButton *>();
for (auto btn : buttons) {
if (btn->accessibleName() == QStringLiteral("DSearchEditIconButton")) {
btn->setIconSize(QSize(size, size));
break;
}
}
};本报告由 AI 代码审查工具自动生成 |
Root Cause Analysis
DTK's
DSearchEdithardcodes the internalDIconButtoniconSize to 20×20 regardless ofDSizeMode(dsearchedit.cpp:303). In deepin-reader'sFindWidget, CompactMode sets the search edit height to 24px, making the icon ratio 83.3% (20/24) versus 55.6% (20/36) in NormalMode — visually the magnifier icon appears oversized. This was confirmed via an independent offscreen demo (repro/before.log).Fix
Added a
setSearchIconSizelambda inFindWidget::initWidget()that locates the internal DIconButton byaccessibleName == "DSearchEditIconButton"and callssetIconSize. In NormalMode the icon is set to 20×20 (default), in CompactMode to 14×14 (ratio ~58.3%, matching NormalMode). Applied in both the initial setup block and thesizeModeChangedhandler. This is a symptom-layer patch as adopted by the root-cause review conclusion; the root-cause DTK fix is out of scope.Change Safety Assessment
Code Safety
findChildrento reach the internal DIconButton — a DTK upgrade changing the internal structure (accessibleName rename, layout change) could break the fix.Business Impact Scope
FindWidget).Verification Suggestion
根因分析
DTK 的
DSearchEdit将内部DIconButton的 iconSize 硬编码为 20×20,不随DSizeMode变化(dsearchedit.cpp:303)。deepin-reader 的FindWidget在 CompactMode 下将搜索框高度设为 24px,导致图标占比达 83.3%(20/24),而 NormalMode 为 55.6%(20/36),视觉上放大镜图标过大。此结论已通过独立 offscreen demo 验证(repro/before.log)。修复方案
在
FindWidget::initWidget()中新增setSearchIconSizelambda,通过accessibleName == "DSearchEditIconButton"定位内部 DIconButton 并调用setIconSize。NormalMode 设为 20×20(默认),CompactMode 设为 14×14(占比约 58.3%,与 NormalMode 一致)。初始设置块与sizeModeChanged回调中同步调用。本修复为症状层补丁,根因层 DTK 修复不在本次范围。改动安全评估
代码安全评估
findChildren绕过 DSearchEdit 封装直接操作内部 DIconButton,DTK 升级若改变内部结构(accessibleName 改名、控件层级调整)可能导致修复失效。业务影响范围
FindWidget)。验证建议
Summary by Sourcery
Adjust the FindWidget search icon sizing to keep it visually proportional across supported UI size modes.
Bug Fixes:
Enhancements: