summaryrefslogtreecommitdiff
path: root/vcl/source/app
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-10-19 09:35:00 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-10-20 13:01:27 +0200
commitfb3c3b2861b6e658c260a22cc58c3f69be327b18 (patch)
treeeac276e95bb0e6a2309a061fa12076cacc979f9a /vcl/source/app
parentd8e2ad45000a08c5e5b6e028c2c8fcc69c06fd74 (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.cxx37
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);