aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformcolordialog.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-14 11:01:38 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-14 09:25:42 +0000
commit2e09e597ab3df5a13f89e945a0a90724d5c5a3f0 (patch)
treef671841761cc372ddb1499574172564dd1378505 /src/imports/platform/qquickplatformcolordialog.cpp
parentdeb0921b8240a0240e595896debb973a6104935a (diff)
Platform: create platform dialog instances lazily on demand
Change-Id: Ie963cb5c082b49205f7b7244ace3b88254ec37c7 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src/imports/platform/qquickplatformcolordialog.cpp')
-rw-r--r--src/imports/platform/qquickplatformcolordialog.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/imports/platform/qquickplatformcolordialog.cpp b/src/imports/platform/qquickplatformcolordialog.cpp
index c86c0030..b71797f5 100644
--- a/src/imports/platform/qquickplatformcolordialog.cpp
+++ b/src/imports/platform/qquickplatformcolordialog.cpp
@@ -102,19 +102,6 @@ Q_DECLARE_LOGGING_CATEGORY(qtLabsPlatformDialogs)
QQuickPlatformColorDialog::QQuickPlatformColorDialog(QObject *parent)
: QQuickPlatformDialog(parent), m_options(QColorDialogOptions::create())
{
- QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::ColorDialog);
-#ifdef QT_WIDGETS_LIB
- if (!dialog)
- dialog = new QWidgetPlatformColorDialog(this);
-#endif
- qCDebug(qtLabsPlatformDialogs) << "ColorDialog:" << dialog;
-
- if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(dialog)) {
- connect(colorDialog, &QPlatformColorDialogHelper::currentColorChanged, this, &QQuickPlatformColorDialog::currentColorChanged);
- connect(colorDialog, &QPlatformColorDialogHelper::colorSelected, this, &QQuickPlatformColorDialog::colorSelected);
- colorDialog->setOptions(m_options);
- }
- setHandle(dialog);
}
/*!
@@ -166,6 +153,23 @@ void QQuickPlatformColorDialog::setOptions(QColorDialogOptions::ColorDialogOptio
emit optionsChanged();
}
+QPlatformDialogHelper *QQuickPlatformColorDialog::createHelper()
+{
+ QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::ColorDialog);
+#ifdef QT_WIDGETS_LIB
+ if (!dialog)
+ dialog = new QWidgetPlatformColorDialog(this);
+#endif
+ qCDebug(qtLabsPlatformDialogs) << "ColorDialog:" << dialog;
+
+ if (QPlatformColorDialogHelper *colorDialog = qobject_cast<QPlatformColorDialogHelper *>(dialog)) {
+ connect(colorDialog, &QPlatformColorDialogHelper::currentColorChanged, this, &QQuickPlatformColorDialog::currentColorChanged);
+ connect(colorDialog, &QPlatformColorDialogHelper::colorSelected, this, &QQuickPlatformColorDialog::colorSelected);
+ colorDialog->setOptions(m_options);
+ }
+ return dialog;
+}
+
void QQuickPlatformColorDialog::applyOptions()
{
m_options->setWindowTitle(title());