From dfe08f92cc85dc2b709cb49b8652989bea354791 Mon Sep 17 00:00:00 2001 From: Volker Hilsheimer Date: Thu, 10 Mar 2022 13:01:32 +0100 Subject: Fix click position for check box and radio button baseline tests Some styles override the clickable area. Change-Id: Id6ec9d9aa2faff39489b2baa412af4339779ff5c Reviewed-by: Axel Spoerl Reviewed-by: Eirik Aavitsland (cherry picked from commit fd4186cd234f5a93acb132bb694f6374b032741f) Reviewed-by: Qt Cherry-pick Bot --- tests/baseline/widgets/tst_baseline_widgets.cpp | 31 +++++++++++++++++++------ 1 file 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"); -- cgit v1.2.3