From b834f742994e5dce69c3fdc161099f2ed20deff9 Mon Sep 17 00:00:00 2001 From: Vladimir Moolle Date: Sun, 27 Dec 2015 21:13:31 +0300 Subject: Android: fix Dialog window decorations' dismiss-on-click behavior This fixes the case when a modal dialog is instantiated in a visible state, which often means, the window decoration component has not been loaded yet. Previously, this led to dismissOnOuterClick property in DefaultWindowDecoration keeping its initial value of "true" and thus allowing dismissing the dialog via an outside click *the first time the dialog was hidden* (next times, the property would get updated and the behavior would be correct). Task-number: QTBUG-47369 Change-Id: I24c7c8a1eb785203a3b3f1d889b7e22480ea952f Reviewed-by: Mitch Curtis --- src/dialogs/qquickabstractdialog.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/dialogs/qquickabstractdialog.cpp') diff --git a/src/dialogs/qquickabstractdialog.cpp b/src/dialogs/qquickabstractdialog.cpp index ba65bd8b..874b9be0 100644 --- a/src/dialogs/qquickabstractdialog.cpp +++ b/src/dialogs/qquickabstractdialog.cpp @@ -189,7 +189,7 @@ void QQuickAbstractDialog::setVisible(bool v) } } if (m_windowDecoration) { - m_windowDecoration->setProperty("dismissOnOuterClick", (m_modality == Qt::NonModal)); + setDecorationDismissBehavior(); m_windowDecoration->setVisible(v); } else if (m_dialogWindow) { if (v) { @@ -220,6 +220,7 @@ void QQuickAbstractDialog::decorationLoaded() QVariant contentVariant; contentVariant.setValue(m_contentItem); m_windowDecoration->setProperty("content", contentVariant); + setDecorationDismissBehavior(); connect(m_windowDecoration, SIGNAL(dismissed()), this, SLOT(reject())); ok = true; qCDebug(lcWindow) << "using synthetic window decoration" << m_windowDecoration << "from" << m_decorationComponent->url(); @@ -309,6 +310,11 @@ QQuickWindow *QQuickAbstractDialog::parentWindow() return m_parentWindow; } +void QQuickAbstractDialog::setDecorationDismissBehavior() +{ + m_windowDecoration->setProperty("dismissOnOuterClick", (m_modality == Qt::NonModal)); +} + void QQuickAbstractDialog::setContentItem(QQuickItem *obj) { m_contentItem = obj; -- cgit v1.2.1