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);

Reply via email to