From 839c1bd8019386cc3cb6431f53a63cbd8eb0bd36 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 24 Apr 2024 15:00:15 +0200 Subject: [PATCH] Start: Fix memory leak * Set parent object to FileCardDelegate so that it will be destroyed if the list view is destroyed * Inside FileCardDelegate::paint() delete the widget --- src/Mod/Start/Gui/FileCardDelegate.cpp | 1 + src/Mod/Start/Gui/StartView.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Mod/Start/Gui/FileCardDelegate.cpp b/src/Mod/Start/Gui/FileCardDelegate.cpp index 49b18c1a55..d8122dbf9b 100644 --- a/src/Mod/Start/Gui/FileCardDelegate.cpp +++ b/src/Mod/Start/Gui/FileCardDelegate.cpp @@ -164,6 +164,7 @@ void FileCardDelegate::paint(QPainter* painter, widget->render(painter, QPoint(), QRegion(), QWidget::DrawChildren); painter->restore(); delete pixmap; + delete widget; } diff --git a/src/Mod/Start/Gui/StartView.cpp b/src/Mod/Start/Gui/StartView.cpp index b9bdd744be..a655d11476 100644 --- a/src/Mod/Start/Gui/StartView.cpp +++ b/src/Mod/Start/Gui/StartView.cpp @@ -266,7 +266,7 @@ QString StartView::fileCardStyle() const void StartView::configureFileCardWidget(QListView* fileCardWidget) { - auto delegate = gsl::owner(new FileCardDelegate); + auto delegate = gsl::owner(new FileCardDelegate(fileCardWidget)); fileCardWidget->setItemDelegate(delegate); fileCardWidget->setMinimumWidth(fileCardWidget->parentWidget()->width()); // fileCardWidget->setGridSize(