From 5b79da30f00a8f346d2979d4dbcc4cbe8e87979c Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Fri, 8 Jan 2016 16:11:19 +0100 Subject: [PATCH] support simple QObjects too support ColorScope in Svg as well (that's not a QQuickItem) --- src/declarativeimports/core/colorscope.cpp | 15 ++++++++++----- src/declarativeimports/core/colorscope.h | 4 ++-- tests/colorcontext.qml | 11 +++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/declarativeimports/core/colorscope.cpp b/src/declarativeimports/core/colorscope.cpp index 4de758fab..0726d71f5 100644 --- a/src/declarativeimports/core/colorscope.cpp +++ b/src/declarativeimports/core/colorscope.cpp @@ -26,11 +26,11 @@ QHash ColorScope::s_attachedScopes = QHash(); -ColorScope::ColorScope(QQuickItem *parent) +ColorScope::ColorScope(QQuickItem *parent, QObject *parentObject) : QQuickItem(parent), m_inherit(false), m_group(Plasma::Theme::NormalColorGroup), - m_parent(parent) + m_parent(parentObject) { connect(&m_theme, &Plasma::Theme::themeChanged, this, &ColorScope::colorsChanged); @@ -53,7 +53,7 @@ ColorScope *ColorScope::qmlAttachedProperties(QObject *object) return s_attachedScopes.value(object); } - ColorScope *s = new ColorScope(qp); + ColorScope *s = new ColorScope(qp, object); s_attachedScopes[object] = s; if (!qp) { @@ -65,9 +65,14 @@ ColorScope *ColorScope::qmlAttachedProperties(QObject *object) ColorScope *ColorScope::findParentScope() const { - QQuickItem *p = 0; + QObject *p = 0; if (m_parent) { - p = m_parent->parentItem(); + QQuickItem *gp = qobject_cast(m_parent); + if (gp) { + p = gp->parentItem(); + } else { + p = m_parent->parent(); + } } if (!p || !m_parent) { diff --git a/src/declarativeimports/core/colorscope.h b/src/declarativeimports/core/colorscope.h index d4fceeb9f..696a84740 100644 --- a/src/declarativeimports/core/colorscope.h +++ b/src/declarativeimports/core/colorscope.h @@ -61,7 +61,7 @@ class ColorScope : public QQuickItem public: /// @cond INTERNAL_DOCS - ColorScope(QQuickItem *parent = 0); + ColorScope(QQuickItem *parent = 0, QObject *parentObject = 0); ~ColorScope(); void setColorGroup(Plasma::Theme::ColorGroup group); @@ -91,7 +91,7 @@ private: Plasma::Theme m_theme; Plasma::Theme::ColorGroup m_group; QPointer m_parentScope; - QQuickItem *m_parent; + QObject *m_parent; static QHash s_attachedScopes; }; diff --git a/tests/colorcontext.qml b/tests/colorcontext.qml index d975340d3..1a8ead73c 100644 --- a/tests/colorcontext.qml +++ b/tests/colorcontext.qml @@ -39,6 +39,17 @@ ColumnLayout { Column { id: widgetsParent anchors.centerIn: parent + PlasmaCore.Svg { + id: audioSvg + imagePath: "icons/audio" + colorGroup: PlasmaCore.ColorScope.colorGroup + } + PlasmaCore.SvgItem { + width: 32 + height: 32 + elementId: "audio-volume-medium" + svg: audioSvg + } Row { PlasmaCore.IconItem { colorGroup: PlasmaCore.ColorScope.colorGroup