diff options
-rw-r--r-- | src/gui/dialogs/qwizard.cpp | 29 | ||||
-rw-r--r-- | tests/auto/qwizard/tst_qwizard.cpp | 42 |
2 files changed, 58 insertions, 13 deletions
diff --git a/src/gui/dialogs/qwizard.cpp b/src/gui/dialogs/qwizard.cpp index fbc7a7922c..20c9edc531 100644 --- a/src/gui/dialogs/qwizard.cpp +++ b/src/gui/dialogs/qwizard.cpp @@ -1350,6 +1350,21 @@ void QWizardPrivate::updateCurrentPage() updateButtonTexts(); } +static QString object_name_for_button(QWizard::WizardButton which) +{ + switch (which) { + case QWizard::CommitButton: + return QLatin1String("qt_wizard_") + QLatin1String("commit"); + case QWizard::FinishButton: + return QLatin1String("qt_wizard_") + QLatin1String("finish"); + case QWizard::CancelButton: + return QLatin1String("qt_wizard_") + QLatin1String("cancel"); + default: + // Make navigation buttons detectable as passive interactor in designer + return QLatin1String("__qt__passive_wizardbutton") + QString::number(which); + } +} + bool QWizardPrivate::ensureButton(QWizard::WizardButton which) const { Q_Q(const QWizard); @@ -1361,19 +1376,7 @@ bool QWizardPrivate::ensureButton(QWizard::WizardButton which) const QStyle *style = q->style(); if (style != QApplication::style()) // Propagate style pushButton->setStyle(style); - // Make navigation buttons detectable as passive interactor in designer - switch (which) { - case QWizard::CommitButton: - case QWizard::FinishButton: - case QWizard::CancelButton: - break; - default: { - QString objectName = QLatin1String("__qt__passive_wizardbutton"); - objectName += QString::number(which); - pushButton->setObjectName(objectName); - } - break; - } + pushButton->setObjectName(object_name_for_button(which)); #ifdef Q_WS_MAC pushButton->setAutoDefault(false); #endif diff --git a/tests/auto/qwizard/tst_qwizard.cpp b/tests/auto/qwizard/tst_qwizard.cpp index 54693b8bba..0439bd957b 100644 --- a/tests/auto/qwizard/tst_qwizard.cpp +++ b/tests/auto/qwizard/tst_qwizard.cpp @@ -57,6 +57,8 @@ //TESTED_CLASS= //TESTED_FILES= +Q_DECLARE_METATYPE(QWizard::WizardButton); + static QImage grabWidget(QWidget *window) { return QPixmap::grabWidget(window).toImage(); @@ -105,6 +107,8 @@ private slots: void setWizardStyle(); void removePage(); void sideWidget(); + void objectNames_data(); + void objectNames(); // task-specific tests below me: void task161660_buttonSpacing(); @@ -2414,6 +2418,44 @@ void tst_QWizard::task161660_buttonSpacing() #endif } +void tst_QWizard::objectNames_data() +{ + QTest::addColumn<QWizard::WizardButton>("wizardButton"); + QTest::addColumn<QString>("buttonName"); + + QTest::newRow("BackButton") << QWizard::BackButton << QString::fromLatin1("__qt__passive_wizardbutton0"); + QTest::newRow("NextButton") << QWizard::NextButton << QString::fromLatin1("__qt__passive_wizardbutton1"); + QTest::newRow("CommitButton") << QWizard::CommitButton << QString::fromLatin1("qt_wizard_commit"); + QTest::newRow("FinishButton") << QWizard::FinishButton << QString::fromLatin1("qt_wizard_finish"); + QTest::newRow("CancelButton") << QWizard::CancelButton << QString::fromLatin1("qt_wizard_cancel"); + QTest::newRow("HelpButton") << QWizard::HelpButton << QString::fromLatin1("__qt__passive_wizardbutton5"); + QTest::newRow("CustomButton1") << QWizard::CustomButton1 << QString::fromLatin1("__qt__passive_wizardbutton6"); + QTest::newRow("CustomButton2") << QWizard::CustomButton2 << QString::fromLatin1("__qt__passive_wizardbutton7"); + QTest::newRow("CustomButton3") << QWizard::CustomButton3 << QString::fromLatin1("__qt__passive_wizardbutton8"); +} + +void tst_QWizard::objectNames() +{ + QFETCH(QWizard::WizardButton, wizardButton); + QFETCH(QString, buttonName); + + QWizard wizard; + QList<QWizard::WizardButton> buttons = QList<QWizard::WizardButton>() + << QWizard::BackButton + << QWizard::NextButton + << QWizard::CommitButton + << QWizard::FinishButton + << QWizard::CancelButton + << QWizard::HelpButton + << QWizard::CustomButton1 + << QWizard::CustomButton2 + << QWizard::CustomButton3 + ; + QVERIFY(buttons.contains(wizardButton)); + QVERIFY(wizard.button(wizardButton)); + QCOMPARE(wizard.button(wizardButton)->objectName(), buttonName); +} + class task177716_CommitPage : public QWizardPage { Q_OBJECT |