summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/qa/desktop_lib/test_desktop_lib.cxx14
-rw-r--r--svx/sdi/svx.sdi2
-rw-r--r--sw/inc/AnnotationWin.hxx1
-rw-r--r--sw/sdi/_textsh.sdi5
-rw-r--r--sw/source/uibase/docvw/AnnotationWin.cxx7
-rw-r--r--sw/source/uibase/shells/textfld.cxx16
6 files changed, 44 insertions, 1 deletions
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index b53461fdb16a..a1a769b31da6 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -1938,6 +1938,20 @@ void DesktopLOKTest::testCommentsCallbacks()
CPPUNIT_ASSERT_EQUAL(std::string("Reply comment"), aView2.m_aCommentCallbackResult.get<std::string>("text"));
int nCommentId2 = aView1.m_aCommentCallbackResult.get<int>("id");
+ // Edit the previously added comment
+ aCommandArgs = "{ \"Id\": { \"type\": \"long\", \"value\": \"" + OString::number(nCommentId2) + "\" }, \"Text\": { \"type\": \"string\", \"value\": \"Edited comment\" } }";
+ pDocument->pClass->postUnoCommand(pDocument, ".uno:EditAnnotation", aCommandArgs.getStr(), false);
+ Scheduler::ProcessEventsToIdle();
+
+ // We received a LOK_CALLBACK_COMMENT callback with comment 'Modify' action
+ CPPUNIT_ASSERT_EQUAL(std::string("Modify"), aView1.m_aCommentCallbackResult.get<std::string>("action"));
+ CPPUNIT_ASSERT_EQUAL(std::string("Modify"), aView2.m_aCommentCallbackResult.get<std::string>("action"));
+ // parent is unchanged still
+ CPPUNIT_ASSERT_EQUAL(nCommentId1, aView1.m_aCommentCallbackResult.get<int>("parent"));
+ CPPUNIT_ASSERT_EQUAL(nCommentId1, aView2.m_aCommentCallbackResult.get<int>("parent"));
+ CPPUNIT_ASSERT_EQUAL(std::string("Edited comment"), aView1.m_aCommentCallbackResult.get<std::string>("text"));
+ CPPUNIT_ASSERT_EQUAL(std::string("Edited comment"), aView2.m_aCommentCallbackResult.get<std::string>("text"));
+
// Delete the reply comment just added
aCommandArgs = "{ \"Id\": { \"type\": \"long\", \"value\": \"" + OString::number(nCommentId2) + "\" } }";
pDocument->pClass->postUnoCommand(pDocument, ".uno:DeleteComment", aCommandArgs.getStr(), false);
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 2029d785dbfd..ca91a73080b7 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -4554,7 +4554,7 @@ SfxVoidItem InsertAnnotation SID_INSERT_POSTIT
]
SfxVoidItem EditAnnotation SID_EDIT_POSTIT
-(SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR,SvxPostItDateItem Date SID_ATTR_POSTIT_DATE,SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT)
+(SvxPostItIdItem Id SID_ATTR_POSTIT_ID,SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR,SvxPostItDateItem Date SID_ATTR_POSTIT_DATE,SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT)
[
AutoUpdate = FALSE,
FastCall = FALSE,
diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx
index 0062f96481e5..6186576813f2 100644
--- a/sw/inc/AnnotationWin.hxx
+++ b/sw/inc/AnnotationWin.hxx
@@ -45,6 +45,7 @@ class SwAnnotationWin : public sw::sidebarwindows::SwSidebarWin
virtual void Delete() override;
virtual void GotoPos() override;
inline const SwPostItField* GetPostItField() { return mpField; }
+ void UpdateText(const OUString& aText);
virtual OUString GetAuthor() override;
virtual Date GetDate() override;
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index 388690dfa3cc..eec76a38ed58 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -924,6 +924,11 @@ interface BaseText
ExecMethod = ExecField;
StateMethod = StateField;
]
+ SID_EDIT_POSTIT
+ [
+ ExecMethod = ExecField;
+ StateMethod = StateField;
+ ]
FN_DELETE_COMMENT
[
ExecMethod = ExecField ;
diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx b/sw/source/uibase/docvw/AnnotationWin.cxx
index 5ecc03a0d930..b606cee379cf 100644
--- a/sw/source/uibase/docvw/AnnotationWin.cxx
+++ b/sw/source/uibase/docvw/AnnotationWin.cxx
@@ -300,6 +300,13 @@ void SwAnnotationWin::InitAnswer(OutlinerParaObject* pText)
Engine()->GetUndoManager().Clear();
}
+void SwAnnotationWin::UpdateText(const OUString& aText)
+{
+ Engine()->Clear();
+ GetOutlinerView()->InsertText(aText);
+ UpdateData();
+}
+
SvxLanguageItem SwAnnotationWin::GetLanguage()
{
// set initial language for outliner
diff --git a/sw/source/uibase/shells/textfld.cxx b/sw/source/uibase/shells/textfld.cxx
index 8ee0ad910d57..a8fab5bf90b5 100644
--- a/sw/source/uibase/shells/textfld.cxx
+++ b/sw/source/uibase/shells/textfld.cxx
@@ -476,6 +476,22 @@ void SwTextShell::ExecField(SfxRequest &rReq)
}
}
break;
+ case SID_EDIT_POSTIT:
+ {
+ const SvxPostItIdItem* pIdItem = rReq.GetArg<SvxPostItIdItem>(SID_ATTR_POSTIT_ID);
+ if (pIdItem && pIdItem->GetValue())
+ {
+ const SvxPostItTextItem* pTextItem = rReq.GetArg<SvxPostItTextItem>(SID_ATTR_POSTIT_TEXT);
+ OUString sText;
+ if ( pTextItem )
+ sText = pTextItem->GetValue();
+
+ sw::annotation::SwAnnotationWin* pAnnotationWin = GetView().GetPostItMgr()->GetAnnotationWin(pIdItem->GetValue());
+ if (pAnnotationWin)
+ pAnnotationWin->UpdateText(sText);
+ }
+ }
+ break;
case FN_REDLINE_COMMENT:
{
/* this code can be used once we want redline comments in the margin, all other stuff can