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