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 tristate : 1;
|
||||||
uint noChange : 1;
|
uint noChange : 1;
|
||||||
uint hovering : 1;
|
uint hovering : 1;
|
||||||
Qt::CheckState publishedState : 2;
|
Qt::CheckState publishedState : 3;
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
};
|
};
|
||||||
|
@ -16,6 +16,7 @@ private slots:
|
|||||||
void initTestCase();
|
void initTestCase();
|
||||||
|
|
||||||
void setChecked();
|
void setChecked();
|
||||||
|
void setCheckedSignal();
|
||||||
void setTriState();
|
void setTriState();
|
||||||
void setText_data();
|
void setText_data();
|
||||||
void setText();
|
void setText();
|
||||||
@ -59,6 +60,25 @@ void tst_QCheckBox::setChecked()
|
|||||||
QVERIFY(!testWidget.isChecked());
|
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()
|
void tst_QCheckBox::setTriState()
|
||||||
{
|
{
|
||||||
QCheckBox testWidget;
|
QCheckBox testWidget;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user