diff options
-rw-r--r-- | desktop/qa/desktop_lib/test_desktop_lib.cxx | 14 | ||||
-rw-r--r-- | svx/sdi/svx.sdi | 2 | ||||
-rw-r--r-- | sw/inc/AnnotationWin.hxx | 1 | ||||
-rw-r--r-- | sw/sdi/_textsh.sdi | 5 | ||||
-rw-r--r-- | sw/source/uibase/docvw/AnnotationWin.cxx | 7 | ||||
-rw-r--r-- | sw/source/uibase/shells/textfld.cxx | 16 |
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 |