summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/kernel/qpalette.cpp3
-rw-r--r--tests/auto/gui/kernel/qpalette/tst_qpalette.cpp8
2 files changed, 9 insertions, 2 deletions
diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp
index b313d545a51..1ce611ce21b 100644
--- a/src/gui/kernel/qpalette.cpp
+++ b/src/gui/kernel/qpalette.cpp
@@ -787,9 +787,8 @@ void QPalette::setBrush(ColorGroup cg, ColorRole cr, const QBrush &b)
if (d->br[cg][cr] != b) {
detach();
d->br[cg][cr] = b;
+ d->resolveMask |= ResolveMask(1) << bitPosition(cg, cr);
}
-
- d->resolveMask |= ResolveMask(1) << bitPosition(cg, cr);
}
/*!
diff --git a/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
index 6524f73143d..9ef313f36db 100644
--- a/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
+++ b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
@@ -227,6 +227,14 @@ void tst_QPalette::isBrushSet()
QVERIFY(p.isBrushSet(QPalette::Active, QPalette::LinkVisited));
QVERIFY(p.isBrushSet(QPalette::Inactive, QPalette::LinkVisited));
QVERIFY(p.isBrushSet(QPalette::Disabled, QPalette::LinkVisited));
+
+ // Don't set flag when brush doesn't change (and also don't detach - QTBUG-98762)
+ QPalette p2;
+ QPalette p3;
+ QVERIFY(!p2.isBrushSet(QPalette::Active, QPalette::Dark));
+ p2.setBrush(QPalette::Active, QPalette::Dark, p2.brush(QPalette::Active, QPalette::Dark));
+ QVERIFY(!p3.isBrushSet(QPalette::Active, QPalette::Dark));
+ QVERIFY(!p2.isBrushSet(QPalette::Active, QPalette::Dark));
}
void tst_QPalette::setAllPossibleBrushes()