diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-03-10 13:01:32 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-03-14 16:16:44 +0000 |
commit | dfe08f92cc85dc2b709cb49b8652989bea354791 (patch) | |
tree | 0a2342ffd1a05859778f6b421589545cf5357646 | |
parent | ab943cdda0988a88d50cc2beb0655f647a96439b (diff) |
Fix click position for check box and radio button baseline tests
Some styles override the clickable area.
Change-Id: Id6ec9d9aa2faff39489b2baa412af4339779ff5c
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
(cherry picked from commit fd4186cd234f5a93acb132bb694f6374b032741f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | tests/baseline/widgets/tst_baseline_widgets.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/tests/baseline/widgets/tst_baseline_widgets.cpp b/tests/baseline/widgets/tst_baseline_widgets.cpp index a9cd9c6fb4..31008b42f0 100644 --- a/tests/baseline/widgets/tst_baseline_widgets.cpp +++ b/tests/baseline/widgets/tst_baseline_widgets.cpp @@ -305,8 +305,14 @@ void tst_Widgets::tst_QCheckbox() QFETCH(bool, hasIcon); QFETCH(bool, isTriState); + class CheckBox : public QCheckBox + { + public: + using QCheckBox::initStyleOption; + }; + QBoxLayout layout(QBoxLayout::TopToBottom); - QCheckBox box; + CheckBox box; box.setTristate(isTriState); if (!text.isEmpty()) @@ -319,10 +325,11 @@ void tst_Widgets::tst_QCheckbox() testWindow()->setLayout(&layout); takeStandardSnapshots(); - do - { + do { const Qt::CheckState checkState = box.checkState(); - const QPoint clickTarget = box.rect().center(); + QStyleOptionButton styleOption; + box.initStyleOption(&styleOption); + const QPoint clickTarget = box.style()->subElementRect(QStyle::SE_CheckBoxClickRect, &styleOption, &box).center(); const std::array titles = {"unChecked", "partiallyChecked", "checked"}; const QString snapShotTitle = titles[checkState]; @@ -355,7 +362,14 @@ void tst_Widgets::tst_QRadioButton() QFETCH(QString,text); QFETCH(bool,hasIcon); - QRadioButton button1(testWindow()); + class RadioButton : public QRadioButton + { + public: + using QRadioButton::QRadioButton; + using QRadioButton::initStyleOption; + }; + + RadioButton button1(testWindow()); if (!text.isEmpty()) button1.setText(text); @@ -365,7 +379,7 @@ void tst_Widgets::tst_QRadioButton() button1.setChecked(false); - QRadioButton button2(testWindow()); + RadioButton button2(testWindow()); if (!text.isEmpty()) button2.setText(text); @@ -382,7 +396,10 @@ void tst_Widgets::tst_QRadioButton() testWindow()->setLayout(&box); takeStandardSnapshots(); - const QPoint clickTarget = button1.rect().center(); + QStyleOptionButton styleOption; + button1.initStyleOption(&styleOption); + const QPoint clickTarget = button1.style()->subElementRect(QStyle::SE_RadioButtonClickRect, &styleOption, &button1).center(); + QTest::mousePress(&button1,Qt::MouseButton::LeftButton, Qt::KeyboardModifiers(), clickTarget,0); QVERIFY(button1.isDown()); QBASELINE_CHECK_DEFERRED(takeSnapshot(), "pressUnchecked"); |