vcl/inc/jsdialog/jsdialogbuilder.hxx |    8 ++++++++
 vcl/inc/salvtables.hxx               |   30 ++++++++++++++++++++++++++++++
 vcl/jsdialog/jsdialogbuilder.cxx     |   18 ++++++++++++++++++
 vcl/source/app/salvtables.cxx        |   33 ---------------------------------
 4 files changed, 56 insertions(+), 33 deletions(-)

New commits:
commit 1aa0d574b6b6baff73b60f8f990bc240e9aedf21
Author:     Szymon Kłos <szymon.k...@collabora.com>
AuthorDate: Fri Mar 3 12:12:50 2023 +0100
Commit:     Szymon Kłos <szymon.k...@collabora.com>
CommitDate: Tue Mar 7 09:10:51 2023 +0000

    Move SalInstanceLinkButton declaration to header file
    
    Change-Id: Icd5b79f31e1839303e81c1914c9e30e078661d9e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148173
    Tested-by: Szymon Kłos <szymon.k...@collabora.com>
    Reviewed-by: Szymon Kłos <szymon.k...@collabora.com>

diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx 
b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 6a96428fb494..472ff66eac62 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -284,6 +284,7 @@ public:
     virtual std::unique_ptr<weld::Container> weld_container(const OString& id) 
override;
     virtual std::unique_ptr<weld::Label> weld_label(const OString& id) 
override;
     virtual std::unique_ptr<weld::Button> weld_button(const OString& id) 
override;
+    virtual std::unique_ptr<weld::LinkButton> weld_link_button(const OString& 
id) override;
     virtual std::unique_ptr<weld::Entry> weld_entry(const OString& id) 
override;
     virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString& id) 
override;
     virtual std::unique_ptr<weld::Notebook> weld_notebook(const OString& id) 
override;
@@ -519,6 +520,13 @@ public:
              bool bTakeOwnership);
 };
 
+class JSLinkButton final : public JSWidget<SalInstanceLinkButton, 
::FixedHyperlink>
+{
+public:
+    JSLinkButton(JSDialogSender* pSender, ::FixedHyperlink* pButton, 
SalInstanceBuilder* pBuilder,
+                 bool bTakeOwnership);
+};
+
 class JSEntry final : public JSWidget<SalInstanceEntry, ::Edit>
 {
 public:
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index a4727b4aad96..c6af89564b9d 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -18,6 +18,7 @@
 #include <vcl/formatter.hxx>
 #include <vcl/toolkit/spinfld.hxx>
 #include <vcl/toolkit/fixed.hxx>
+#include <vcl/toolkit/fixedhyper.hxx>
 #include <vcl/toolkit/lstbox.hxx>
 #include <vcl/toolkit/menubtn.hxx>
 #include <vcl/toolkit/combobox.hxx>
@@ -1155,6 +1156,35 @@ public:
     virtual weld::Container* weld_message_area() override;
 };
 
+class SalInstanceLinkButton : public SalInstanceWidget, public virtual 
weld::LinkButton
+{
+private:
+    VclPtr<FixedHyperlink> m_xButton;
+    Link<FixedHyperlink&, void> m_aOrigClickHdl;
+
+    DECL_LINK(ClickHdl, FixedHyperlink&, void);
+
+public:
+    SalInstanceLinkButton(FixedHyperlink* pButton, SalInstanceBuilder* 
pBuilder,
+                          bool bTakeOwnership)
+        : SalInstanceWidget(pButton, pBuilder, bTakeOwnership)
+        , m_xButton(pButton)
+    {
+        m_aOrigClickHdl = m_xButton->GetClickHdl();
+        m_xButton->SetClickHdl(LINK(this, SalInstanceLinkButton, ClickHdl));
+    }
+
+    virtual void set_label(const OUString& rText) override { 
m_xButton->SetText(rText); }
+
+    virtual OUString get_label() const override { return m_xButton->GetText(); 
}
+
+    virtual void set_uri(const OUString& rUri) override { 
m_xButton->SetURL(rUri); }
+
+    virtual OUString get_uri() const override { return m_xButton->GetURL(); }
+
+    virtual ~SalInstanceLinkButton() override { 
m_xButton->SetClickHdl(m_aOrigClickHdl); }
+};
+
 class SalInstanceCheckButton : public SalInstanceButton, public virtual 
weld::CheckButton
 {
 private:
diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx
index b97ccd372359..50c1e5d7f097 100644
--- a/vcl/jsdialog/jsdialogbuilder.cxx
+++ b/vcl/jsdialog/jsdialogbuilder.cxx
@@ -933,6 +933,18 @@ std::unique_ptr<weld::Button> 
JSInstanceBuilder::weld_button(const OString& id)
     return pWeldWidget;
 }
 
+std::unique_ptr<weld::LinkButton> JSInstanceBuilder::weld_link_button(const 
OString& id)
+{
+    ::FixedHyperlink* pButton = m_xBuilder->get<::FixedHyperlink>(id);
+    auto pWeldWidget
+        = pButton ? std::make_unique<JSLinkButton>(this, pButton, this, false) 
: nullptr;
+
+    if (pWeldWidget)
+        RememberWidget(id, pWeldWidget.get());
+
+    return pWeldWidget;
+}
+
 std::unique_ptr<weld::Entry> JSInstanceBuilder::weld_entry(const OString& id)
 {
     Edit* pEntry = m_xBuilder->get<Edit>(id);
@@ -1348,6 +1360,12 @@ JSButton::JSButton(JSDialogSender* pSender, ::Button* 
pButton, SalInstanceBuilde
 {
 }
 
+JSLinkButton::JSLinkButton(JSDialogSender* pSender, ::FixedHyperlink* pButton,
+                           SalInstanceBuilder* pBuilder, bool bTakeOwnership)
+    : JSWidget<SalInstanceLinkButton, ::FixedHyperlink>(pSender, pButton, 
pBuilder, bTakeOwnership)
+{
+}
+
 JSEntry::JSEntry(JSDialogSender* pSender, ::Edit* pEntry, SalInstanceBuilder* 
pBuilder,
                  bool bTakeOwnership)
     : JSWidget<SalInstanceEntry, ::Edit>(pSender, pEntry, pBuilder, 
bTakeOwnership)
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 12f00597bb02..22800520fcec 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -53,7 +53,6 @@
 #include <vcl/toolkit/combobox.hxx>
 #include <vcl/toolkit/dialog.hxx>
 #include <vcl/toolkit/fixed.hxx>
-#include <vcl/toolkit/fixedhyper.hxx>
 #include <vcl/toolkit/fmtfield.hxx>
 #include <vcl/headbar.hxx>
 #include <vcl/toolkit/ivctrl.hxx>
@@ -3091,38 +3090,6 @@ public:
 };
 }
 
-namespace
-{
-class SalInstanceLinkButton : public SalInstanceWidget, public virtual 
weld::LinkButton
-{
-private:
-    VclPtr<FixedHyperlink> m_xButton;
-    Link<FixedHyperlink&, void> m_aOrigClickHdl;
-
-    DECL_LINK(ClickHdl, FixedHyperlink&, void);
-
-public:
-    SalInstanceLinkButton(FixedHyperlink* pButton, SalInstanceBuilder* 
pBuilder,
-                          bool bTakeOwnership)
-        : SalInstanceWidget(pButton, pBuilder, bTakeOwnership)
-        , m_xButton(pButton)
-    {
-        m_aOrigClickHdl = m_xButton->GetClickHdl();
-        m_xButton->SetClickHdl(LINK(this, SalInstanceLinkButton, ClickHdl));
-    }
-
-    virtual void set_label(const OUString& rText) override { 
m_xButton->SetText(rText); }
-
-    virtual OUString get_label() const override { return m_xButton->GetText(); 
}
-
-    virtual void set_uri(const OUString& rUri) override { 
m_xButton->SetURL(rUri); }
-
-    virtual OUString get_uri() const override { return m_xButton->GetURL(); }
-
-    virtual ~SalInstanceLinkButton() override { 
m_xButton->SetClickHdl(m_aOrigClickHdl); }
-};
-}
-
 IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton, void)
 {
     bool bConsumed = signal_activate_link();

Reply via email to