summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@digia.com>2014-10-30 15:29:13 +0100
committerShawn Rutledge <shawn.rutledge@digia.com>2014-10-30 15:36:47 +0100
commit41e66ea6daa47d940365a458e7a12977bb32c690 (patch)
tree44affbaf9282e2451f080379a41522279264aabf /src
parent3a851dfd4078b3ca9f9c1b06424b136cc6f852c5 (diff)
Dialogs: FileDialog can only be modal on Windows
The autotest has been failing on Windows because of this. Change-Id: I6ec42a256455d7a71a522fa7e75dc44f93b741ea Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/dialogs/qquickplatformfiledialog.cpp15
-rw-r--r--src/dialogs/qquickplatformfiledialog_p.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/dialogs/qquickplatformfiledialog.cpp b/src/dialogs/qquickplatformfiledialog.cpp
index 7ed4e3fbc..141f701d1 100644
--- a/src/dialogs/qquickplatformfiledialog.cpp
+++ b/src/dialogs/qquickplatformfiledialog.cpp
@@ -172,6 +172,21 @@ QQuickPlatformFileDialog::~QQuickPlatformFileDialog()
delete m_dlgHelper;
}
+void QQuickPlatformFileDialog::setModality(Qt::WindowModality m)
+{
+#ifdef Q_OS_WIN
+ // A non-modal native file dialog is not possible on Windows, so
+ // be stubborn about it. Emit modalityChanged() whether it changed
+ // or not, to ensure that anything which depends on the property
+ // will re-read the actual current value.
+ if (m != Qt::ApplicationModal)
+ m = Qt::ApplicationModal;
+ if (m == m_modality)
+ emit modalityChanged();
+#endif
+ QQuickAbstractFileDialog::setModality(m);
+}
+
QPlatformFileDialogHelper *QQuickPlatformFileDialog::helper()
{
QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent());
diff --git a/src/dialogs/qquickplatformfiledialog_p.h b/src/dialogs/qquickplatformfiledialog_p.h
index 411a78242..f21d01406 100644
--- a/src/dialogs/qquickplatformfiledialog_p.h
+++ b/src/dialogs/qquickplatformfiledialog_p.h
@@ -56,6 +56,7 @@ class QQuickPlatformFileDialog : public QQuickAbstractFileDialog
public:
QQuickPlatformFileDialog(QObject *parent = 0);
virtual ~QQuickPlatformFileDialog();
+ virtual void setModality(Qt::WindowModality m) Q_DECL_OVERRIDE;
protected:
QPlatformFileDialogHelper *helper();