aboutsummaryrefslogtreecommitdiffstats
path: root/src/labs/stylekit/qqstylekitreader.cpp
diff options
context:
space:
mode:
authorDoris Verria <doris.verria@qt.io>2025-12-08 13:09:56 +0100
committerDoris Verria <doris.verria@qt.io>2025-12-18 14:07:18 +0100
commitca3912d549c7d121745476b8cb096b51a4defeb4 (patch)
treea20145be6e38ce775fc71e49ea1694bb5148e1ac /src/labs/stylekit/qqstylekitreader.cpp
parent415706f174377052b0c1e5e101fb4e37a9b159f3 (diff)
StyleKit: Move palettes from QQuickTheme to parent class
Task-number: QTBUG-130067 Pick-to: 6.11 Change-Id: Ie9c466591fbfbf54d9575d3684636b13c1061d64 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/labs/stylekit/qqstylekitreader.cpp')
-rw-r--r--src/labs/stylekit/qqstylekitreader.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/labs/stylekit/qqstylekitreader.cpp b/src/labs/stylekit/qqstylekitreader.cpp
index 9a4268e09c..ee0d4d3efe 100644
--- a/src/labs/stylekit/qqstylekitreader.cpp
+++ b/src/labs/stylekit/qqstylekitreader.cpp
@@ -500,21 +500,33 @@ void QQStyleKitReader::setHighlighted(bool highlighted)
QQuickPalette *QQStyleKitReader::palette() const
{
- return &const_cast<QQStyleKitReader *>(this)->m_palette;
+ return m_palette.data();
}
void QQStyleKitReader::setPalette(QQuickPalette *palette)
{
- if (palette && m_palette.toQPalette() == palette->toQPalette())
+ if (m_palette == palette)
return;
- m_palette.reset();
- if (palette)
- m_palette.inheritPalette(palette->toQPalette());
+ if (m_palette)
+ QObject::disconnect(m_palette, nullptr, this, nullptr);
+
+ m_palette = palette;
emit paletteChanged();
- const auto *stylePtr = style();
- if (!stylePtr || !stylePtr->loaded())
+ if (m_palette) {
+ // changed signal will be triggered when any role changes
+ QObject::connect(m_palette, &QQuickPalette::changed,
+ this, &QQStyleKitReader::onPaletteChanged);
+ }
+
+ onPaletteChanged();
+}
+
+void QQStyleKitReader::onPaletteChanged()
+{
+ const QQStyleKitStyle *style = QQStyleKitStyle::current();
+ if (!style || !style->loaded())
return;
clearLocalStorage();