summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2013-06-16 13:21:38 +0200
committerMiklos Vajna <vmiklos@suse.cz>2013-06-16 14:47:07 +0200
commitae85b56a9a18657a57fd5033faff34e7ee4ff2f8 (patch)
treed62b2af7172b2119637a540ab448e6171aca5af3
parent01bc38ac11fe791474fdffd763534851308d86ab (diff)
Import/export RTF_REVISIONS
File -> Properties -> Security -> Record Changes on the UI. Change-Id: I96d321f407abd33e15a4a133e6723d48efa5bc53
-rw-r--r--sw/qa/extras/rtfexport/data/record-changes.rtf3
-rw-r--r--sw/qa/extras/rtfexport/rtfexport.cxx8
-rw-r--r--sw/source/filter/ww8/rtfexport.cxx3
-rw-r--r--writerfilter/source/rtftok/rtfdocumentimpl.cxx3
4 files changed, 17 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfexport/data/record-changes.rtf b/sw/qa/extras/rtfexport/data/record-changes.rtf
new file mode 100644
index 000000000000..c970891a1bfd
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/record-changes.rtf
@@ -0,0 +1,3 @@
+{\rtf1\revisions
+hello
+\par }
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 0605b82cb18d..7de0a4bdf68a 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -61,12 +61,13 @@ public:
void testMnor();
void testI120928();
void testBookmark();
void testHyperlink();
void testTextFrameBorders();
void testTextframeGradient();
+ void testRecordChanges();
CPPUNIT_TEST_SUITE(Test);
#if !defined(MACOSX) && !defined(WNT)
CPPUNIT_TEST(run);
#endif
CPPUNIT_TEST_SUITE_END();
@@ -114,12 +115,13 @@ void Test::run()
{"mnor.rtf", &Test::testMnor},
{"i120928.rtf", &Test::testI120928},
{"bookmark.rtf", &Test::testBookmark},
{"hyperlink.rtf", &Test::testHyperlink},
{"textframe-borders.rtf", &Test::testTextFrameBorders},
{"textframe-gradient.rtf", &Test::testTextframeGradient},
+ {"record-changes.rtf", &Test::testRecordChanges},
};
// Don't test the first import of these, for some reason those tests fail
const char* aBlacklist[] = {
"math-eqarray.rtf",
"math-escaping.rtf",
"math-lim.rtf",
@@ -581,11 +583,17 @@ void Test::testTextframeGradient()
aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), aGradient.StartColor);
CPPUNIT_ASSERT_EQUAL(sal_Int32(0x666666), aGradient.EndColor);
CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
}
+void Test::testRecordChanges()
+{
+ // \revisions wasn't imported/exported.
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(mxComponent, "RecordChanges"));
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(Test);
CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/rtfexport.cxx b/sw/source/filter/ww8/rtfexport.cxx
index c98b78020505..a766e348b8ee 100644
--- a/sw/source/filter/ww8/rtfexport.cxx
+++ b/sw/source/filter/ww8/rtfexport.cxx
@@ -512,12 +512,15 @@ void RtfExport::ExportDocument_Impl()
ViewShell *pViewShell(pDoc->GetCurrentViewShell());
if (pViewShell && pViewShell->GetViewOptions()->GetZoomType() == SVX_ZOOM_PERCENT)
{
Strm() << OOO_STRING_SVTOOLS_RTF_VIEWSCALE;
OutULong(pViewShell->GetViewOptions()->GetZoom());
}
+ // Record changes?
+ if (nsRedlineMode_t::REDLINE_ON & mnRedlineMode)
+ Strm() << OOO_STRING_SVTOOLS_RTF_REVISIONS;
// Page description
WritePageDescTable();
// Enable form protection by default if needed, as there is no switch to
// enable it on a per-section basis. OTOH don't always enable it as it
// breaks moving of drawings - so write it only in case there is really a
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index a2bf11e53b00..8bd05dc5d2b8 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -2652,12 +2652,15 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
case RTF_NOWRAP:
m_aStates.top().aFrame.setSprm(NS_sprm::LN_PWr, NS_ooxml::LN_Value_wordprocessingml_ST_Wrap_notBeside);
break;
case RTF_MNOR:
m_bMathNor = true;
break;
+ case RTF_REVISIONS:
+ m_aSettingsTableSprms.set(NS_ooxml::LN_CT_Settings_trackRevisions, RTFValue::Pointer_t(new RTFValue(1)));
+ break;
default:
{
SAL_INFO("writerfilter", "TODO handle flag '" << lcl_RtfToString(nKeyword) << "'");
aSkip.setParsed(false);
}
break;