aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs/quickdialogsquickimpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl')
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp7
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h2
-rw-r--r--src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp20
3 files changed, 24 insertions, 5 deletions
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp
index 5b5b2abdae..1ec04be2f7 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp
+++ b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker.cpp
@@ -94,6 +94,13 @@ QQuickAbstractColorPicker::QQuickAbstractColorPicker(QQuickAbstractColorPickerPr
setAcceptedMouseButtons(Qt::LeftButton);
}
+QQuickAbstractColorPicker::~QQuickAbstractColorPicker()
+{
+ Q_D(QQuickAbstractColorPicker);
+ if (d->m_handle)
+ d->removeImplicitSizeListener(d->m_handle);
+}
+
QColor QQuickAbstractColorPicker::color() const
{
Q_D(const QQuickAbstractColorPicker);
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h
index b29e488b3a..b2117dac15 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h
+++ b/src/quickdialogs/quickdialogsquickimpl/qquickabstractcolorpicker_p.h
@@ -43,6 +43,8 @@ class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickAbstractColorPicker : public
QML_UNCREATABLE("AbstractColorPicker is abstract.")
public:
+ ~QQuickAbstractColorPicker() override;
+
QColor color() const;
void setColor(const QColor &c);
diff --git a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp
index 594b148528..4cd0fa73af 100644
--- a/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp
+++ b/src/quickdialogs/quickdialogsquickimpl/qquickdialogimplfactory.cpp
@@ -29,25 +29,35 @@ std::unique_ptr<QPlatformDialogHelper> QQuickDialogImplFactory::createPlatformDi
std::unique_ptr<QPlatformDialogHelper> dialogHelper;
switch (type) {
case QQuickDialogType::ColorDialog: {
- dialogHelper.reset(new QQuickPlatformColorDialog(parent));
+ auto *quickPlatformDialog = new QQuickPlatformColorDialog(parent);
+ if (quickPlatformDialog->isValid())
+ dialogHelper.reset(quickPlatformDialog);
break;
}
#if QT_CONFIG(quick_listview)
case QQuickDialogType::FileDialog: {
- dialogHelper.reset(new QQuickPlatformFileDialog(parent));
+ auto *quickPlatformDialog = new QQuickPlatformFileDialog(parent);
+ if (quickPlatformDialog->isValid())
+ dialogHelper.reset(quickPlatformDialog);
break;
}
case QQuickDialogType::FolderDialog: {
- dialogHelper.reset(new QQuickPlatformFolderDialog(parent));
+ auto *quickPlatformDialog = new QQuickPlatformFolderDialog(parent);
+ if (quickPlatformDialog->isValid())
+ dialogHelper.reset(quickPlatformDialog);
break;
}
case QQuickDialogType::FontDialog: {
- dialogHelper.reset(new QQuickPlatformFontDialog(parent));
+ auto *quickPlatformDialog = new QQuickPlatformFontDialog(parent);
+ if (quickPlatformDialog->isValid())
+ dialogHelper.reset(quickPlatformDialog);
break;
}
#endif
case QQuickDialogType::MessageDialog: {
- dialogHelper.reset(new QQuickPlatformMessageDialog(parent));
+ auto *quickPlatformDialog = new QQuickPlatformMessageDialog(parent);
+ if (quickPlatformDialog->isValid())
+ dialogHelper.reset(quickPlatformDialog);
break;
}
default: