summaryrefslogtreecommitdiffstats
path: root/src/widget/wlibrarysidebar.cpp
diff options
context:
space:
mode:
authorDaniel Poelzleithner <git@poelzi.org>2020-11-26 23:31:13 +0100
committerDaniel Poelzleithner <git@poelzi.org>2020-11-27 01:08:33 +0100
commitb53d9c9b1856f3a5ebc20c7689c909805454b96e (patch)
tree56ea5fe3f1beaefa239fd0e6f3d31fb503f258a6 /src/widget/wlibrarysidebar.cpp
parenta8a93f02e44751d42e9673d622dcd0233c024feb (diff)
Fix memory leak in selection model
Diffstat (limited to 'src/widget/wlibrarysidebar.cpp')
-rw-r--r--src/widget/wlibrarysidebar.cpp10
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();