diff --git a/include/vcl/jsdialog/executor.hxx b/include/vcl/jsdialog/executor.hxx index 0c7abbf693ca..159b1dccd730 100644 --- a/include/vcl/jsdialog/executor.hxx +++ b/include/vcl/jsdialog/executor.hxx @@ -22,6 +22,10 @@ public: static void trigger_changed(weld::ComboBox& rComboBox) { rComboBox.signal_changed(); } + static void trigger_changed(weld::TreeView& rTreeView) { rTreeView.signal_changed(); } + + static void trigger_changed(weld::IconView& rIconView) { rIconView.signal_selection_changed(); } + static void trigger_toggled(weld::ToggleButton& rButton) { rButton.signal_toggled(); } static void trigger_row_activated(weld::TreeView& rTreeView) @@ -29,7 +33,10 @@ public: rTreeView.signal_row_activated(); } - static void trigger_changed(weld::TreeView& rTreeView) { rTreeView.signal_changed(); } + static void trigger_item_activated(weld::IconView& rIconView) + { + rIconView.signal_item_activated(); + } static void trigger_clicked(weld::Toolbar& rToolbar, const OString& rIdent) { diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 29167234a31c..fcf0749f96c7 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1238,6 +1238,8 @@ public: class VCL_DLLPUBLIC IconView : virtual public Container { + friend class ::LOKTrigger; + private: OUString m_sSavedValue; diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index da2cea423d3d..dc05c0f75f01 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -250,6 +250,36 @@ bool ExecuteAction(sal_uInt64 nWindowId, const OString& rWidget, StringMap& rDat } } } + else if (sControlType == "iconview") + { + auto pIconView = dynamic_cast(pWidget); + if (pIconView) + { + if (sAction == "select") + { + OString nPosString + = OUStringToOString(rData["data"], RTL_TEXTENCODING_ASCII_US); + int nPos = std::atoi(nPosString.getStr()); + + pIconView->select(nPos); + LOKTrigger::trigger_changed(*pIconView); + + return true; + } + else if (sAction == "activate") + { + OString nPosString + = OUStringToOString(rData["data"], RTL_TEXTENCODING_ASCII_US); + int nPos = std::atoi(nPosString.getStr()); + + pIconView->select(nPos); + LOKTrigger::trigger_changed(*pIconView); + LOKTrigger::trigger_item_activated(*pIconView); + + return true; + } + } + } else if (sControlType == "expander") { auto pExpander = dynamic_cast(pWidget);