diff options
author | Daniel Poelzleithner <git@poelzi.org> | 2020-11-26 23:31:13 +0100 |
---|---|---|
committer | Daniel Poelzleithner <git@poelzi.org> | 2020-11-27 01:08:33 +0100 |
commit | b53d9c9b1856f3a5ebc20c7689c909805454b96e (patch) | |
tree | 56ea5fe3f1beaefa239fd0e6f3d31fb503f258a6 /src/widget | |
parent | a8a93f02e44751d42e9673d622dcd0233c024feb (diff) |
Fix memory leak in selection model
Diffstat (limited to 'src/widget')
-rw-r--r-- | src/widget/wlibrarysidebar.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/widget/wlibrarysidebar.cpp b/src/widget/wlibrarysidebar.cpp index 0763c868e1..1f7ce2e076 100644 --- a/src/widget/wlibrarysidebar.cpp +++ b/src/widget/wlibrarysidebar.cpp @@ -213,6 +213,9 @@ void WLibrarySidebar::keyPressEvent(QKeyEvent* event) { void WLibrarySidebar::selectIndex(const QModelIndex& index) { auto pModel = new QItemSelectionModel(model()); pModel->select(index, QItemSelectionModel::Select); + if (selectionModel()) { + selectionModel()->deleteLater(); + } setSelectionModel(pModel); if (index.parent().isValid()) { expand(index.parent()); @@ -222,14 +225,17 @@ void WLibrarySidebar::selectIndex(const QModelIndex& index) { /// Selects a child index from a feature and ensures visibility void WLibrarySidebar::selectChildIndex(const QModelIndex& index) { - auto pModel = new QItemSelectionModel(model()); SidebarModel* sidebarModel = qobject_cast<SidebarModel*>(model()); VERIFY_OR_DEBUG_ASSERT(sidebarModel) { qDebug() << "model() is not SidebarModel"; return; } QModelIndex translated = sidebarModel->translateChildIndex(index); - pModel->select(index, QItemSelectionModel::Select); + auto pModel = new QItemSelectionModel(sidebarModel); + pModel->select(translated, QItemSelectionModel::Select); + if (selectionModel()) { + selectionModel()->deleteLater(); + } setSelectionModel(pModel); QModelIndex parentIndex = translated.parent(); |