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())

Reply via email to