summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2019-10-26 18:48:37 +0200
committerEike Rathke <erack@redhat.com>2019-10-26 21:48:35 +0200
commit4dfb22acfe30f9322ecc0ad9d01b17a3814c87a2 (patch)
tree125472a13bbb22bb772a97f3cc803c628b15f825
parent6147549830669226ca333a55fcd05c51e21cf9a6 (diff)
Related: tdf#117715 tdf#128403 Couple ATTR_LANGUAGE_FORMAT ATTR_VALUE_FORMAT
Do not obtain ATTR_VALUE_FORMAT from hard attribute and ATTR_LANGUAGE_FORMAT from conditional format. Though it doesn't matter in the bugs' cases it's wrong. ATTR_LANGUAGE_FORMAT belongs to the ATTR_VALUE_FORMAT if set. Change-Id: I9ec2d7523e22a40c3fe4a655fe9082ab6158c376 Reviewed-on: https://gerrit.libreoffice.org/81547 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
-rw-r--r--sc/source/core/data/patattr.cxx26
1 files changed, 17 insertions, 9 deletions
diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index ec3ffb74bef0..9d18777d9c77 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -1263,22 +1263,30 @@ sal_uInt32 ScPatternAttr::GetNumberFormat( SvNumberFormatter* pFormatter,
*/
const SfxPoolItem* pFormItem;
- sal_uLong nFormat = 0;
+ sal_uInt32 nFormat;
+ const SfxPoolItem* pLangItem;
+ LanguageType eLang;
if (GetItemSet().GetItemState(ATTR_VALUE_FORMAT, false, &pFormItem) == SfxItemState::SET)
+ {
nFormat = static_cast<const SfxUInt32Item*>(pFormItem)->GetValue();
+ if (GetItemSet().GetItemState(ATTR_LANGUAGE_FORMAT, false, &pLangItem) == SfxItemState::SET)
+ eLang = static_cast<const SvxLanguageItem*>(pLangItem)->GetLanguage();
+ else
+ eLang = getLanguageType(GetItemSet());
+ }
else if (pCondSet->GetItemState(ATTR_VALUE_FORMAT, true, &pFormItem) == SfxItemState::SET )
+ {
nFormat = getNumberFormatKey(*pCondSet);
+ if (pCondSet->GetItemState(ATTR_LANGUAGE_FORMAT, true, &pLangItem) == SfxItemState::SET)
+ eLang = getLanguageType(*pCondSet);
+ else
+ eLang = getLanguageType(GetItemSet());
+ }
else
+ {
nFormat = getNumberFormatKey(GetItemSet());
-
- const SfxPoolItem* pLangItem;
- LanguageType eLang;
- if (GetItemSet().GetItemState(ATTR_LANGUAGE_FORMAT, false, &pLangItem) == SfxItemState::SET)
- eLang = static_cast<const SvxLanguageItem*>(pLangItem)->GetLanguage();
- else if (pCondSet->GetItemState(ATTR_LANGUAGE_FORMAT, true, &pLangItem) == SfxItemState::SET)
- eLang = getLanguageType(*pCondSet);
- else
eLang = getLanguageType(GetItemSet());
+ }
return pFormatter->GetFormatForLanguageIfBuiltIn(nFormat, eLang);
}