framework/source/uielement/langselectionstatusbarcontroller.cxx | 5 - sc/source/ui/docshell/docsh4.cxx | 45 ++++++---- 2 files changed, 33 insertions(+), 17 deletions(-)
New commits: commit 64e1a5916367644ad3883a24ab1630d1340603b3 Author: Henry Castro <hcas...@collabora.com> AuthorDate: Wed Jan 17 16:25:41 2024 -0400 Commit: Henry Castro <hcas...@collabora.com> CommitDate: Fri Jan 26 19:41:14 2024 +0100 tdf#127856: fix setting "None" in cell format language Change-Id: I94dc0b1e7f0a52e8fb6da1f9b80456cec696a727 Signed-off-by: Henry Castro <hcas...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162244 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/framework/source/uielement/langselectionstatusbarcontroller.cxx b/framework/source/uielement/langselectionstatusbarcontroller.cxx index 2d56c4186883..f5730ae7ee54 100644 --- a/framework/source/uielement/langselectionstatusbarcontroller.cxx +++ b/framework/source/uielement/langselectionstatusbarcontroller.cxx @@ -190,7 +190,10 @@ void LangSelectionStatusbarController::LangMenu( } else { - xPopupMenu->insertItem( MID_LANG_DEF_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_DEF_NONE ); + if (bCalc) + xPopupMenu->insertItem( MID_LANG_SEL_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_SEL_NONE ); + else + xPopupMenu->insertItem( MID_LANG_DEF_NONE, FwkResId(STR_LANGSTATUS_NONE), 0, MID_LANG_DEF_NONE ); if ( sNone == m_aCurLang ) xPopupMenu->checkItem( MID_LANG_DEF_NONE, true ); xPopupMenu->insertItem( MID_LANG_DEF_RESET, FwkResId(STR_RESET_TO_DEFAULT_LANGUAGE), 0, MID_LANG_DEF_RESET ); diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx index 82b874391f38..34e69724742c 100644 --- a/sc/source/ui/docshell/docsh4.cxx +++ b/sc/source/ui/docshell/docsh4.cxx @@ -1301,28 +1301,41 @@ void ScDocShell::Execute( SfxRequest& rReq ) if (bSelection) { ScTabViewShell* pViewShell = GetBestViewShell(); - const LanguageType nLangType = SvtLanguageTable::GetLanguageType(aLangText); - const SvtScriptType nScriptType = SvtLanguageOptions::GetScriptTypeOfLanguage(nLangType); - if (pViewShell) { const ScPatternAttr* pSelAttrs = pViewShell->GetSelectionPattern(); if (pSelAttrs) { const SfxItemSet& rOldSet = pSelAttrs->GetItemSet(); + SfxItemPool* pItemPool = rOldSet.GetPool(); auto pNewSet = std::make_shared<SfxItemSet>(rOldSet); - if (nScriptType == SvtScriptType::LATIN) - pNewSet->Put(SvxLanguageItem(nLangType, - rOldSet.GetPool()->GetWhich(SID_ATTR_CHAR_LANGUAGE))); - if (nScriptType == SvtScriptType::COMPLEX) - pNewSet->Put(SvxLanguageItem(nLangType, - rOldSet.GetPool()->GetWhich(SID_ATTR_CHAR_CTL_LANGUAGE))); - if (nScriptType == SvtScriptType::ASIAN) - pNewSet->Put(SvxLanguageItem(nLangType, - rOldSet.GetPool()->GetWhich(SID_ATTR_CHAR_CJK_LANGUAGE))); - + if (aLangText == "LANGUAGE_NONE") + { + pNewSet->Put(SvxLanguageItem(LANGUAGE_NONE, + pItemPool->GetWhich(SID_ATTR_CHAR_LANGUAGE))); + pNewSet->Put(SvxLanguageItem(LANGUAGE_NONE, + pItemPool->GetWhich(SID_ATTR_CHAR_CJK_LANGUAGE))); + pNewSet->Put(SvxLanguageItem(LANGUAGE_NONE, + pItemPool->GetWhich(SID_ATTR_CHAR_CTL_LANGUAGE))); + } + else + { + const LanguageType nLangType = SvtLanguageTable::GetLanguageType(aLangText); + const SvtScriptType nScriptType = + SvtLanguageOptions::GetScriptTypeOfLanguage(nLangType); + if (nScriptType == SvtScriptType::LATIN) + pNewSet->Put(SvxLanguageItem(nLangType, + pItemPool->GetWhich(SID_ATTR_CHAR_LANGUAGE))); + if (nScriptType == SvtScriptType::COMPLEX) + pNewSet->Put(SvxLanguageItem(nLangType, + pItemPool->GetWhich(SID_ATTR_CHAR_CTL_LANGUAGE))); + if (nScriptType == SvtScriptType::ASIAN) + pNewSet->Put(SvxLanguageItem(nLangType, + pItemPool->GetWhich(SID_ATTR_CHAR_CJK_LANGUAGE))); + } pViewShell->ApplyAttributes(*pNewSet, rOldSet); + pBindings->Invalidate(SID_LANGUAGE_STATUS); } } } @@ -2245,11 +2258,11 @@ void ScDocShell::GetState( SfxItemSet &rSet ) if (SfxItemState::SET == rItemSet.GetItemState(nLangWhich)) eCtl = static_cast<const SvxLanguageItem&>(rItemSet.Get(nLangWhich)).GetLanguage(); - if (eLatin != LANGUAGE_NONE && eLatin != LANGUAGE_DONTKNOW) + if (eLatin != LANGUAGE_DONTKNOW) sLanguage = SvtLanguageTable::GetLanguageString(eLatin); - if (eCjk != LANGUAGE_NONE && eCjk != LANGUAGE_DONTKNOW) + else if (eCjk != LANGUAGE_DONTKNOW) sLanguage = SvtLanguageTable::GetLanguageString(eCjk); - if (eCtl != LANGUAGE_NONE && eCtl != LANGUAGE_DONTKNOW) + else if (eCtl != LANGUAGE_DONTKNOW) sLanguage = SvtLanguageTable::GetLanguageString(eCtl); if (sLanguage.isEmpty())