vcl/inc/jsdialog/jsdialogbuilder.hxx |    8 ++++++++
 vcl/jsdialog/jsdialogbuilder.cxx     |   18 ++++++++++++++++++
 2 files changed, 26 insertions(+)

New commits:
commit d34047e02e947bcdba555065804a2f772cdd75f2
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Wed Oct 20 10:59:12 2021 +0200
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Wed Dec 29 12:01:26 2021 +0100

    jsdialog: weld Image widget
    
    Change-Id: Iaf900da5d6256b1aa441dc0dad07ba967f88b085
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123877
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127671
    Tested-by: Jenkins

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index f402aeab4cb8..801dd4860e85 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -276,6 +276,7 @@ public:
     virtual std::unique_ptr<weld::Popover> weld_popover(const OString& id) 
override;
     virtual std::unique_ptr<weld::Box> weld_box(const OString& id) override;
     virtual std::unique_ptr<weld::Widget> weld_widget(const OString& id) 
override;
+    virtual std::unique_ptr<weld::Image> weld_image(const OString& id) 
override;
 
     static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
                                                     VclMessageType 
eMessageType,
@@ -696,4 +697,11 @@ public:
     }
 };
 
+class JSImage : public JSWidget<SalInstanceImage, FixedImage>
+{
+public:
+    JSImage(JSDialogSender* pSender, FixedImage* pImage, SalInstanceBuilder* 
pBuilder,
+            bool bTakeOwnership);
+};
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index a9ed9b34678c..9792ce9dd1aa 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -1055,6 +1055,18 @@ std::unique_ptr<weld::Widget> 
JSInstanceBuilder::weld_widget(const OString& id)
     return pWeldWidget;
 }
 
+std::unique_ptr<weld::Image> JSInstanceBuilder::weld_image(const OString& id)
+{
+    FixedImage* pImage = m_xBuilder->get<FixedImage>(id);
+
+    auto pWeldWidget = pImage ? std::make_unique<JSImage>(this, pImage, this, 
false) : nullptr;
+
+    if (pWeldWidget)
+        RememberWidget(id, pWeldWidget.get());
+
+    return pWeldWidget;
+}
+
 weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* 
pParent,
                                                             VclMessageType 
eMessageType,
                                                             VclButtonsType 
eButtonType,
@@ -1680,4 +1692,10 @@ JSBox::JSBox(JSDialogSender* pSender, VclBox* pBox, 
SalInstanceBuilder* pBuilder
 {
 }
 
+JSImage::JSImage(JSDialogSender* pSender, FixedImage* pImage, 
SalInstanceBuilder* pBuilder,
+                 bool bTakeOwnership)
+    : JSWidget<SalInstanceImage, FixedImage>(pSender, pImage, pBuilder, 
bTakeOwnership)
+{
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */

Reply via email to