[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - desktop/source include/vcl vcl/jsdialog

Szymon KÅ‚os (via logerrit) logerrit at kemper.freedesktop.org
Wed Jun 24 09:37:29 UTC 2020


 desktop/source/lib/init.cxx              |   13 +++++++++++++
 include/vcl/jsdialog/jsdialogbuilder.hxx |   13 +++++++++++++
 include/vcl/weld.hxx                     |    3 +--
 vcl/jsdialog/jsdialogbuilder.cxx         |   28 ++++++++++++++++++++++++++++
 4 files changed, 55 insertions(+), 2 deletions(-)

New commits:
commit 272efec844e37ec8a37872d6bed0f5b4a6d59d42
Author:     Szymon Kłos <szymon.klos at collabora.com>
AuthorDate: Tue Jun 16 14:07:32 2020 +0200
Commit:     Szymon Kłos <szymon.klos at collabora.com>
CommitDate: Wed Jun 24 11:36:53 2020 +0200

    jsdialog: weld toolbar
    
    Change-Id: If105d6716fc43f471f63f4eb60fa85498cb3dcc6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96934
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
    Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 771bc2e72b02..bb2307363ab0 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3689,6 +3689,19 @@ static void doc_sendDialogEvent(LibreOfficeKitDocument* /*pThis*/, unsigned nWin
                             bContinueWithLOKWindow = true;
                     }
                 }
+                else if (sControlType == "toolbox")
+                {
+                    auto pToolbar = dynamic_cast<weld::Toolbar*>(pWidget);
+                    if (pToolbar)
+                    {
+                        if (sAction == "click")
+                        {
+                            pToolbar->signal_clicked(OUStringToOString(aMap["data"], RTL_TEXTENCODING_ASCII_US));
+                        }
+                        else
+                            bContinueWithLOKWindow = true;
+                    }
+                }
                 else
                 {
                     bContinueWithLOKWindow = true;
diff --git a/include/vcl/jsdialog/jsdialogbuilder.hxx b/include/vcl/jsdialog/jsdialogbuilder.hxx
index 52ada2848472..380226e43937 100644
--- a/include/vcl/jsdialog/jsdialogbuilder.hxx
+++ b/include/vcl/jsdialog/jsdialogbuilder.hxx
@@ -20,6 +20,8 @@
 #include <vcl/button.hxx>
 #include <vcl/fmtfield.hxx>
 
+class ToolBox;
+
 typedef std::map<OString, weld::Widget*> WidgetMap;
 
 class JSDialogNotifyIdle : public Idle
@@ -82,6 +84,8 @@ public:
     weld_drawing_area(const OString& id, const a11yref& rA11yImpl = nullptr,
                       FactoryFunction pUITestFactoryFunction = nullptr, void* pUserData = nullptr,
                       bool bTakeOwnership = false) override;
+    std::unique_ptr<weld::Toolbar> weld_toolbar(const OString& id,
+                                                bool bTakeOwnership = true) override;
 
     static weld::MessageDialog* CreateMessageDialog(weld::Widget* pParent,
                                                     VclMessageType eMessageType,
@@ -221,6 +225,15 @@ public:
     virtual void queue_draw_area(int x, int y, int width, int height) override;
 };
 
+class VCL_DLLPUBLIC JSToolbar : public JSWidget<SalInstanceToolbar, ::ToolBox>
+{
+public:
+    JSToolbar(VclPtr<vcl::Window> aOwnedToplevel, ::ToolBox* pToolbox, SalInstanceBuilder* pBuilder,
+              bool bTakeOwnership);
+
+    void signal_clicked(const OString& rIdent) override;
+};
+
 #endif
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 2f5509f74edd..7905a286e24c 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1921,8 +1921,6 @@ class VCL_DLLPUBLIC Toolbar : virtual public Widget
 protected:
     Link<const OString&, void> m_aClickHdl;
 
-    void signal_clicked(const OString& rIdent) { m_aClickHdl.Call(rIdent); }
-
 public:
     virtual void set_item_sensitive(const OString& rIdent, bool bSensitive) = 0;
     virtual bool get_item_sensitive(const OString& rIdent) const = 0;
@@ -1950,6 +1948,7 @@ public:
     virtual vcl::ImageType get_icon_size() const = 0;
 
     void connect_clicked(const Link<const OString&, void>& rLink) { m_aClickHdl = rLink; }
+    virtual void signal_clicked(const OString& rIdent) { m_aClickHdl.Call(rIdent); }
 };
 
 class VCL_DLLPUBLIC SizeGroup
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index 3fba10ad2bc3..ba19912db0a2 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -13,6 +13,7 @@
 #include <comphelper/lok.hxx>
 #include <vcl/dialog.hxx>
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
+#include <vcl/toolbox.hxx>
 
 using namespace weld;
 
@@ -301,6 +302,21 @@ JSInstanceBuilder::weld_drawing_area(const OString& id, const a11yref& rA11yImpl
     return pWeldWidget;
 }
 
+std::unique_ptr<weld::Toolbar> JSInstanceBuilder::weld_toolbar(const OString& id,
+                                                               bool bTakeOwnership)
+{
+    ToolBox* pToolBox = m_xBuilder->get<ToolBox>(id);
+    auto pWeldWidget = pToolBox ? std::make_unique<JSToolbar>(
+                                      m_bHasTopLevelDialog ? m_aOwnedToplevel : m_aParentDialog,
+                                      pToolBox, this, bTakeOwnership)
+                                : nullptr;
+
+    if (pWeldWidget)
+        RememberWidget(id, pWeldWidget.get());
+
+    return pWeldWidget;
+}
+
 weld::MessageDialog* JSInstanceBuilder::CreateMessageDialog(weld::Widget* pParent,
                                                             VclMessageType eMessageType,
                                                             VclButtonsType eButtonType,
@@ -511,4 +527,16 @@ void JSDrawingArea::queue_draw_area(int x, int y, int width, int height)
     notifyDialogState();
 }
 
+JSToolbar::JSToolbar(VclPtr<vcl::Window> aOwnedToplevel, ::ToolBox* pToolbox,
+                     SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+    : JSWidget<SalInstanceToolbar, ::ToolBox>(aOwnedToplevel, pToolbox, pBuilder, bTakeOwnership)
+{
+}
+
+void JSToolbar::signal_clicked(const OString& rIdent)
+{
+    SalInstanceToolbar::signal_clicked(rIdent);
+    notifyDialogState();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */


More information about the Libreoffice-commits mailing list