[Libreoffice-commits] core.git: sw/qa sw/source
Justin Luth (via logerrit)
logerrit at kemper.freedesktop.org
Thu Apr 15 15:54:35 UTC 2021
sw/qa/extras/ww8export/data/tdf100961_fixedDateTime.doc |binary
sw/qa/extras/ww8export/ww8export3.cxx | 6 +++++
sw/source/filter/ww8/ww8par5.cxx | 18 ++++++++++++++--
3 files changed, 22 insertions(+), 2 deletions(-)
New commits:
commit 74a8bda42d443c8fbcfab7619a929ccf53a00918
Author: Justin Luth <justin_luth at sil.org>
AuthorDate: Mon Apr 12 14:52:13 2021 +0200
Commit: Justin Luth <justin_luth at sil.org>
CommitDate: Thu Apr 15 17:53:53 2021 +0200
partial fix tdf100961 doc import: E_Locked field as plain text
The date/time fields should be a const time,
not the current, updateable time.
This patch throws away the field and just imports
the plain text (and paves the way for locking
the field as well).
A better fix requires a better programmer,
one who can take that plain text string and
use the formatting information to
set the DateTime field to that time.
But at least this plain-text date will be better
than a completely wrong field date.
Change-Id: I8a57ecde64aa670b2205fcf99ed9ae226579c4ed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113986
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
Reviewed-by: Justin Luth <justin_luth at sil.org>
diff --git a/sw/qa/extras/ww8export/data/tdf100961_fixedDateTime.doc b/sw/qa/extras/ww8export/data/tdf100961_fixedDateTime.doc
new file mode 100644
index 000000000000..86f0e478d469
Binary files /dev/null and b/sw/qa/extras/ww8export/data/tdf100961_fixedDateTime.doc differ
diff --git a/sw/qa/extras/ww8export/ww8export3.cxx b/sw/qa/extras/ww8export/ww8export3.cxx
index 05211e47f0f3..e525927579e3 100644
--- a/sw/qa/extras/ww8export/ww8export3.cxx
+++ b/sw/qa/extras/ww8export/ww8export3.cxx
@@ -69,6 +69,12 @@ DECLARE_WW8EXPORT_TEST(testTdf37778_readonlySection, "tdf37778_readonlySection.d
CPPUNIT_ASSERT_EQUAL_MESSAGE("Last printed date", sal_Int16(2009), xDPS->getDocumentProperties()->getPrintDate().Year);
}
+DECLARE_WW8EXPORT_TEST(testTdf100961_fixedDateTime, "tdf100961_fixedDateTime.doc")
+{
+ // This should be a fixed date/time field, not the current time.
+ getParagraph(1, "05.01.19 04:06:08");
+}
+
DECLARE_WW8EXPORT_TEST(testTdf138345_paraCharHighlight, "tdf138345_paraCharHighlight.doc")
{
uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(9), 1, "A side benefit is that "), uno::UNO_QUERY_THROW);
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index 4ffd00a5ebee..ad20690464ef 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -1819,17 +1819,31 @@ eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, OUString& rStr )
}
}
+ sal_uInt16 nDoNotRecalculate = (pF->nOpt & 0x10) ? FIXEDFLD : 0;
+ if (nDoNotRecalculate)
+ {
+ // TODO: Doing this properly would require setting the field to the original date/time.
+ // Unfortunately, none of the plumbing to do this exists AFAICS
+ //SAL_WARN("DEBUG","Need to aField.SetDateTime() to ["<<GetFieldResult(pF)<<"] based on format string["<<aReadParam.GetResult()<<"]");
+ // So instead, just drop the field and insert the plain text.
+ // That is at least better than having the current date/time.
+ return eF_ResT::TEXT;
+ }
if (nDT & SvNumFormatType::DATE)
{
SwDateTimeField aField(static_cast<SwDateTimeFieldType*>(
- m_rDoc.getIDocumentFieldsAccess().GetSysFieldType(SwFieldIds::DateTime )), DATEFLD, nFormat);
+ m_rDoc.getIDocumentFieldsAccess().GetSysFieldType(SwFieldIds::DateTime)),
+ (DATEFLD | nDoNotRecalculate),
+ nFormat);
ForceFieldLanguage(aField, nLang);
m_rDoc.getIDocumentContentOperations().InsertPoolItem( *m_pPaM, SwFormatField( aField ) );
}
else if (nDT == SvNumFormatType::TIME)
{
SwDateTimeField aField(static_cast<SwDateTimeFieldType*>(
- m_rDoc.getIDocumentFieldsAccess().GetSysFieldType(SwFieldIds::DateTime)), TIMEFLD, nFormat);
+ m_rDoc.getIDocumentFieldsAccess().GetSysFieldType(SwFieldIds::DateTime)),
+ (TIMEFLD | nDoNotRecalculate),
+ nFormat);
ForceFieldLanguage(aField, nLang);
m_rDoc.getIDocumentContentOperations().InsertPoolItem( *m_pPaM, SwFormatField( aField ) );
}
More information about the Libreoffice-commits
mailing list