aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-09-04 17:50:54 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-09-05 04:28:33 +0200
commit3f3c140d639813e15c95309a1356577f489ea4ff (patch)
treee07a715d47e2aa8bcd253f5f47880b1ec104d7bd
parent8d3a91016506fd0afedb0be535f7c34a4ca762f6 (diff)
Follow up on move of resolveMask into QPalettePrivate
The old QPalette move constructor and assignment operators only exchanged the d-pointer, but left the resolveMask of the moved-to palette instance untouched. This was clearly wrong. With the move of the resolveMask to the private in 556511f9f39ddc887481e0cd5a877134ceb0da6b, the resolveMask is moved, as one would expect. However, this broke the inheritance of palettes in QtQuickControls2, as QQuickPaletteColorProvider::inheritPalette did not restore the mask of the resulting palette to the mask of the palette that inherited from. Change-Id: I7436d3e493e06b8619102212ac7b707daa973b2a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Vitaly Fanaskov <vt4a2hqt@gmail.com>
-rw-r--r--src/quick/items/qquickpalettecolorprovider.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/quick/items/qquickpalettecolorprovider.cpp b/src/quick/items/qquickpalettecolorprovider.cpp
index 2eef1dce63..ecbddce3ba 100644
--- a/src/quick/items/qquickpalettecolorprovider.cpp
+++ b/src/quick/items/qquickpalettecolorprovider.cpp
@@ -133,10 +133,12 @@ bool QQuickPaletteColorProvider::reset()
bool QQuickPaletteColorProvider::inheritPalette(const QPalette &p)
{
+ auto inheritedMask = m_requestedPalette.isAllocated() ? m_requestedPalette->resolveMask() | p.resolveMask() : p.resolveMask();
QPalette parentPalette = m_requestedPalette.isAllocated() ? m_requestedPalette->resolve(p) : p;
- parentPalette.setResolveMask(m_requestedPalette.isAllocated() ? m_requestedPalette->resolveMask() | p.resolveMask() : p.resolveMask());
+ parentPalette.setResolveMask(inheritedMask);
auto tmpResolvedPalette = parentPalette.resolve(paletteProvider()->defaultPalette());
+ tmpResolvedPalette.setResolveMask(tmpResolvedPalette.resolveMask() | inheritedMask);
bool changed = notEq(tmpResolvedPalette, m_resolvedPalette);
if (changed) {