diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2022-11-14 14:21:31 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-11-14 17:47:45 +0100 |
commit | 1ff360c29c99a570bfe59c69d8f589d4f2b59135 (patch) | |
tree | 9ec35e0c7d429711cfa9f1ed6dd5a957bbb171d7 /sw/qa | |
parent | b8850fe1d7dc86009516352c796619b33856141c (diff) |
sw: add new FieldType parameter for the .uno:TextFormField command
Currently LOK clients can't insert fieldmarks which are comparable to
the ones Zotero's Word extension inserts into DOCX files.
There is already a .uno:TextFormField UNO command to insert fieldmarks,
but it has a hardcoded field type set to ODF_FORMTEXT, which is not what
we need.
Fix this by adding a new, optional FieldType parameter to the existing
UNO command.
The field code/command and the result is not yet possible to customize.
Change-Id: I5625858af950f718220eebeef8fb90267693db7a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142709
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sw/qa')
-rw-r--r-- | sw/qa/uibase/shells/shells.cxx | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/sw/qa/uibase/shells/shells.cxx b/sw/qa/uibase/shells/shells.cxx index 55b388860adc..c107913e6469 100644 --- a/sw/qa/uibase/shells/shells.cxx +++ b/sw/qa/uibase/shells/shells.cxx @@ -25,6 +25,7 @@ #include <comphelper/processfactory.hxx> #include <comphelper/propertyvalue.hxx> #include <unotools/ucbstreamhelper.hxx> +#include <xmloff/odffields.hxx> #include <IDocumentContentOperations.hxx> #include <cmdid.h> @@ -269,6 +270,32 @@ CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testContentControlPageBreak) CPPUNIT_ASSERT_EQUAL(1, getPages()); } +CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testInsertTextFormField) +{ + // Given an empty document: + createSwDoc(); + SwDoc* pDoc = getSwDoc(); + + // When inserting an ODF_UNHANDLED fieldmark: + uno::Sequence<css::beans::PropertyValue> aArgs = { + comphelper::makePropertyValue("FieldType", uno::Any(OUString(ODF_UNHANDLED))), + }; + dispatchCommand(mxComponent, ".uno:TextFormField", aArgs); + + // Then make sure that it's type/name is correct: + SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell(); + SwCursor* pCursor = pWrtShell->GetCursor(); + pCursor->SttEndDoc(/*bSttDoc=*/true); + sw::mark::IFieldmark* pFieldmark + = pDoc->getIDocumentMarkAccess()->getFieldmarkAt(*pCursor->GetPoint()); + CPPUNIT_ASSERT(pFieldmark); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: vnd.oasis.opendocument.field.UNHANDLED + // - Actual : vnd.oasis.opendocument.field.FORMTEXT + // i.e. the custom type parameter was ignored. + CPPUNIT_ASSERT_EQUAL(OUString(ODF_UNHANDLED), pFieldmark->GetFieldname()); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |