From kde-kimageshop Tue Oct 13 13:07:04 2020 From: Dmitry Kazakov Date: Tue, 13 Oct 2020 13:07:04 +0000 To: kde-kimageshop Subject: [graphics/krita/sh-zam/T13101-svg-mesh-gradients] /: Fix memory leak in 'Ui' classes Message-Id: <20201013130704.C7DB71241C5F () leptone ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-kimageshop&m=160259445013812 Git commit 2b81818bd4d923f97630b4f067bb1eaa2cedb0b3 by Dmitry Kazakov. Committed on 13/10/2020 at 13:04. Pushed by dkazakov into branch 'sh-zam/T13101-svg-mesh-gradients'. Fix memory leak in 'Ui' classes Auto-generated QtDesigner form is supposed to be used as a parent for our class, not as a member. Therefore, it never belongs to QObject hierarchy, and therefore, is never auto-deleted. If you add autogenerated Ui class as a member, don't forget to make it QScopedPointer to make sure it is deleted on widget destruction. CC:kimageshop@kde.org M +1 -1 libs/ui/widgets/KisGamutMaskToolbar.cpp M +1 -1 libs/ui/widgets/KisGamutMaskToolbar.h M +2 -2 libs/ui/widgets/KoFillConfigWidget.cpp M +2 -2 libs/ui/widgets/KoStrokeConfigWidget.cpp M +1 -1 plugins/dockers/arrangedocker/arrange_docker_widget.h M +1 -1 plugins/dockers/specificcolorselector/kis_specific_color_sel= ector_widget.cc M +1 -1 plugins/dockers/specificcolorselector/kis_specific_color_sel= ector_widget.h M +4 -0 plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocke= r.cpp M +2 -1 plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocke= r.h https://invent.kde.org/graphics/krita/commit/2b81818bd4d923f97630b4f067bb1e= aa2cedb0b3 diff --git a/libs/ui/widgets/KisGamutMaskToolbar.cpp b/libs/ui/widgets/KisG= amutMaskToolbar.cpp index 2a1851f773..61f995e563 100644 --- a/libs/ui/widgets/KisGamutMaskToolbar.cpp +++ b/libs/ui/widgets/KisGamutMaskToolbar.cpp @@ -26,7 +26,7 @@ KisGamutMaskToolbar::KisGamutMaskToolbar(QWidget* parent)= : QWidget(parent) , m_selectedMask(nullptr) , m_selfUpdate(false) { - m_ui =3D new Ui_wdgGamutMaskToolbar(); + m_ui.reset(new Ui_wdgGamutMaskToolbar()); m_ui->setupUi(this); = m_iconMaskOff =3D KisIconUtils::loadIcon("gamut-mask-off"); diff --git a/libs/ui/widgets/KisGamutMaskToolbar.h b/libs/ui/widgets/KisGam= utMaskToolbar.h index 941d7794c2..9f22c41e20 100644 --- a/libs/ui/widgets/KisGamutMaskToolbar.h +++ b/libs/ui/widgets/KisGamutMaskToolbar.h @@ -50,7 +50,7 @@ private Q_SLOTS: void slotGamutMaskRotate(int angle); = private: - Ui_wdgGamutMaskToolbar* m_ui; + QScopedPointer m_ui; KoGamutMask* m_selectedMask; = QIcon m_iconMaskOff; diff --git a/libs/ui/widgets/KoFillConfigWidget.cpp b/libs/ui/widgets/KoFil= lConfigWidget.cpp index e2204fde0d..95fbabf2d3 100644 --- a/libs/ui/widgets/KoFillConfigWidget.cpp +++ b/libs/ui/widgets/KoFillConfigWidget.cpp @@ -206,7 +206,7 @@ public: SvgMeshPosition meshposition; QScopedPointer activeMeshGradient; = - Ui_KoFillConfigWidget *ui; + QScopedPointer ui; = std::vector deactivationLocks; = @@ -248,7 +248,7 @@ KoFillConfigWidget::KoFillConfigWidget(KoCanvasBase *ca= nvas, KoFlake::FillVarian = // configure GUI = - d->ui =3D new Ui_KoFillConfigWidget(); + d->ui.reset(new Ui_KoFillConfigWidget()); d->ui->setupUi(this); = d->group =3D new QButtonGroup(this); diff --git a/libs/ui/widgets/KoStrokeConfigWidget.cpp b/libs/ui/widgets/KoS= trokeConfigWidget.cpp index 3895d5fda2..040c10082e 100644 --- a/libs/ui/widgets/KoStrokeConfigWidget.cpp +++ b/libs/ui/widgets/KoStrokeConfigWidget.cpp @@ -194,7 +194,7 @@ public: = std::vector deactivationLocks; = - Ui_KoStrokeConfigWidget *ui; + QScopedPointer ui; }; = = @@ -203,7 +203,7 @@ KoStrokeConfigWidget::KoStrokeConfigWidget(KoCanvasBase= *canvas, QWidget * paren , d(new Private()) { // configure GUI - d->ui =3D new Ui_KoStrokeConfigWidget(); + d->ui.reset(new Ui_KoStrokeConfigWidget()); d->ui->setupUi(this); = setObjectName("Stroke widget"); diff --git a/plugins/dockers/arrangedocker/arrange_docker_widget.h b/plugin= s/dockers/arrangedocker/arrange_docker_widget.h index 17768cd0e7..a2b47b7384 100644 --- a/plugins/dockers/arrangedocker/arrange_docker_widget.h +++ b/plugins/dockers/arrangedocker/arrange_docker_widget.h @@ -41,7 +41,7 @@ public: void switchState(bool enabled); = private: - Ui::ArrangeDockerWidget *ui; + QScopedPointer ui; = struct Private; const QScopedPointer m_d; diff --git a/plugins/dockers/specificcolorselector/kis_specific_color_selec= tor_widget.cc b/plugins/dockers/specificcolorselector/kis_specific_color_se= lector_widget.cc index 94f5cab633..51032abf24 100644 --- a/plugins/dockers/specificcolorselector/kis_specific_color_selector_wid= get.cc +++ b/plugins/dockers/specificcolorselector/kis_specific_color_selector_wid= get.cc @@ -53,7 +53,7 @@ KisSpecificColorSelectorWidget::KisSpecificColorSelectorW= idget(QWidget* parent) , m_displayConverter(0) { = - m_ui =3D new Ui_wdgSpecificColorSelectorWidget(); + m_ui.reset(new Ui_wdgSpecificColorSelectorWidget()); m_ui->setupUi(this); = m_updateAllowed =3D true; diff --git a/plugins/dockers/specificcolorselector/kis_specific_color_selec= tor_widget.h b/plugins/dockers/specificcolorselector/kis_specific_color_sel= ector_widget.h index 272a3c54c1..5142fde01b 100644 --- a/plugins/dockers/specificcolorselector/kis_specific_color_selector_wid= get.h +++ b/plugins/dockers/specificcolorselector/kis_specific_color_selector_wid= get.h @@ -71,7 +71,7 @@ private: KisSignalCompressor *m_updateCompressor; KisColorSpaceSelector *m_colorspaceSelector; bool m_customColorSpaceSelected; - Ui_wdgSpecificColorSelectorWidget* m_ui; + QScopedPointer m_ui; = = KisDisplayColorConverter *m_displayConverter; diff --git a/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.= cpp b/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.cpp index ca26e9cf57..33848dfe43 100644 --- a/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.cpp +++ b/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.cpp @@ -228,6 +228,10 @@ SvgSymbolCollectionDocker::SvgSymbolCollectionDocker(Q= Widget *parent) collectionActivated(i); } = +SvgSymbolCollectionDocker::~SvgSymbolCollectionDocker() +{ +} + void SvgSymbolCollectionDocker::slotSetIconSize() { m_wdgSvgCollection->listCollection->setIconSize(QSize(m_iconSizeSlider= ->value(),m_iconSizeSlider->value())); diff --git a/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.= h b/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.h index 22a0b1224c..be601c0efb 100644 --- a/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.h +++ b/plugins/dockers/svgcollectiondocker/SvgSymbolCollectionDocker.h @@ -70,6 +70,7 @@ class SvgSymbolCollectionDocker : public QDockWidget, pub= lic KoCanvasObserverBas public: = explicit SvgSymbolCollectionDocker(QWidget *parent =3D 0); + ~SvgSymbolCollectionDocker(); = /// reimplemented void setCanvas(KoCanvasBase *canvas) override; @@ -84,7 +85,7 @@ private Q_SLOTS: void slotSetIconSize(); private: = - Ui_WdgSvgCollection *m_wdgSvgCollection; + QScopedPointer m_wdgSvgCollection; QVector m_models; QSlider* m_iconSizeSlider; };