From 4dfb22acfe30f9322ecc0ad9d01b17a3814c87a2 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Sat, 26 Oct 2019 18:48:37 +0200 Subject: 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 --- sc/source/core/data/patattr.cxx | 26 +++++++++++++++++--------- 1 file 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(pFormItem)->GetValue(); + if (GetItemSet().GetItemState(ATTR_LANGUAGE_FORMAT, false, &pLangItem) == SfxItemState::SET) + eLang = static_cast(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(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); } -- cgit