From de59f732fc278ca024e96bb70735e94f7040625d Mon Sep 17 00:00:00 2001 From: Axel Spoerl Date: Thu, 31 Aug 2023 15:36:47 +0200 Subject: [PATCH] QMessageBox::about / aboutQt - use native modal dialog on iOS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The about / aboutQt statics in QMessageBox used a non-native, non-modal dialog box on all operating systems. This creates a grid layout with labels for heading, text and icon. This has two unwanted side-effects on iOS: - When the screen size is not sufficient to display all text, the text is not rendered. On an iPhone SE for example, only the Qt icon is visible. - When the screen height exceeds the minimum requirement, the informative text is bottom-aligned. => Show about(Qt) message boxes in a modal, native dialog. => Update documentation. This partly reverts aafed07dee5fd2d22518e49c4fa7798735e9e681. [ChangeLog][iOS] QMessageBox::about(Qt) now shows native, modal dialog. Fixes: QTBUG-115832 Pick-to: 6.2 Change-Id: I4cfbce416e7d2717058bef9a050a85d424b8a03d Reviewed-by: Tor Arne Vestbø (cherry picked from commit 6f5136ef6661150046b64992fb78b23f02da0ef2) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 29d20a781cfff2980382ed5421c5417d4c6dfb55) --- src/widgets/dialogs/qmessagebox.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp index d29073985a2..035691f86a6 100644 --- a/src/widgets/dialogs/qmessagebox.cpp +++ b/src/widgets/dialogs/qmessagebox.cpp @@ -1819,9 +1819,10 @@ QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString \li As a last resort it uses the Information icon. \endlist - The about box has a single button labelled "OK". On \macos, the - about box is popped up as a modeless window; on other platforms, - it is currently application modal. + The about box has a single button labelled "OK". + + On \macos, the about box is popped up as a modeless window; on + other platforms, it is currently application modal. \sa QWidget::windowIcon(), QApplication::activeWindow() */ @@ -1851,8 +1852,13 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te // should perhaps be a style hint #ifdef Q_OS_MAC oldMsgBox = msgBox; - msgBox->d_func()->buttonBox->setCenterButtons(true); + auto *d = msgBox->d_func(); + d->buttonBox->setCenterButtons(true); +#ifdef Q_OS_IOS + msgBox->setModal(true); +#else msgBox->setModal(false); +#endif msgBox->show(); #else msgBox->exec(); @@ -1869,7 +1875,7 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te QApplication provides this functionality as a slot. - On \macos, the about box is popped up as a modeless window; on + On \macos, the aboutQt box is popped up as a modeless window; on other platforms, it is currently application modal. \sa QApplication::aboutQt() @@ -1932,8 +1938,13 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title) // should perhaps be a style hint #ifdef Q_OS_MAC oldMsgBox = msgBox; - msgBox->d_func()->buttonBox->setCenterButtons(true); + auto *d = msgBox->d_func(); + d->buttonBox->setCenterButtons(true); +#ifdef Q_OS_IOS + msgBox->setModal(true); +#else msgBox->setModal(false); +#endif msgBox->show(); #else msgBox->exec();