aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformdialog.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/qquickplatformdialog.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/qquickplatformdialog.cpp')
-rw-r--r--src/imports/platform/qquickplatformdialog.cpp41
1 files changed, 22 insertions, 19 deletions
diff --git a/src/imports/platform/qquickplatformdialog.cpp b/src/imports/platform/qquickplatformdialog.cpp
index 5f28ca05..68321554 100644
--- a/src/imports/platform/qquickplatformdialog.cpp
+++ b/src/imports/platform/qquickplatformdialog.cpp
@@ -94,31 +94,16 @@ QQuickPlatformDialog::QQuickPlatformDialog(QObject *parent)
QQuickPlatformDialog::~QQuickPlatformDialog()
{
- delete m_handle;
- m_handle = nullptr;
+ destroy();
}
QPlatformDialogHelper *QQuickPlatformDialog::handle() const
{
+ if (!m_handle)
+ const_cast<QQuickPlatformDialog *>(this)->create();
return m_handle;
}
-void QQuickPlatformDialog::setHandle(QPlatformDialogHelper *handle)
-{
- if (m_handle == handle)
- return;
-
- if (m_handle) {
- disconnect(m_handle, &QPlatformDialogHelper::accept, this, &QQuickPlatformDialog::accept);
- disconnect(m_handle, &QPlatformDialogHelper::reject, this, &QQuickPlatformDialog::reject);
- }
- m_handle = handle;
- if (handle) {
- connect(handle, &QPlatformDialogHelper::accept, this, &QQuickPlatformDialog::accept);
- connect(handle, &QPlatformDialogHelper::reject, this, &QQuickPlatformDialog::reject);
- }
-}
-
/*!
\default
\qmlproperty list<Object> Qt.labs.platform::Dialog::data
@@ -245,7 +230,7 @@ void QQuickPlatformDialog::setVisible(bool visible)
*/
void QQuickPlatformDialog::open()
{
- if (!m_handle || m_visible)
+ if (m_visible || !create())
return;
applyOptions();
@@ -308,6 +293,24 @@ void QQuickPlatformDialog::componentComplete()
setParentWindow(findParentWindow());
}
+bool QQuickPlatformDialog::create()
+{
+ if (!m_handle) {
+ m_handle = createHelper();
+ if (m_handle) {
+ connect(m_handle, &QPlatformDialogHelper::accept, this, &QQuickPlatformDialog::accept);
+ connect(m_handle, &QPlatformDialogHelper::reject, this, &QQuickPlatformDialog::reject);
+ }
+ }
+ return m_handle;
+}
+
+void QQuickPlatformDialog::destroy()
+{
+ delete m_handle;
+ m_handle = nullptr;
+}
+
void QQuickPlatformDialog::applyOptions()
{
}