diff options
author | obo <obo@openoffice.org> | 2010-11-18 18:39:08 +0100 |
---|---|---|
committer | obo <obo@openoffice.org> | 2010-11-18 18:39:08 +0100 |
commit | 74112b4eb8953e419446aece91e2a99c1774e147 (patch) | |
tree | dfa9bf99193fee181a71bc85bbf68efff485594c | |
parent | 87423806b51ed7df5d1575bcb4007e428d896219 (diff) | |
parent | a17c5f4ba0c14b5774a956e8de41bfc5f041f636 (diff) |
CWS-TOOLING: integrate CWS sb136ooo/OOO330_m16
-rw-r--r-- | configmgr/source/childaccess.cxx | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/configmgr/source/childaccess.cxx b/configmgr/source/childaccess.cxx index ef2b213d4e..d387f351de 100644 --- a/configmgr/source/childaccess.cxx +++ b/configmgr/source/childaccess.cxx @@ -282,9 +282,10 @@ css::uno::Any ChildAccess::asValue() { if (!Components::allLocales(locale)) { // Find best match using an adaption of RFC 4647 lookup matching // rules, removing "-" or "_" delimited segments from the end; - // defaults are the empty string locale, the "en-US" locale, the - // first child (if any), or a nil value (even though it may be - // illegal for the given property), in that order: + // defaults are the "en-US" locale, the "en" locale, the empty + // string locale, the first child (if any), or a nil value (even + // though it may be illegal for the given property), in that + // order: rtl::Reference< ChildAccess > child; for (;;) { child = getChild(locale); @@ -295,16 +296,26 @@ css::uno::Any ChildAccess::asValue() { while (i > 0 && locale[i] != '-' && locale[i] != '_') { --i; } + if (i == 0) { + break; + } locale = locale.copy(0, i); } if (!child.is()) { child = getChild( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en-US"))); if (!child.is()) { - std::vector< rtl::Reference< ChildAccess > > all( - getAllChildren()); - if (!all.empty()) { - child = all.front(); + child = getChild( + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("en"))); + if (!child.is()) { + child = getChild(rtl::OUString()); + if (!child.is()) { + std::vector< rtl::Reference< ChildAccess > > + all(getAllChildren()); + if (!all.empty()) { + child = all.front(); + } + } } } } |