From 0d01296e8a9ea800f5e8966f3a700e12560f3e4e Mon Sep 17 00:00:00 2001 From: liujinchang Date: Fri, 30 Oct 2026 03:31:21 +0800 Subject: [PATCH] fix: show scrollbar in file list views MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Root cause: SelectListView and CreateBackupFileWidget explicitly set vertical scrollbar policy to ScrollBarAlwaysOff, hiding the scrollbar even when content overflows the viewport 2. Fix: change policy from ScrollBarAlwaysOff to ScrollBarAsNeeded in item.cpp:727 and createbackupfilewidget.cpp:256, restoring the Qt default behavior where scrollbar appears on demand 3. Impact: FileSelectWidget, AppSelectWidget, ConfigSelectWidget and CreateBackupFileWidget all benefit from restored scrollbar; no behavior change when content fits within the viewport Log: Restore scrollbar visibility in data-transfer file list views Influence: 1. Test file browsing with more items than viewport height 2. Test disk selection list with overflow content 3. Verify scrollbar hidden when content fits viewport fix: 恢复文件列表视图的滚动条显示 1. 根因:SelectListView 和 CreateBackupFileWidget 显式将垂直滚动条 策略设为 ScrollBarAlwaysOff,导致内容超出视口时滚动条仍隐藏 2. 方案:将 item.cpp:727 和 createbackupfilewidget.cpp:256 的策略 从 ScrollBarAlwaysOff 改为 ScrollBarAsNeeded,恢复 Qt 默认行为 3. 影响:FileSelectWidget、AppSelectWidget、ConfigSelectWidget 及 CreateBackupFileWidget 均受益于滚动条恢复;内容不超出视口时无行为变化 Log: 恢复数据迁移工具文件列表的滚动条显示 Influence: 1. 测试文件数量超出视口时滚动条正常显示 2. 测试磁盘选择列表内容超出视口时滚动条正常显示 3. 验证内容未超出视口时滚动条不显示 PMS: BUG-249127 --- .../core/gui/getbackup/createbackupfilewidget.cpp | 6 +++++- src/plugins/data-transfer/core/gui/select/item.cpp | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/data-transfer/core/gui/getbackup/createbackupfilewidget.cpp b/src/plugins/data-transfer/core/gui/getbackup/createbackupfilewidget.cpp index bb9e2451c..ecb52bb5d 100644 --- a/src/plugins/data-transfer/core/gui/getbackup/createbackupfilewidget.cpp +++ b/src/plugins/data-transfer/core/gui/getbackup/createbackupfilewidget.cpp @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + #include "createbackupfilewidget.h" #include "../select/item.h" #include "../type_defines.h" @@ -253,7 +257,7 @@ void CreateBackupFileWidget::initDiskListView() diskListView->setModel(model); diskListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - diskListView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + diskListView->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); diskListView->setSelectionMode(QAbstractItemView::SingleSelection); QObject::connect(diskListView, &QListView::clicked, [model](const QModelIndex &index) { diff --git a/src/plugins/data-transfer/core/gui/select/item.cpp b/src/plugins/data-transfer/core/gui/select/item.cpp index 4ed8b190e..6ed919e5e 100644 --- a/src/plugins/data-transfer/core/gui/select/item.cpp +++ b/src/plugins/data-transfer/core/gui/select/item.cpp @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + #include "item.h" #include "calculatefilesize.h" #include @@ -724,7 +728,7 @@ SelectListView::SelectListView(QFrame *parent) : QListView(parent) "border: none;" "}"); setEditTriggers(QAbstractItemView::NoEditTriggers); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); setSelectionMode(QAbstractItemView::NoSelection); setVerticalScrollMode(QListView::ScrollPerPixel); QObject::connect(model, &QStandardItemModel::itemChanged, this,