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 6d94b7988f2fa90d7ca4790183cefea8950da834 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue Oct 1 20:27:19 2024 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Fri Oct 4 15:28:21 2024 +0200 support setting writer comment contents from simple-html Change-Id: I42002c1b1ade940603ca6d2ca0f6072f1672cce8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174471 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index 895507c4696b..ebfc2d1582cf 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -1070,8 +1070,10 @@ class XFillGradientItem; #define SID_ATTR_BULLET_FONT TypedWhichId<SfxStringItem>(SID_SVX_START + 1213) #define SID_ATTR_BULLET_INDEX TypedWhichId<SfxUInt16Item>(SID_SVX_START + 1214) +#define SID_ATTR_POSTIT_HTML TypedWhichId<SvxPostItTextItem>( SID_SVX_START + 1215 ) + // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id -#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1214 + 1 ) +#define SID_SVX_FIRSTFREE ( SID_SVX_START + 1215 + 1 ) // Overflow check for slot IDs diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index ef8c9e32fd98..53f531866276 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 ec6a09cd8775..291978eee471 100644 --- a/sw/inc/AnnotationWin.hxx +++ b/sw/inc/AnnotationWin.hxx @@ -72,7 +72,8 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public InterimItemWindow void GotoPos(); const SwPostItField* GetPostItField() const { return mpField; } SwFormatField* GetFormatField() const { return mpFormatField; } - 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 7ece653275d0..20a23b745338 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, @@ -7684,7 +7687,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 46628b098527..670425779212 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 8365802163f1..7a7e410590f7 100644 --- a/sw/source/uibase/shells/textfld.cxx +++ b/sw/source/uibase/shells/textfld.cxx @@ -533,15 +533,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);