aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-16 14:04:13 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2016-03-17 09:41:01 +0000
commit5b4093e415d5a2d49ef396d89b3262339b0651a4 (patch)
tree1cd7162e8a6fe2145c6dd228100bad6a67f698e3 /src/templates
parent8f4cf38d53945bb64cef5f54b31d14aeccf6cefe (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.cpp2
-rw-r--r--src/templates/qquickcontrol.cpp32
-rw-r--r--src/templates/qquickcontrol_p_p.h2
-rw-r--r--src/templates/qquickpopup.cpp2
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();
}
}