diff options
Diffstat (limited to 'src/quickdialogs/quickdialogsquickimpl')
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: |
