sc/source/ui/app/inputhdl.cxx |   14 ++++++++++++++
 sc/source/ui/inc/tabvwsh.hxx  |    1 +
 2 files changed, 15 insertions(+)

New commits:
commit debb541fbcada2dd4bc96b2b9ead10ea8c47b305
Author:     Gökay Şatır <gokaysa...@collabora.com>
AuthorDate: Thu Jan 30 19:04:38 2025 +0300
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Tue Feb 4 12:54:32 2025 +0100

    cool#11072: Send current cell's decimal separator.
    
    Calc: In a file with a language that uses "," as the decimal separator,
    using a keyboard with a layout that uses "." as decimal separator is 
difficult.
    Numbers are considered as string when it happens.
    Users should be able to use NumPad decimal separator regardless of the 
cell's current decimal separator.
    
    Signed-off-by: Gökay Şatır <gokaysa...@collabora.com>
    Change-Id: I35623661acb0f505597458b7ce55cfc2c3a4dace
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/180961
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 16663dd67889..ad8cc26a2c35 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -47,6 +47,7 @@
 #include <sfx2/printer.hxx>
 #include <svl/numformat.hxx>
 #include <svl/zforlist.hxx>
+#include <svtools/langtab.hxx>
 #include <unotools/localedatawrapper.hxx>
 #include <unotools/charclass.hxx>
 #include <utility>
@@ -1879,6 +1880,18 @@ void ScTabViewShell::LOKSendFormulabarUpdate(EditView* 
pActiveView,
     maSendFormulabarUpdate.m_aText = rText;
     maSendFormulabarUpdate.m_aSelection = aSelection;
     maSendFormulabarUpdate.m_nTimeStamp = now;
+
+    ScViewData& rViewData = this->GetViewData();
+    const ScDocument& rDoc = rViewData.GetDocShell()->GetDocument();
+    const ScPatternAttr* pPattern = rDoc.GetPattern(rViewData.GetCurX(), 
rViewData.GetCurY(), rViewData.GetRefTabNo());
+
+    if (pPattern)
+    {
+        SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
+        sal_uInt32 nFormat = pPattern->GetNumberFormat( pFormatter );
+        maSendFormulabarUpdate.m_separator = 
pFormatter->GetFormatDecimalSep(nFormat);
+    }
+
     maSendFormulabarUpdate.Send();
 }
 
@@ -1888,6 +1901,7 @@ void ScTabViewShell::SendFormulabarUpdate::Send()
     (*pData)["action_type"_ostr] = "setText";
     (*pData)["text"_ostr] = m_aText;
     (*pData)["selection"_ostr] = m_aSelection;
+    (*pData)["separator"_ostr] = m_separator;
     OUString sWindowId = OUString::number(m_nShellId) + "formulabar";
     jsdialog::SendAction(sWindowId, "sc_input_window", std::move(pData));
 }
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index 490247baa24e..7ab0d52a2e7c 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -99,6 +99,7 @@ private:
         OUString m_aText;
         OUString m_aSelection;
         sal_uInt64 m_nShellId;
+        OUString m_separator;
         std::chrono::steady_clock::time_point m_nTimeStamp;
 
         SendFormulabarUpdate()

Reply via email to