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: 37b47ebf946ef1a37573107375fbe5fc0eb1e6d2 Fixes: QTBUG-118716 Task-number: QTBUG-104688 Change-Id: Iafeabeb9214f6c7510ea4ed87fabb7dc0ba175a6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit 90822833f373d9aa9e2ee9b60f93b869e718cfe0) Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This commit is contained in:
parent
d15a32251c
commit
3b3b6f1adf
@ -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::stateChanged);
|
||||
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…
x
Reference in New Issue
Block a user