From 24947fb8cc1859d5d193b2d66746c1541f30ab9b Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Wed, 19 Jun 2013 12:41:07 +0200 Subject: QColorDialogHelper: Force QWindow before setting flags This needs the same fix as the one in the QFileDialogHelper (change I7a3b2321f4a1bf179dced8e98598559f396386db). However to be even safer, we can check for a null pointer before calling any methods on the QWindow. Task-number: QTBUG-31834 Change-Id: I319326f06fb2c92dc898fd12be86b6c7b7f87e5a Reviewed-by: Friedemann Kleint --- src/imports/widgets/qquickqcolordialog.cpp | 7 +++++-- src/imports/widgets/qquickqfiledialog.cpp | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'src/imports/widgets') diff --git a/src/imports/widgets/qquickqcolordialog.cpp b/src/imports/widgets/qquickqcolordialog.cpp index abe6ffd004..d10eacee60 100644 --- a/src/imports/widgets/qquickqcolordialog.cpp +++ b/src/imports/widgets/qquickqcolordialog.cpp @@ -68,8 +68,11 @@ public: virtual void exec() { m_dialog.exec(); } virtual bool show(Qt::WindowFlags f, Qt::WindowModality m, QWindow *parent) { - m_dialog.windowHandle()->setTransientParent(parent); - m_dialog.windowHandle()->setFlags(f); + m_dialog.winId(); + QWindow *window = m_dialog.windowHandle(); + Q_ASSERT(window); + window->setTransientParent(parent); + window->setFlags(f); m_dialog.setWindowModality(m); m_dialog.setWindowTitle(QPlatformColorDialogHelper::options()->windowTitle()); m_dialog.setOptions((QColorDialog::ColorDialogOptions)((int)(QPlatformColorDialogHelper::options()->options()))); diff --git a/src/imports/widgets/qquickqfiledialog.cpp b/src/imports/widgets/qquickqfiledialog.cpp index 4c5e1b6e37..afb150b509 100644 --- a/src/imports/widgets/qquickqfiledialog.cpp +++ b/src/imports/widgets/qquickqfiledialog.cpp @@ -97,8 +97,10 @@ public: virtual bool show(Qt::WindowFlags f, Qt::WindowModality m, QWindow *parent) { m_dialog.winId(); - m_dialog.windowHandle()->setTransientParent(parent); - m_dialog.windowHandle()->setFlags(f); + QWindow *window = m_dialog.windowHandle(); + Q_ASSERT(window); + window->setTransientParent(parent); + window->setFlags(f); m_dialog.setWindowModality(m); m_dialog.show(); return m_dialog.isVisible(); -- cgit v1.2.3