summaryrefslogtreecommitdiff
path: root/sw/source
diff options
context:
space:
mode:
authorPranam Lashkari <lpranam@collabora.com>2023-01-19 15:57:26 +0530
committerMiklos Vajna <vmiklos@collabora.com>2023-01-25 08:33:28 +0000
commitc8e49e7a49a99fd76a25ea825319d2243fed5c22 (patch)
tree03af3568ff77f40781f9d21a18c438ae14254fd0 /sw/source
parent843bca8989322c37e2e58904cf8db1bbeea9c35b (diff)
sw: send LOK call back on bookmark deletion
this helps with zotero when user deletes a bookmark or use undo without this online will be unaware of any such changes made by user Signed-off-by: Pranam Lashkari <lpranam@collabora.com> Change-Id: Id5ea4ee0ee1d16c399460cd177ec8e33256ce3dd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145777 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> (cherry picked from commit ea112b6d85a6914e1df40e064cd5df6d46248d68) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146022 Tested-by: Jenkins
Diffstat (limited to 'sw/source')
-rw-r--r--sw/source/core/crsr/bookmark.cxx21
-rw-r--r--sw/source/core/doc/docbm.cxx18
-rw-r--r--sw/source/core/inc/bookmark.hxx1
3 files changed, 40 insertions, 0 deletions
diff --git a/sw/source/core/crsr/bookmark.cxx b/sw/source/core/crsr/bookmark.cxx
index 8165b30a98b1..c43dd04c2496 100644
--- a/sw/source/core/crsr/bookmark.cxx
+++ b/sw/source/core/crsr/bookmark.cxx
@@ -420,6 +420,27 @@ namespace sw::mark
m_aName = rName;
}
+ void Bookmark::sendLOKDeleteCallback()
+ {
+ if (GetMarkPos().GetDoc().IsClipBoard())
+ return;
+
+ SfxViewShell* pViewShell = SfxViewShell::Current();
+ if (!pViewShell)
+ return;
+
+ OUString fieldCommand = GetName();
+ tools::JsonWriter aJson;
+ aJson.put("commandName", ".uno:DeleteBookmark");
+ aJson.put("success", true);
+ {
+ auto result = aJson.startNode("result");
+ aJson.put("DeleteBookmark", fieldCommand);
+ }
+
+ pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_UNO_COMMAND_RESULT, aJson.extractData());
+ }
+
void Bookmark::InitDoc(SwDoc& io_rDoc,
sw::mark::InsertMode const, SwPosition const*const)
{
diff --git a/sw/source/core/doc/docbm.cxx b/sw/source/core/doc/docbm.cxx
index cd6afc472350..e074d104b905 100644
--- a/sw/source/core/doc/docbm.cxx
+++ b/sw/source/core/doc/docbm.cxx
@@ -1262,6 +1262,24 @@ namespace sw::mark
switch(IDocumentMarkAccess::GetType(*pMark))
{
case IDocumentMarkAccess::MarkType::BOOKMARK:
+ {
+ auto const ppBookmark = lcl_FindMark(m_vBookmarks, *ppMark.get());
+ if ( ppBookmark != m_vBookmarks.end() )
+ {
+ Bookmark* pBookmark = dynamic_cast<Bookmark*>(*ppBookmark);
+
+ if(pBookmark)
+ pBookmark->sendLOKDeleteCallback();
+
+ m_vBookmarks.erase(ppBookmark);
+ }
+ else
+ {
+ assert(false &&
+ "<MarkManager::deleteMark(..)> - Bookmark not found in Bookmark container.");
+ }
+ }
+ break;
case IDocumentMarkAccess::MarkType::CROSSREF_HEADING_BOOKMARK:
case IDocumentMarkAccess::MarkType::CROSSREF_NUMITEM_BOOKMARK:
{
diff --git a/sw/source/core/inc/bookmark.hxx b/sw/source/core/inc/bookmark.hxx
index b4630b18701c..6ba9484b3bd8 100644
--- a/sw/source/core/inc/bookmark.hxx
+++ b/sw/source/core/inc/bookmark.hxx
@@ -188,6 +188,7 @@ namespace sw::mark {
bool IsInClipboard() const override;
bool IsInUndo() const override;
bool IsInContent() const override;
+ void sendLOKDeleteCallback();
css::uno::Reference< css::rdf::XMetadatable > MakeUnoObject() override;
private: