diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-16 14:04:13 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2016-03-17 09:41:01 +0000 |
commit | 5b4093e415d5a2d49ef396d89b3262339b0651a4 (patch) | |
tree | 1cd7162e8a6fe2145c6dd228100bad6a67f698e3 /src/templates | |
parent | 8f4cf38d53945bb64cef5f54b31d14aeccf6cefe (diff) |
Change locale inheritance for popups
The last one in the series of making Popup inherit its properties from
the parent window instead of the parent item. The same change was done
for font and style already.
Change-Id: I7024cce13f501e92024e9110e87ed33bbae6533d
Task-number: QTBUG-50984
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'src/templates')
-rw-r--r-- | src/templates/qquickapplicationwindow.cpp | 2 | ||||
-rw-r--r-- | src/templates/qquickcontrol.cpp | 32 | ||||
-rw-r--r-- | src/templates/qquickcontrol_p_p.h | 2 | ||||
-rw-r--r-- | src/templates/qquickpopup.cpp | 2 |
4 files changed, 14 insertions, 24 deletions
diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index e702c785..00ca38fb 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -439,7 +439,7 @@ void QQuickApplicationWindow::setLocale(const QLocale &locale) return; d->locale = locale; - QQuickControlPrivate::updateLocaleRecur(contentItem(), locale); + QQuickControlPrivate::updateLocaleRecur(QQuickWindow::contentItem(), locale); emit localeChanged(); } diff --git a/src/templates/qquickcontrol.cpp b/src/templates/qquickcontrol.cpp index 824f7053..5522b996 100644 --- a/src/templates/qquickcontrol.cpp +++ b/src/templates/qquickcontrol.cpp @@ -373,7 +373,7 @@ void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem:: if (change == ItemParentHasChanged && value.item) { d->resolveFont(); if (!d->hasLocale) - d->locale = QQuickControlPrivate::calcLocale(d->parentItem); + d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false } } @@ -647,22 +647,21 @@ void QQuickControl::resetLocale() if (!d->hasLocale) return; + d->hasLocale = false; d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false } -QLocale QQuickControlPrivate::calcLocale(QQuickItem *q) +QLocale QQuickControlPrivate::calcLocale(const QQuickItem *item) { - QQuickItem *p = q; + const QQuickItem *p = item; while (p) { - if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(p)) { - if (const QQuickPopup *qp = qobject_cast<const QQuickPopup *>(qpi->parent())) { - p = qp->parentItem(); - continue; - } + if (const QQuickPopupItem *popup = qobject_cast<const QQuickPopupItem *>(p)) { + item = popup; + break; } - if (QQuickControl *qc = qobject_cast<QQuickControl *>(p)) - return qc->locale(); + if (const QQuickControl *control = qobject_cast<const QQuickControl *>(p)) + return control->locale(); QVariant v = p->property("locale"); if (v.isValid() && v.userType() == QMetaType::QLocale) @@ -671,9 +670,9 @@ QLocale QQuickControlPrivate::calcLocale(QQuickItem *q) p = p->parentItem(); } - if (q) { - if (QQuickApplicationWindow *w = qobject_cast<QQuickApplicationWindow *>(q->window())) - return w->locale(); + if (item) { + if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) + return window->locale(); } return QLocale(); @@ -706,13 +705,6 @@ void QQuickControlPrivate::updateLocaleRecur(QQuickItem *item, const QLocale &l) else updateLocaleRecur(child, l); } - - foreach (QObject *child, item->children()) { - if (QQuickPopup *qp = qobject_cast<QQuickPopup *>(child)) { - if (QQuickPopupItem *qpi = qobject_cast<QQuickPopupItem *>(qp->popupItem())) - updateLocaleRecur(qpi, l); - } - } } /*! diff --git a/src/templates/qquickcontrol_p_p.h b/src/templates/qquickcontrol_p_p.h index cd7a9fb9..fff2487b 100644 --- a/src/templates/qquickcontrol_p_p.h +++ b/src/templates/qquickcontrol_p_p.h @@ -106,7 +106,7 @@ public: void updateLocale(const QLocale &l, bool e); static void updateLocaleRecur(QQuickItem *item, const QLocale &l); - static QLocale calcLocale(QQuickItem *); + static QLocale calcLocale(const QQuickItem *item); // TODO: QLazilyAllocated<ExtraData> QFont font; diff --git a/src/templates/qquickpopup.cpp b/src/templates/qquickpopup.cpp index 90c17e58..8d40dd0c 100644 --- a/src/templates/qquickpopup.cpp +++ b/src/templates/qquickpopup.cpp @@ -1177,8 +1177,6 @@ void QQuickPopup::setParentItem(QQuickItem *parent) d->parentItem = parent; if (d->positioner.parentItem()) d->positioner.setParentItem(parent); - if (parent) - QQuickControlPrivate::updateLocaleRecur(d->popupItem, QQuickControlPrivate::calcLocale(parent)); emit parentChanged(); } } |