Commit 3a9baeee authored by KLOCZKO Thibaud's avatar KLOCZKO Thibaud

Remove parenthood before delete custom menu item.

parent d3ef2bd0
......@@ -18,6 +18,47 @@
#include <dtkThemes>
#include <dtkThemesWidgets>
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemDIYPrivate
// ///////////////////////////////////////////////////////////////////
class dtkWidgetsMenuItemDIYPrivate
{
public:
QWidget *source = nullptr;
QWidget *widget = nullptr;
};
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemDIY implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItemDIY::dtkWidgetsMenuItemDIY(const QString& title, QWidget *widget) : dtkWidgetsMenuItemCustom(title), d(new dtkWidgetsMenuItemDIYPrivate)
{
d->source = widget;
if (title.isEmpty()) {
d->widget = widget;
} else {
d->widget = new QWidget;
QFormLayout *layout = new QFormLayout;
layout->addRow(this->title(), widget);
d->widget->setLayout(layout);
}
}
dtkWidgetsMenuItemDIY::~dtkWidgetsMenuItemDIY(void)
{
d->source->setParent(nullptr);
delete d;
}
QWidget *dtkWidgetsMenuItemDIY::widget(void)
{
return d->widget;
}
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemWorkspacePrivate
// ///////////////////////////////////////////////////////////////////
......@@ -29,18 +70,17 @@ public:
};
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemWorkspace
// dtkWidgetsMenuItemWorkspace implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItemWorkspace::dtkWidgetsMenuItemWorkspace(const QString& title, dtkWidgetsWorkspaceStackBar *bar) : dtkWidgetsMenuItemCustom(title)
dtkWidgetsMenuItemWorkspace::dtkWidgetsMenuItemWorkspace(const QString& title, dtkWidgetsWorkspaceStackBar *bar) : dtkWidgetsMenuItemCustom(title), d(new dtkWidgetsMenuItemWorkspacePrivate)
{
d = new dtkWidgetsMenuItemWorkspacePrivate;
d->widget = bar;
}
dtkWidgetsMenuItemWorkspace::~dtkWidgetsMenuItemWorkspace(void)
{
d->widget->setParent(nullptr);
delete d;
}
......@@ -63,12 +103,11 @@ public:
};
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemTheme
// dtkWidgetsMenuItemTheme implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItemTheme::dtkWidgetsMenuItemTheme(const QString& theme) : dtkWidgetsMenuItemCustom(theme)
dtkWidgetsMenuItemTheme::dtkWidgetsMenuItemTheme(const QString& theme) : dtkWidgetsMenuItemCustom(theme), d(new dtkWidgetsMenuItemThemePrivate)
{
d = new dtkWidgetsMenuItemThemePrivate;
d->theme = theme;
}
......
......@@ -17,7 +17,7 @@
#include "dtkWidgetsMenuItem.h"
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItemDIY interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItemDIY : public dtkWidgetsMenuItemCustom
......@@ -25,39 +25,18 @@ class DTKWIDGETS_EXPORT dtkWidgetsMenuItemDIY : public dtkWidgetsMenuItemCustom
Q_OBJECT
public:
dtkWidgetsMenuItemDIY(const QString& title, QWidget *widget) : dtkWidgetsMenuItemCustom(title), s_widget(widget)
{
}
~dtkWidgetsMenuItemDIY(void) {
}
dtkWidgetsMenuItemDIY(const QString& title, QWidget *widget);
~dtkWidgetsMenuItemDIY(void);
public:
QWidget *widget(void) override {
if( this->title().isEmpty())
return s_widget;
if(!this->d_widget) {
this->d_widget = new QWidget;
QFormLayout *layout = new QFormLayout;
layout->addRow(this->title(), this->s_widget);
d_widget->setLayout(layout);
}
return d_widget;
};
QWidget *widget(void) override;
private:
QWidget *s_widget = nullptr;
QWidget *d_widget = nullptr;
class dtkWidgetsMenuItemDIYPrivate *d;
};
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItemWorkspace interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItemWorkspace : public dtkWidgetsMenuItemCustom
......@@ -76,7 +55,7 @@ private:
};
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItemTheme interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItemTheme : public dtkWidgetsMenuItemCustom
......
......@@ -33,7 +33,7 @@ public:
};
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItem
// dtkWidgetsMenuItem implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItem::dtkWidgetsMenuItem(QObject *parent) : QAction(parent), d(new dtkWidgetsMenuItemPrivate)
......@@ -79,16 +79,20 @@ public:
};
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItem
// dtkWidgetsMenuItem implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItemParameter::dtkWidgetsMenuItemParameter(const QString& title, dtkCoreParameter *parameter, const QString& representation) : dtkWidgetsMenuItem(0, title, 0)
dtkWidgetsMenuItemParameter::dtkWidgetsMenuItemParameter(const QString& title, dtkCoreParameter *parameter, const QString& representation) : dtkWidgetsMenuItem(0, title, 0), d(new dtkWidgetsMenuItemParameterPrivate)
{
d = new dtkWidgetsMenuItemParameterPrivate;
d->parameter = parameter;
d->widget = ::dtk::widgets::parameters::pluginFactory().create(parameter, representation);
}
dtkWidgetsMenuItemParameter::~dtkWidgetsMenuItemParameter(void)
{
delete d;
}
dtkCoreParameter *dtkWidgetsMenuItemParameter::parameter(void)
{
return d->parameter;
......@@ -99,5 +103,14 @@ dtkWidgetsParameter *dtkWidgetsMenuItemParameter::widget(void)
return d->widget;
}
// ///////////////////////////////////////////////////////////////////
// dtkWidgetsMenuItemCustom implementation
// ///////////////////////////////////////////////////////////////////
dtkWidgetsMenuItemCustom::dtkWidgetsMenuItemCustom(const QString& title) : dtkWidgetsMenuItem(0, title, 0)
{
}
//
// dtkWidgetsMenuItem.cpp ends here
......@@ -19,21 +19,13 @@
#include <QtCore>
#include <QtWidgets>
// /////////////////////////////////////////////////////////////////////////////
//
// /////////////////////////////////////////////////////////////////////////////
class dtkCoreParameter;
// /////////////////////////////////////////////////////////////////////////////
//
// /////////////////////////////////////////////////////////////////////////////
class dtkWidgetsParameter;
class dtkWidgetsWorkspaceStackBar;
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItem interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItem : public QAction
......@@ -64,7 +56,7 @@ protected:
};
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItemParameter interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItemParameter : public dtkWidgetsMenuItem
......@@ -73,6 +65,7 @@ class DTKWIDGETS_EXPORT dtkWidgetsMenuItemParameter : public dtkWidgetsMenuItem
public:
explicit dtkWidgetsMenuItemParameter(const QString& title, dtkCoreParameter *parameter, const QString& representation);
~dtkWidgetsMenuItemParameter(void);
public:
bool isParameter(void) const override { return true; }
......@@ -86,7 +79,7 @@ private:
};
// /////////////////////////////////////////////////////////////////////////////
//
// dtkWidgetsMenuItemCustom interface
// /////////////////////////////////////////////////////////////////////////////
class DTKWIDGETS_EXPORT dtkWidgetsMenuItemCustom : public dtkWidgetsMenuItem
......@@ -103,8 +96,8 @@ signals:
void clicked(void);
protected:
dtkWidgetsMenuItemCustom(const QString& title) : dtkWidgetsMenuItem(0, title, 0) {}
virtual ~dtkWidgetsMenuItemCustom(void) {}
dtkWidgetsMenuItemCustom(const QString& title);
~dtkWidgetsMenuItemCustom(void) = default;
};
//
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment