include/svx/svxids.hrc | 4 +++- svx/sdi/svx.sdi | 10 ++++++++-- sw/inc/AnnotationWin.hxx | 3 ++- sw/sdi/swriter.sdi | 9 +++++++-- sw/source/uibase/docvw/AnnotationWin.cxx | 10 ++++++++++ sw/source/uibase/shells/textfld.cxx | 16 ++++++++++------ 6 files changed, 40 insertions(+), 12 deletions(-)
New commits: commit b4e424adbfdd5c4e18240ddec1405690e8718d2b Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue Oct 1 20:27:19 2024 +0100 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Fri Oct 4 09:35:49 2024 +0200 support setting writer comment contents from simple-html Change-Id: I42002c1b1ade940603ca6d2ca0f6072f1672cce8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174365 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index 7cc55ac02813..0a2bc143210a 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -1058,8 +1058,10 @@ class XFillGradientItem; #define SID_CHAR_DLG_FOR_PARAGRAPH ( SID_SVX_START + 1210 ) #define SID_SET_DOCUMENT_LANGUAGE TypedWhichId<SfxBoolItem>( SID_SVX_START + 1211 ) +#define SID_ATTR_POSTIT_HTML TypedWhichId<SvxPostItTextItem>( SID_SVX_START + 1212 ) + // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id -#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1211 + 1 ) +#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1212 + 1 ) // Overflow check for slot IDs diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index bab0601c2f28..7bb020e0149c 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -4684,7 +4684,10 @@ SfxVoidItem InPlaceObjectResize SID_OBJECTRESIZE SfxVoidItem InsertAnnotation SID_INSERT_POSTIT -(SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR,SvxPostItDateItem Date SID_ATTR_POSTIT_DATE,SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT) +(SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR, + SvxPostItDateItem Date SID_ATTR_POSTIT_DATE, + SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT, + SvxPostItTextItem Html SID_ATTR_POSTIT_HTML) [ AutoUpdate = FALSE, FastCall = FALSE, @@ -4705,6 +4708,7 @@ SfxVoidItem EditAnnotation SID_EDIT_POSTIT SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR, SvxPostItDateItem Date SID_ATTR_POSTIT_DATE, SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT, + SvxPostItTextItem Html SID_ATTR_POSTIT_HTML, SfxInt32Item PositionX SID_ATTR_POSTIT_POSITION_X SfxInt32Item PositionY SID_ATTR_POSTIT_POSITION_Y) [ @@ -4758,7 +4762,9 @@ SfxVoidItem ShowResolvedAnnotations SID_TOGGLE_RESOLVED_NOTES SfxVoidItem ReplyToAnnotation SID_REPLYTO_POSTIT -(SvxPostItIdItem Id SID_ATTR_POSTIT_ID,SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT) +(SvxPostItIdItem Id SID_ATTR_POSTIT_ID, + SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT, + SvxPostItTextItem Html SID_ATTR_POSTIT_HTML) [ AutoUpdate = FALSE, FastCall = FALSE, diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx index aee382e51a82..235a1a70b587 100644 --- a/sw/inc/AnnotationWin.hxx +++ b/sw/inc/AnnotationWin.hxx @@ -71,7 +71,8 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public InterimItemWindow void Delete(); void GotoPos(); const SwPostItField* GetPostItField() const { return mpField; } - void UpdateText(const OUString& aText); + void UpdateText(const OUString& rText); + void UpdateHTML(const OUString& rHtml); OUString GetAuthor() const; Date GetDate() const; diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi index 77ef4f2e3332..0068641cb3b6 100644 --- a/sw/sdi/swriter.sdi +++ b/sw/sdi/swriter.sdi @@ -2519,7 +2519,10 @@ SfxVoidItem IndexMarkToIndex FN_IDX_MARK_TO_IDX ] SfxVoidItem InsertAnnotation FN_POSTIT -(SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT,SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR,SvxPostItDateItem Date SID_ATTR_POSTIT_DATE) +(SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT, + SvxPostItTextItem Html SID_ATTR_POSTIT_HTML, + SvxPostItAuthorItem Author SID_ATTR_POSTIT_AUTHOR, + SvxPostItDateItem Date SID_ATTR_POSTIT_DATE) [ AutoUpdate = FALSE, FastCall = FALSE, @@ -7702,7 +7705,9 @@ SfxBoolItem SelectionModeDefault FN_SELECTION_MODE_DEFAULT ] SfxVoidItem ReplyComment FN_REPLY -(SvxPostItIdItem Id SID_ATTR_POSTIT_ID,SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT) +(SvxPostItIdItem Id SID_ATTR_POSTIT_ID, + SvxPostItTextItem Text SID_ATTR_POSTIT_TEXT, + SvxPostItTextItem Html SID_ATTR_POSTIT_HTML) [ AutoUpdate = FALSE, FastCall = FALSE, diff --git a/sw/source/uibase/docvw/AnnotationWin.cxx b/sw/source/uibase/docvw/AnnotationWin.cxx index 75569fcd5cf3..41e5bac03dc5 100644 --- a/sw/source/uibase/docvw/AnnotationWin.cxx +++ b/sw/source/uibase/docvw/AnnotationWin.cxx @@ -484,6 +484,16 @@ void SwAnnotationWin::UpdateText(const OUString& aText) UpdateData(); } +void SwAnnotationWin::UpdateHTML(const OUString& rHtml) +{ + mpOutliner->Clear(); + OString sHtmlContent(rHtml.toUtf8()); + SvMemoryStream aHTMLStream(const_cast<char*>(sHtmlContent.getStr()), + sHtmlContent.getLength(), StreamMode::READ); + GetOutlinerView()->Read(aHTMLStream, EETextFormat::Html, nullptr); + UpdateData(); +} + bool SwAnnotationWin::IsReadOnlyOrProtected() const { return mbReadonly || diff --git a/sw/source/uibase/shells/textfld.cxx b/sw/source/uibase/shells/textfld.cxx index d20a37ffe1d3..02d3b7a09a06 100644 --- a/sw/source/uibase/shells/textfld.cxx +++ b/sw/source/uibase/shells/textfld.cxx @@ -521,15 +521,19 @@ void SwTextShell::ExecField(SfxRequest &rReq) const SvxPostItIdItem* pIdItem = rReq.GetArg<SvxPostItIdItem>(SID_ATTR_POSTIT_ID); if (pIdItem && !pIdItem->GetValue().isEmpty()) { - 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().toUInt32()); if (pAnnotationWin && lcl_canUserModifyAnnotation(GetView(), pAnnotationWin)) { - pAnnotationWin->UpdateText(sText); + if (const SvxPostItTextItem* pHtmlItem = rReq.GetArg<SvxPostItTextItem>(SID_ATTR_POSTIT_HTML)) + pAnnotationWin->UpdateHTML(pHtmlItem->GetValue()); + else + { + const SvxPostItTextItem* pTextItem = rReq.GetArg<SvxPostItTextItem>(SID_ATTR_POSTIT_TEXT); + OUString sText; + if (pTextItem) + sText = pTextItem->GetValue(); + pAnnotationWin->UpdateText(sText); + } // explicit state update to get the Undo state right GetView().AttrChangedNotify(nullptr);