desktop/qa/desktop_lib/test_desktop_lib.cxx | 14 ++++++++++++++ svx/sdi/svx.sdi | 2 +- sw/inc/AnnotationWin.hxx | 1 + sw/sdi/_textsh.sdi | 5 +++++ sw/source/uibase/docvw/AnnotationWin.cxx | 7 +++++++ sw/source/uibase/shells/textfld.cxx | 16 ++++++++++++++++ 6 files changed, 44 insertions(+), 1 deletion(-)
New commits: commit 8a7c459f6afb7b8f1f622a61230a0a4411a417ac Author: Pranav Kant <pran...@collabora.co.uk> Date: Fri Jan 27 17:39:10 2017 +0530 lok: Allow to edit comment by postit id Change-Id: Ice1d40b7813226fe99c423047392b3416d763dd4 Reviewed-on: https://gerrit.libreoffice.org/33614 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: pranavk <pran...@collabora.co.uk> diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index b53461f..a1a769b 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 2029d78..ca91a73 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 0062f96..6186576 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 388690d..eec76a3 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 5ecc03a..b606cee 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 8ee0ad9..a8fab5b 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 _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits