diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-10-19 09:35:00 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-10-20 13:01:27 +0200 |
commit | fb3c3b2861b6e658c260a22cc58c3f69be327b18 (patch) | |
tree | eac276e95bb0e6a2309a061fa12076cacc979f9a /vcl/source/app | |
parent | d8e2ad45000a08c5e5b6e028c2c8fcc69c06fd74 (diff) |
add MenuToggleButton for split toggle/menu button
which is uniquely used in the start center
Change-Id: I098e79ce34a9d99f8fb2eccb3dd04fa27e38427b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104534
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/source/app')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 093d79ce018b..4ebf0bda3b55 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -71,6 +71,7 @@ #include <vcl/virdev.hxx> #include <bitmaps.hlst> #include <calendar.hxx> +#include <vcl/menubtn.hxx> #include <verticaltabctrl.hxx> #include <window.h> #include <wizdlg.hxx> @@ -2669,6 +2670,35 @@ IMPL_LINK_NOARG(SalInstanceMenuButton, ActivateHdl, ::MenuButton*, void) namespace { + +class SalInstanceMenuToggleButton : public SalInstanceMenuButton, public virtual weld::MenuToggleButton +{ +private: + VclPtr<::MenuToggleButton> m_xMenuToggleButton; + +public: + SalInstanceMenuToggleButton(::MenuToggleButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership) + : SalInstanceMenuButton(pButton, pBuilder, bTakeOwnership) + , m_xMenuToggleButton(pButton) + { + m_xMenuToggleButton->SetDelayMenu(true); + m_xMenuToggleButton->SetDropDown(PushButtonDropdownStyle::SplitMenuButton); + } + + virtual void set_active(bool active) override + { + disable_notify_events(); + m_xMenuToggleButton->SetActive(active); + enable_notify_events(); + } + + virtual bool get_active() const override { return m_xMenuToggleButton->GetActive(); } +}; + +} + +namespace +{ class SalInstanceLinkButton : public SalInstanceContainer, public virtual weld::LinkButton { private: @@ -6682,6 +6712,13 @@ std::unique_ptr<weld::MenuButton> SalInstanceBuilder::weld_menu_button(const OSt : nullptr; } +std::unique_ptr<weld::MenuToggleButton> SalInstanceBuilder::weld_menu_toggle_button(const OString& id) +{ + MenuToggleButton* pButton = m_xBuilder->get<MenuToggleButton>(id); + return pButton ? std::make_unique<SalInstanceMenuToggleButton>(pButton, this, false) + : nullptr; +} + std::unique_ptr<weld::LinkButton> SalInstanceBuilder::weld_link_button(const OString& id) { FixedHyperlink* pButton = m_xBuilder->get<FixedHyperlink>(id); |