summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-08-15 22:02:20 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2019-08-16 08:01:25 +0200
commit61e02561aa659d829a6786609fc57d99fd8652b4 (patch)
treeae5313d11935654ad1b74853f1c3f848471e0862
parent3e64065612acec2eb29aa21e2b515953422256d7 (diff)
tdf#126940: export ansicpg in RTF when copying database
This allows correctly detect encoding of 8-bit characters on paste Change-Id: I586fd2ec140848e9097927818c492ab2fc7cf8ea Reviewed-on: https://gerrit.libreoffice.org/77545 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--dbaccess/source/ui/misc/TokenWriter.cxx15
1 files changed, 10 insertions, 5 deletions
diff --git a/dbaccess/source/ui/misc/TokenWriter.cxx b/dbaccess/source/ui/misc/TokenWriter.cxx
index 5a56d78dcc18..fb82d00d1e77 100644
--- a/dbaccess/source/ui/misc/TokenWriter.cxx
+++ b/dbaccess/source/ui/misc/TokenWriter.cxx
@@ -22,6 +22,7 @@
#include <tools/diagnose_ex.h>
#include <tools/stream.hxx>
#include <osl/diagnose.h>
+#include <rtl/tencinfo.h>
#include <sal/log.hxx>
#include <i18nlangtag/languagetag.hxx>
#include <RtfReader.hxx>
@@ -320,8 +321,12 @@ bool ORTFImportExport::Write()
{
ODatabaseImportExport::Write();
m_pStream->WriteChar( '{' ).WriteCharPtr( OOO_STRING_SVTOOLS_RTF_RTF );
- m_pStream->WriteCharPtr( OOO_STRING_SVTOOLS_RTF_ANSI ).WriteCharPtr( SAL_NEWLINE_STRING );
- rtl_TextEncoding eDestEnc = RTL_TEXTENCODING_MS_1252;
+ m_pStream->WriteCharPtr(OOO_STRING_SVTOOLS_RTF_ANSI);
+ if (sal_uInt32 nCpg = rtl_getWindowsCodePageFromTextEncoding(m_eDestEnc); nCpg && nCpg != 65001)
+ {
+ m_pStream->WriteCharPtr(OOO_STRING_SVTOOLS_RTF_ANSICPG).WriteUInt32AsString(nCpg);
+ }
+ m_pStream->WriteCharPtr(SAL_NEWLINE_STRING);
bool bBold = ( css::awt::FontWeight::BOLD == m_aFont.Weight );
bool bItalic = ( css::awt::FontSlant_ITALIC == m_aFont.Slant );
@@ -333,11 +338,11 @@ bool ORTFImportExport::Write()
m_xObject->getPropertyValue(PROPERTY_TEXTCOLOR) >>= nColor;
::Color aColor(nColor);
- OString aFonts(OUStringToOString(m_aFont.Name, eDestEnc));
+ OString aFonts(OUStringToOString(m_aFont.Name, RTL_TEXTENCODING_MS_1252));
if (aFonts.isEmpty())
{
OUString aName = Application::GetSettings().GetStyleSettings().GetAppFont().GetFamilyName();
- aFonts = OUStringToOString(aName, eDestEnc);
+ aFonts = OUStringToOString(aName, RTL_TEXTENCODING_MS_1252);
}
m_pStream->WriteCharPtr( "{\\fonttbl" );
@@ -437,7 +442,7 @@ bool ORTFImportExport::Write()
m_pStream->WriteCharPtr( "\\fs20\\f0\\cf0\\cb2" );
m_pStream->WriteChar( ' ' );
- RTFOutFuncs::Out_String(*m_pStream,sColumnName,eDestEnc);
+ RTFOutFuncs::Out_String(*m_pStream, sColumnName, m_eDestEnc);
m_pStream->WriteCharPtr( OOO_STRING_SVTOOLS_RTF_CELL );
m_pStream->WriteChar( '}' );