diff options
| author | BogDan Vatra <[email protected]> | 2013-11-09 09:21:02 +0200 |
|---|---|---|
| committer | The Qt Project <[email protected]> | 2013-11-09 10:41:25 +0100 |
| commit | ef6544ee27aeab20a64b4df4bd50401cefa405ef (patch) | |
| tree | dfd888a0585d4d52951619ac1af1bb9aad0f06e5 /src/widgets/dialogs/qdialog.cpp | |
| parent | 315ba388f32ad7943c226f2faba4e9b35e899dc9 (diff) | |
Android native message dialog
Change-Id: Ief8c3ce3b8683c6960f046245844c1835a327d51
Reviewed-by: Shawn Rutledge <[email protected]>
Diffstat (limited to 'src/widgets/dialogs/qdialog.cpp')
| -rw-r--r-- | src/widgets/dialogs/qdialog.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp index af352e45c60..d498b077fc3 100644 --- a/src/widgets/dialogs/qdialog.cpp +++ b/src/widgets/dialogs/qdialog.cpp @@ -52,6 +52,8 @@ #include "qwhatsthis.h" #include "qmenu.h" #include "qcursor.h" +#include "qmessagebox.h" +#include "qerrormessage.h" #include <qpa/qplatformtheme.h> #include "private/qdialog_p.h" #include "private/qguiapplication_p.h" @@ -75,6 +77,14 @@ static inline int themeDialogType(const QDialog *dialog) if (qobject_cast<const QFontDialog *>(dialog)) return QPlatformTheme::FontDialog; #endif +#ifndef QT_NO_MESSAGEBOX + if (qobject_cast<const QMessageBox *>(dialog)) + return QPlatformTheme::MessageDialog; +#endif +#ifndef QT_NO_ERRORMESSAGE + if (qobject_cast<const QErrorMessage *>(dialog)) + return QPlatformTheme::MessageDialog; +#endif return -1; } @@ -100,6 +110,17 @@ QPlatformDialogHelper *QDialogPrivate::platformHelper() const return m_platformHelper; } +bool QDialogPrivate::canBeNativeDialog() const +{ + QDialogPrivate *ncThis = const_cast<QDialogPrivate *>(this); + QDialog *dialog = ncThis->q_func(); + const int type = themeDialogType(dialog); + if (type >= 0) + return QGuiApplicationPrivate::platformTheme() + ->usePlatformNativeDialog(static_cast<QPlatformTheme::DialogType>(type)); + return false; +} + QWindow *QDialogPrivate::parentWindow() const { if (const QWidget *parent = q_func()->nativeParentWidget()) @@ -697,6 +718,9 @@ void QDialog::closeEvent(QCloseEvent *e) void QDialog::setVisible(bool visible) { Q_D(QDialog); + if (!testAttribute(Qt::WA_DontShowOnScreen) && d->canBeNativeDialog() && d->setNativeDialogVisible(visible)) + return; + if (visible) { if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden)) return; |
