[Libreoffice-commits] core.git: writerfilter/source
Mike Kaganski
mike.kaganski at collabora.com
Wed Jan 25 06:47:23 UTC 2017
writerfilter/source/rtftok/rtfdispatchvalue.cxx | 32 +++++++++++++++++++-----
1 file changed, 26 insertions(+), 6 deletions(-)
New commits:
commit f26bbdb386f9e66b1a154d0589b1a446ea2dd8d5
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date: Tue Jan 24 22:52:10 2017 +0300
tdf#105511: use LO language settings to set default RTF language
... when file containd ansicpg0/cpg0
This allows user to change this setting and get proper document
language. Similar technique is used currently for DXF and WMF.
Change-Id: I884a973d98384c92d45a1d2e19720ffe3e6aa20d
Reviewed-on: https://gerrit.libreoffice.org/33505
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/writerfilter/source/rtftok/rtfdispatchvalue.cxx b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
index cfef7c6..a63eee1 100644
--- a/writerfilter/source/rtftok/rtfdispatchvalue.cxx
+++ b/writerfilter/source/rtftok/rtfdispatchvalue.cxx
@@ -24,8 +24,25 @@
#include <rtfreferenceproperties.hxx>
#include <rtfskipdestination.hxx>
+#include "officecfg/Setup.hxx"
+#include "officecfg/Office/Linguistic.hxx"
+#include "unotools/wincodepage.hxx"
+
using namespace com::sun::star;
+namespace
+{
+
+OUString getLODefaultLanguage()
+{
+ OUString result(::officecfg::Office::Linguistic::General::DefaultLocale::get());
+ if (result.isEmpty())
+ result = ::officecfg::Setup::L10N::ooSetupSystemLocale::get();
+ return result;
+}
+
+}
+
namespace writerfilter
{
@@ -374,15 +391,18 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
}
break;
case RTF_ANSICPG:
+ case RTF_CPG:
{
- m_aDefaultState.nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(nParam);
- m_aStates.top().nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(nParam);
+ rtl_TextEncoding nEncoding = (nParam == 0) ?
+ utl_getWinTextEncodingFromLangStr(getLODefaultLanguage().toUtf8().getStr()) :
+ rtl_getTextEncodingFromWindowsCodePage(nParam);
+ if (nKeyword == RTF_ANSICPG)
+ m_aDefaultState.nCurrentEncoding = nEncoding;
+ else
+ m_nCurrentEncoding = nEncoding;
+ m_aStates.top().nCurrentEncoding = nEncoding;
}
break;
- case RTF_CPG:
- m_nCurrentEncoding = rtl_getTextEncodingFromWindowsCodePage(nParam);
- m_aStates.top().nCurrentEncoding = m_nCurrentEncoding;
- break;
case RTF_CF:
{
RTFSprms aAttributes;
More information about the Libreoffice-commits
mailing list