diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-01-19 14:22:01 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-01-19 14:22:27 +0100 |
commit | 7cad85c2f0930e4f8531a0508c28abdae0f3e0de (patch) | |
tree | 9ffe1d390ff137aa11de472ba59947c0b96cdfbb /src/controls | |
parent | ed30fdd7085ee8a007b990dc871afdeef0d7cbeb (diff) | |
parent | d2a744f81272f9c0b6e987cc9f6c57f3931b67e7 (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
src/controls/qquickstyle.cpp
Change-Id: I1c8273012b01726072e5cbfd4369453a780ff03e
Diffstat (limited to 'src/controls')
-rw-r--r-- | src/controls/qquickstyle.cpp | 53 | ||||
-rw-r--r-- | src/controls/qquickstyleselector.cpp | 4 |
2 files changed, 32 insertions, 25 deletions
diff --git a/src/controls/qquickstyle.cpp b/src/controls/qquickstyle.cpp index 6de4c7a2..7fd6a2f0 100644 --- a/src/controls/qquickstyle.cpp +++ b/src/controls/qquickstyle.cpp @@ -44,8 +44,6 @@ QT_BEGIN_NAMESPACE -static const char *SettingsFilePath = ":/qtlabscontrols.conf"; - static QQuickStyle *attachedStyle(const QMetaObject *type, QObject *object, bool create = false) { if (!object) @@ -63,33 +61,40 @@ static QQuickStyle *findParentStyle(const QMetaObject *type, QObject *parent) if (style) return style; + // lookup object parent (window/popup) + QObject *grandParent = parent->parent(); + if (grandParent) { + QQuickStyle *style = findParentStyle(type, grandParent); + if (style) + return style; + } + QQuickItem *item = qobject_cast<QQuickItem *>(parent); if (item) { // lookup parent items QQuickItem *parent = item->parentItem(); - if (parent) - return findParentStyle(type, parent); + if (parent) { + QQuickStyle *style = findParentStyle(type, parent); + if (style) + return style; + } // fallback to item's window - return findParentStyle(type, item->window()); + QQuickStyle *style = findParentStyle(type, item->window()); + if (style) + return style; } - // lookup object parent (window/popup) - if (parent->parent()) - return findParentStyle(type, parent->parent()); - // fallback to engine (global) - if (parent) { - QQmlEngine *engine = qmlEngine(parent); - if (engine) { - QByteArray name = QByteArray("_q_") + type->className(); - QQuickStyle *style = engine->property(name).value<QQuickStyle*>(); - if (!style) { - style = attachedStyle(type, engine, true); - engine->setProperty(name, QVariant::fromValue(style)); - } - return style; + QQmlEngine *engine = qmlEngine(parent); + if (engine) { + QByteArray name = QByteArray("_q_") + type->className(); + QQuickStyle *style = engine->property(name).value<QQuickStyle*>(); + if (!style) { + style = attachedStyle(type, engine, true); + engine->setProperty(name, QVariant::fromValue(style)); } + return style; } return Q_NULLPTR; @@ -166,7 +171,7 @@ QQuickStyle::~QQuickStyle() QSharedPointer<QSettings> QQuickStyle::settings(const QString &group) { #ifndef QT_NO_SETTINGS - const QString filePath = QLatin1String(SettingsFilePath); + const QString filePath = QStringLiteral(":/qtlabscontrols.conf"); if (QFile::exists(filePath)) { QFileSelector selector; QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat); @@ -203,14 +208,16 @@ void QQuickStyle::setParentStyle(QQuickStyle *style) void QQuickStyle::init() { - if (!parent()) + QObject *parent = QObject::parent(); + if (!parent) return; - QQuickStyle *parentStyle = findParentStyle(metaObject(), parent()->parent()); + QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent); + QQuickStyle *parentStyle = findParentStyle(metaObject(), parentItem ? parentItem->parentItem() : parent->parent()); if (parentStyle) setParentStyle(parentStyle); - const QList<QQuickStyle *> children = findChildStyles(metaObject(), parent()); + const QList<QQuickStyle *> children = findChildStyles(metaObject(), parent); for (QQuickStyle *child : children) child->setParentStyle(this); } diff --git a/src/controls/qquickstyleselector.cpp b/src/controls/qquickstyleselector.cpp index 3be5eb3d..b169ade2 100644 --- a/src/controls/qquickstyleselector.cpp +++ b/src/controls/qquickstyleselector.cpp @@ -82,9 +82,9 @@ QString QQuickStyleSelector::select(const QString &filePath) const static bool isLocalScheme(const QString &file) { - bool local = file == QStringLiteral("qrc"); + bool local = file == QLatin1String("qrc"); #ifdef Q_OS_ANDROID - local |= file == QStringLiteral("assets"); + local |= file == QLatin1String("assets"); #endif return local; } |