Skip to content

Commit eeada85

Browse files
committed
fix: when drag just one app in folder to launchpad quickly will coredump.
修复文件夹只有一个应用时,快速拖拽到启动器会崩溃问题。 原因为: 文件夹在被删除后,他的ItemsPage 对象仍然存活(QObject 子对象,未被删除),连接也未断开。如果后续有任何东西触发了这个 "幽灵" page 的 pageCountChanged,仍然会发出 folderPageCountChanged 信号指向一个已不存在的文件夹。 修复方案: 断开Itempage的连接后,再进行删除 folder。
1 parent b178a28 commit eeada85

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

src/models/itemarrangementproxymodel.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
1+
// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd.
22
//
33
// SPDX-License-Identifier: GPL-3.0-or-later
44

@@ -489,10 +489,14 @@ void ItemArrangementProxyModel::removeFolder(const QString &idNumber)
489489
QString fullId("internal/folders/" + idNumber);
490490
Q_ASSERT(m_folders.contains(fullId));
491491

492-
m_folders.remove(fullId);
492+
auto *page = m_folders.take(fullId);
493+
page->disconnect(this);
494+
493495
m_topLevel->removeItem(fullId);
494496
QList<QStandardItem*> result = m_folderModel.findItems(fullId);
495497
m_folderModel.removeRows(result.first()->row(), 1);
498+
499+
m_folders.remove(fullId);
496500
}
497501

498502
// get folder by id. 0 is top level, >=1 is folder

0 commit comments

Comments
 (0)