path: root/src
diff options
authorEdward Welbourne <>2017-03-03 14:40:40 +0100
committerEdward Welbourne <>2017-03-24 13:57:22 +0000
commite5c0371d18e285d7849cbd0569970e209bd01b49 (patch)
tree49b840db3d5b28ea1343e0f02cc9b73497fc5bfb /src
parentd82d2f67161ed12d94edcc79914ec74df4cd40d3 (diff)
Fix propagation of locale from widget to its children
Fix the condition in QWidgetPrivate::resolveLocale() to decide whether to propagate locale: make it match setLocale_helper()'s condition when deciding whether to propagate to descendants. This lead to a QDateTimeEdit's calendar popup not getting told what locale to use correctly, unless we setLocale() on it overtly, which then blocked propagation of locale changes to it unless QDateTimeEdit manually propagated the changes. Fix the documentation of WA_WindowPropagation to mention locale as also being propagated (which it was in several places, only neglecting this one in resolveLocale). [ChangeLog][QWidget][Qt::WA_WindowPropagation] Propagate locale consistently, along with font and palette, within the widget hierarchy. Previously, locale was propagated on ancestral setLocale(), but not on creation of the descendant. Task-number: QTBUG-59106 Change-Id: I92270f7789c8eda66a458274a658c84c7b0df754 Reviewed-by: David Faure <>
Diffstat (limited to 'src')
2 files changed, 3 insertions, 3 deletions
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 71cd9444d6..59fa0b519c 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -1151,8 +1151,8 @@
and Windows) the window will take a modified appearance. This flag is set
or cleared by QWidget::setWindowModified().
- \value WA_WindowPropagation Makes a toplevel window inherit font and
- palette from its parent.
+ \value WA_WindowPropagation Makes a toplevel window inherit font, palette
+ and locale from its parent.
\value WA_MacAlwaysShowToolWindow On \macos, show the tool window even
when the application is not active. By default, all tool windows are
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index cf90df6b9b..7e9e4f0a98 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -5993,7 +5993,7 @@ void QWidgetPrivate::resolveLocale()
Q_Q(const QWidget);
if (!q->testAttribute(Qt::WA_SetLocale)) {
- setLocale_helper(q->isWindow()
+ setLocale_helper(q->isWindow() && !q->testAttribute(Qt::WA_WindowPropagation)
? QLocale()
: q->parentWidget()->locale());