QCheckBox: Don't emit checkStateChanged when nothing changed
QCheckBox::checkStateChanged() was emitted with msvc even though the
check state was not changed due to a faulty comparison.
Amends: 37b47ebf94
Pick-to: 6.6
Fixes: QTBUG-118716
Task-number: QTBUG-104688
Change-Id: Iafeabeb9214f6c7510ea4ed87fabb7dc0ba175a6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
bb10
parent
c8c8299a63
commit
90822833f3
|
|
@ -28,7 +28,7 @@ public:
|
|||
uint tristate : 1;
|
||||
uint noChange : 1;
|
||||
uint hovering : 1;
|
||||
Qt::CheckState publishedState : 2;
|
||||
Qt::CheckState publishedState : 3;
|
||||
|
||||
void init();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ private slots:
|
|||
void initTestCase();
|
||||
|
||||
void setChecked();
|
||||
void setCheckedSignal();
|
||||
void setTriState();
|
||||
void setText_data();
|
||||
void setText();
|
||||
|
|
@ -59,6 +60,25 @@ void tst_QCheckBox::setChecked()
|
|||
QVERIFY(!testWidget.isChecked());
|
||||
}
|
||||
|
||||
void tst_QCheckBox::setCheckedSignal()
|
||||
{
|
||||
QCheckBox testWidget;
|
||||
testWidget.setCheckState(Qt::Unchecked);
|
||||
QSignalSpy checkStateChangedSpy(&testWidget, &QCheckBox::checkStateChanged);
|
||||
testWidget.setCheckState(Qt::Checked);
|
||||
testWidget.setCheckState(Qt::Checked);
|
||||
QTRY_COMPARE(checkStateChangedSpy.size(), 1); // get signal only once
|
||||
QCOMPARE(testWidget.checkState(), Qt::Checked);
|
||||
testWidget.setCheckState(Qt::Unchecked);
|
||||
testWidget.setCheckState(Qt::Unchecked);
|
||||
QTRY_COMPARE(checkStateChangedSpy.size(), 2); // get signal only once
|
||||
QCOMPARE(testWidget.checkState(), Qt::Unchecked);
|
||||
testWidget.setCheckState(Qt::PartiallyChecked);
|
||||
testWidget.setCheckState(Qt::PartiallyChecked);
|
||||
QTRY_COMPARE(checkStateChangedSpy.size(), 3); // get signal only once
|
||||
QCOMPARE(testWidget.checkState(), Qt::PartiallyChecked);
|
||||
}
|
||||
|
||||
void tst_QCheckBox::setTriState()
|
||||
{
|
||||
QCheckBox testWidget;
|
||||
|
|
|
|||
Loading…
Reference in New Issue