summaryrefslogtreecommitdiff
path: root/sw/qa/uibase
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2022-12-06 14:41:45 +0100
committerMiklos Vajna <vmiklos@collabora.com>2022-12-06 18:08:58 +0000
commitfa82e151d80d15eeb6dfae434f1dbb3b68907188 (patch)
treea3f04db73e10c8a85247009d9d33735862110823 /sw/qa/uibase
parent2fd5440c9766fa2833a3fc4dcb8a0d57a089121b (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.cxx31
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: */