include/vcl/jsdialog/executor.hxx | 5 +++++ include/vcl/toolkit/menubtn.hxx | 2 ++ include/vcl/weld.hxx | 2 ++ vcl/jsdialog/executor.cxx | 5 +++++ vcl/source/control/menubtn.cxx | 17 +++++++++++++++++ 5 files changed, 31 insertions(+)
New commits: commit c81306b7f5f2c12c3b4391dce4697276a0a3523b Author: Szymon Kłos <[email protected]> AuthorDate: Wed Mar 15 18:46:17 2023 +0100 Commit: Szymon Kłos <[email protected]> CommitDate: Wed Apr 5 16:02:22 2023 +0200 jsdialog: dump menu for menubutton Change-Id: I449ae3f8cf294e2ab81a5b47862278e325f2cb1b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148937 Tested-by: Szymon Kłos <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150041 Tested-by: Jenkins diff --git a/include/vcl/jsdialog/executor.hxx b/include/vcl/jsdialog/executor.hxx index c781f1ea1150..6138f156e0de 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 OUString& 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 dba8ec1a52c1..d02d077e8d8a 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 31ea29f455b6..5b763b4b253c 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1582,6 +1582,8 @@ struct VCL_DLLPUBLIC TriStateEnabled class VCL_DLLPUBLIC MenuButton : virtual public ToggleButton { + friend class ::LOKTrigger; + Link<const OUString&, void> m_aSelectHdl; protected: diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index 9c81aa767be5..cb8dfa4d455c 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -166,6 +166,11 @@ bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget, StringMap return true; } + else if (sAction == "select") + { + LOKTrigger::trigger_selected(*pButton, rData["data"]); + 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 )
