From a97fbafa759c932ca3f9800c1cf038303624e875 Mon Sep 17 00:00:00 2001 From: gongheng Date: Wed, 28 Oct 2026 06:20:44 +0800 Subject: [PATCH] fix: adjust search icon size in compact mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- reader/widgets/FindWidget.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/reader/widgets/FindWidget.cpp b/reader/widgets/FindWidget.cpp index d9692ff8b..41d3e831d 100644 --- a/reader/widgets/FindWidget.cpp +++ b/reader/widgets/FindWidget.cpp @@ -140,16 +140,27 @@ void FindWidget::initWidget() closeButton->setWindowFlag(Qt::FramelessWindowHint); #ifdef DTKWIDGET_CLASS_DSizeMode + auto setSearchIconSize = [this](int size) { + const auto buttons = m_pSearchEdit->findChildren(); + for (auto btn : buttons) { + if (btn->accessibleName() == QStringLiteral("DSearchEditIconButton")) { + btn->setIconSize(QSize(size, size)); + break; + } + } + }; if (DGuiApplicationHelper::instance()->sizeMode() == DGuiApplicationHelper::NormalMode) { m_pSearchEdit->setFixedSize(QSize(270, 36)); m_findPrevButton->setFixedSize(QSize(36, 36)); m_findNextButton->setFixedSize(QSize(36, 36)); setFixedSize(422, 60); + setSearchIconSize(20); } else { m_pSearchEdit->setFixedSize(QSize(270, 24)); m_findPrevButton->setFixedSize(QSize(24, 24)); m_findNextButton->setFixedSize(QSize(24, 24)); setFixedSize(398, 45); + setSearchIconSize(14); } connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::sizeModeChanged, this, [=](DGuiApplicationHelper::SizeMode sizeMode) { if (sizeMode == DGuiApplicationHelper::NormalMode) { @@ -157,11 +168,13 @@ void FindWidget::initWidget() m_findPrevButton->setFixedSize(QSize(36, 36)); m_findNextButton->setFixedSize(QSize(36, 36)); setFixedSize(422, 60); + setSearchIconSize(20); } else { m_pSearchEdit->setFixedSize(QSize(270, 24)); m_findPrevButton->setFixedSize(QSize(24, 24)); m_findNextButton->setFixedSize(QSize(24, 24)); setFixedSize(398, 45); + setSearchIconSize(14); } }); #else