include/vcl/jsdialog/executor.hxx | 5 +++++ include/vcl/toolkit/menubtn.hxx | 2 ++ include/vcl/weld.hxx | 2 ++ vcl/jsdialog/executor.cxx | 6 ++++++ vcl/source/control/menubtn.cxx | 17 +++++++++++++++++ 5 files changed, 32 insertions(+)
New commits: commit 9724250c50d8f890339aa44a1ae43ea81dfabb23 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Wed Mar 15 18:46:17 2023 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Wed Mar 15 19:21:31 2023 +0000 jsdialog: dump menu for menubutton Change-Id: I449ae3f8cf294e2ab81a5b47862278e325f2cb1b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148937 Tested-by: Szymon Kłos <szymon.k...@collabora.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/vcl/jsdialog/executor.hxx b/include/vcl/jsdialog/executor.hxx index 0c47066da9fa..40214fb465af 100644 --- a/include/vcl/jsdialog/executor.hxx +++ b/include/vcl/jsdialog/executor.hxx @@ -66,6 +66,11 @@ public: rDrawingArea.dblclick(rPos); } + static void trigger_selected(weld::MenuButton& rButton, const OString& rIdent) + { + rButton.signal_selected(rIdent); + } + static void trigger_value_changed(weld::SpinButton& rSpinButton) { rSpinButton.signal_value_changed(); diff --git a/include/vcl/toolkit/menubtn.hxx b/include/vcl/toolkit/menubtn.hxx index ca77a48c9fec..7bb43cadb864 100644 --- a/include/vcl/toolkit/menubtn.hxx +++ b/include/vcl/toolkit/menubtn.hxx @@ -92,6 +92,8 @@ public: virtual FactoryFunction GetUITestFactory() const override; void SetCurItemId(); + + virtual void DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) override; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index a1966434355a..1a1e5ab4a223 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1576,6 +1576,8 @@ struct VCL_DLLPUBLIC TriStateEnabled class VCL_DLLPUBLIC MenuButton : virtual public ToggleButton { + friend class ::LOKTrigger; + Link<const OString&, void> m_aSelectHdl; protected: diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index 33e5884c74d2..997d0a515cc8 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -166,6 +166,12 @@ bool ExecuteAction(const std::string& nWindowId, const OString& rWidget, StringM return true; } + else if (sAction == "select") + { + LOKTrigger::trigger_selected( + *pButton, OUStringToOString(rData["data"], RTL_TEXTENCODING_ASCII_US)); + return true; + } } } else if (sControlType == "checkbox") diff --git a/vcl/source/control/menubtn.cxx b/vcl/source/control/menubtn.cxx index cd9b2095985e..64aec098db0f 100644 --- a/vcl/source/control/menubtn.cxx +++ b/vcl/source/control/menubtn.cxx @@ -265,6 +265,23 @@ void MenuButton::SetCurItemId(){ msCurItemIdent = mpMenu->GetCurItemIdent(); } +void MenuButton::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) +{ + PushButton::DumpAsPropertyTree(rJsonWriter); + + if (mpMenu) + { + auto aMenuNode = rJsonWriter.startArray("menu"); + for (int i = 0; i < mpMenu->GetItemCount(); i++) + { + auto aEntryNode = rJsonWriter.startStruct(); + auto sId = mpMenu->GetItemId(i); + rJsonWriter.put("id", mpMenu->GetItemIdent(sId)); + rJsonWriter.put("text", mpMenu->GetItemText(sId)); + } + } +} + //class MenuToggleButton ---------------------------------------------------- MenuToggleButton::MenuToggleButton( vcl::Window* pParent, WinBits nWinBits )