QPalette: detach before modifying resolve mask when resolving
Amends 1d961491d817490da156769ddce6fce48a0bce4a. We modify the resolve mask after making a shared copy of 'other', so we must detach. Call the setter designed for that purpose. Task-number: QTBUG-98762 Change-Id: I4f45223e74764a341378992172787fae73efb8b7 Reviewed-by: JiDe Zhang <zhangjide@uniontech.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 37c829f511d67be1c226201b4bbbe73c53835078) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
dedd2d35e3
commit
67cff353e3
@ -921,7 +921,7 @@ QPalette QPalette::resolve(const QPalette &other) const
|
|||||||
if ((*this == other && d->resolveMask == other.d->resolveMask)
|
if ((*this == other && d->resolveMask == other.d->resolveMask)
|
||||||
|| d->resolveMask == 0) {
|
|| d->resolveMask == 0) {
|
||||||
QPalette o = other;
|
QPalette o = other;
|
||||||
o.d->resolveMask = d->resolveMask;
|
o.setResolveMask(d->resolveMask);
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,9 +102,16 @@ void tst_QPalette::resolve()
|
|||||||
// ensure the resolve mask is full
|
// ensure the resolve mask is full
|
||||||
for (int r = 0; r < QPalette::NColorRoles; ++r)
|
for (int r = 0; r < QPalette::NColorRoles; ++r)
|
||||||
p3.setBrush(QPalette::All, QPalette::ColorRole(r), Qt::red);
|
p3.setBrush(QPalette::All, QPalette::ColorRole(r), Qt::red);
|
||||||
|
const QPalette::ResolveMask fullMask = p3.resolveMask();
|
||||||
|
|
||||||
QPalette p3ResolvedToP1 = p3.resolve(p1);
|
QPalette p3ResolvedToP1 = p3.resolve(p1);
|
||||||
QVERIFY(p3ResolvedToP1.isCopyOf(p3));
|
QVERIFY(p3ResolvedToP1.isCopyOf(p3));
|
||||||
|
|
||||||
|
QPalette p4;
|
||||||
|
QCOMPARE(p4.resolveMask(), QPalette::ResolveMask{});
|
||||||
|
// resolve must detach even if p4 has no mask
|
||||||
|
p4 = p4.resolve(p3);
|
||||||
|
QCOMPARE(p3.resolveMask(), fullMask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user