diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2022-12-06 14:41:45 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2022-12-06 18:08:58 +0000 |
commit | fa82e151d80d15eeb6dfae434f1dbb3b68907188 (patch) | |
tree | a3f04db73e10c8a85247009d9d33735862110823 /sw/qa/uibase | |
parent | 2fd5440c9766fa2833a3fc4dcb8a0d57a089121b (diff) |
sw, .uno:InsertBookmark: add a new BookmarkText parameter and accept HTML there
There was already an UNO command to insert a new bookmark with the
provided name, in a non-interactive way.
What was missing is to allow specifying the bookmark text, which is to
some extent not part of the bookmark, but e.g. the bookmark dialog
allows editing that still.
Add a new BookmarkText parameter to .uno:InsertBookmark, in case it's
specified then we interpret this as HTML and we create the bookmark on
the imported content, not simply at the current cursor position.
This is similar to commit 1c2ef850db29beb369dcc89a58fc73416ecd9c5c (sw,
.uno:TextFormField command: accept HTML in the FieldResult parameter,
2022-11-16), but that was for the field mode, while this is for the
bookmark mode of Zotero.
Change-Id: I4928d173e197796d40fdb53f81e84b6bfd77cdc5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/143736
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'sw/qa/uibase')
-rw-r--r-- | sw/qa/uibase/shells/shells.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sw/qa/uibase/shells/shells.cxx b/sw/qa/uibase/shells/shells.cxx index 01be5fda10b3..1f89211e52e8 100644 --- a/sw/qa/uibase/shells/shells.cxx +++ b/sw/qa/uibase/shells/shells.cxx @@ -377,6 +377,37 @@ CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testUpdateFieldmarks) CPPUNIT_ASSERT_EQUAL(OUString("new result 1new result 2"), aActual); } +CPPUNIT_TEST_FIXTURE(SwUibaseShellsTest, testInsertBookmark) +{ + // Given an empty document: + createSwDoc(); + SwDoc* pDoc = getSwDoc(); + + // When inserting a bookmark with text: + OUString aExpectedBookmarkName("ZOTERO_BREF_GiQ7DAWQYWLy"); + uno::Sequence<css::beans::PropertyValue> aArgs = { + comphelper::makePropertyValue("Bookmark", uno::Any(aExpectedBookmarkName)), + comphelper::makePropertyValue("BookmarkText", uno::Any(OUString("<p>aaa</p><p>bbb</p>"))), + }; + dispatchCommand(mxComponent, ".uno:InsertBookmark", aArgs); + + // Then make sure that we create a bookmark that covers that text: + IDocumentMarkAccess& rIDMA = *pDoc->getIDocumentMarkAccess(); + CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(1), rIDMA.getBookmarksCount()); + for (auto it = rIDMA.getBookmarksBegin(); it != rIDMA.getBookmarksEnd(); ++it) + { + sw::mark::IMark* pMark = *it; + CPPUNIT_ASSERT_EQUAL(aExpectedBookmarkName, pMark->GetName()); + SwPaM aPam(pMark->GetMarkStart(), pMark->GetMarkEnd()); + OUString aActualResult = aPam.GetText(); + // Without the accompanying fix in place, this test would have failed with: + // - Expected: aaa\nbbb + // - Actual : + // i.e. no text was inserted, the bookmark was collapsed. + CPPUNIT_ASSERT_EQUAL(OUString("aaa\nbbb"), aActualResult); + } +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |