extensions/source/propctrlr/selectlabeldialog.cxx | 420 +++++++++++----------- extensions/source/propctrlr/selectlabeldialog.hxx | 62 +-- extensions/uiconfig/spropctrlr/ui/multiline.ui | 91 ++-- solenv/clang-format/excludelist | 2 vcl/qt5/QtInstanceBuilder.cxx | 2 5 files changed, 296 insertions(+), 281 deletions(-)
New commits: commit da604bb33002827dc38ad77240a3c7233561a7ae Author: Michael Weghorn <[email protected]> AuthorDate: Wed Feb 25 00:38:16 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Wed Feb 25 09:03:39 2026 +0100 propctrlr: clang-format OSelectLabelDialog code This in particular gets rid of an extra level of indentation. Change-Id: Ief9a3867cc91db520b8e1d43271a76ecaacede25 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200276 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/extensions/source/propctrlr/selectlabeldialog.cxx b/extensions/source/propctrlr/selectlabeldialog.cxx index e1f55befded1..c4ae151e65ed 100644 --- a/extensions/source/propctrlr/selectlabeldialog.cxx +++ b/extensions/source/propctrlr/selectlabeldialog.cxx @@ -37,246 +37,256 @@ #include <tools/debug.hxx> #include <vcl/weld/Builder.hxx> - namespace pcr { +using namespace ::com::sun::star::uno; +using namespace ::com::sun::star::container; +using namespace ::com::sun::star::beans; +using namespace ::com::sun::star::form; +using namespace ::com::sun::star::sdbc; +using namespace ::com::sun::star::lang; + +// OSelectLabelDialog +OSelectLabelDialog::OSelectLabelDialog(weld::Window* pParent, + Reference<XPropertySet> const& _xControlModel) + : GenericDialogController(pParent, u"modules/spropctrlr/ui/labelselectiondialog.ui"_ustr, + u"LabelSelectionDialog"_ustr) + , m_xControlModel(_xControlModel) + , m_bLastSelected(false) + , m_bHaveAssignableControl(false) + , m_xMainDesc(m_xBuilder->weld_label(u"label"_ustr)) + , m_xControlTree(m_xBuilder->weld_tree_view(u"control"_ustr)) + , m_xScratchIter(m_xControlTree->make_iterator()) + , m_xNoAssignment(m_xBuilder->weld_check_button(u"noassignment"_ustr)) +{ + m_xControlTree->connect_selection_changed(LINK(this, OSelectLabelDialog, OnEntrySelected)); + m_xControlTree->set_size_request(-1, m_xControlTree->get_height_rows(8)); + + // fill the description + OUString sDescription = m_xMainDesc->get_label(); + sal_Int16 nClassID = FormComponentType::CONTROL; + if (::comphelper::hasProperty(PROPERTY_CLASSID, m_xControlModel)) + nClassID = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); + + sDescription = sDescription.replaceAll("$controlclass$", + GetUIHeadlineName(nClassID, Any(m_xControlModel))); + OUString sName = ::comphelper::getString(m_xControlModel->getPropertyValue(PROPERTY_NAME)); + sDescription = sDescription.replaceAll("$controlname$", sName); + m_xMainDesc->set_label(sDescription); + + // search for the root of the form hierarchy + Reference<XChild> xCont(m_xControlModel, UNO_QUERY); + Reference<XInterface> xSearch(xCont.is() ? xCont->getParent() : Reference<XInterface>()); + Reference<XResultSet> xParentAsResultSet(xSearch, UNO_QUERY); + while (xParentAsResultSet.is()) + { + xCont.set(xSearch, UNO_QUERY); + xSearch = xCont.is() ? xCont->getParent() : Reference<XInterface>(); + xParentAsResultSet.set(xSearch, UNO_QUERY); + } - - using namespace ::com::sun::star::uno; - using namespace ::com::sun::star::container; - using namespace ::com::sun::star::beans; - using namespace ::com::sun::star::form; - using namespace ::com::sun::star::sdbc; - using namespace ::com::sun::star::lang; - - - // OSelectLabelDialog - OSelectLabelDialog::OSelectLabelDialog(weld::Window* pParent, Reference< XPropertySet > const & _xControlModel) - : GenericDialogController(pParent, u"modules/spropctrlr/ui/labelselectiondialog.ui"_ustr, u"LabelSelectionDialog"_ustr) - , m_xControlModel(_xControlModel) - , m_bLastSelected(false) - , m_bHaveAssignableControl(false) - , m_xMainDesc(m_xBuilder->weld_label(u"label"_ustr)) - , m_xControlTree(m_xBuilder->weld_tree_view(u"control"_ustr)) - , m_xScratchIter(m_xControlTree->make_iterator()) - , m_xNoAssignment(m_xBuilder->weld_check_button(u"noassignment"_ustr)) + // and insert all entries below this root into the listbox + if (xSearch.is()) { - m_xControlTree->connect_selection_changed(LINK(this, OSelectLabelDialog, OnEntrySelected)); - m_xControlTree->set_size_request(-1, m_xControlTree->get_height_rows(8)); - - // fill the description - OUString sDescription = m_xMainDesc->get_label(); - sal_Int16 nClassID = FormComponentType::CONTROL; - if (::comphelper::hasProperty(PROPERTY_CLASSID, m_xControlModel)) - nClassID = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); - - sDescription = sDescription.replaceAll("$controlclass$", - GetUIHeadlineName(nClassID, Any(m_xControlModel))); - OUString sName = ::comphelper::getString(m_xControlModel->getPropertyValue(PROPERTY_NAME)); - sDescription = sDescription.replaceAll("$controlname$", sName); - m_xMainDesc->set_label(sDescription); - - // search for the root of the form hierarchy - Reference< XChild > xCont(m_xControlModel, UNO_QUERY); - Reference< XInterface > xSearch( xCont.is() ? xCont->getParent() : Reference< XInterface > ()); - Reference< XResultSet > xParentAsResultSet(xSearch, UNO_QUERY); - while (xParentAsResultSet.is()) + // check which service the allowed components must support + sal_Int16 nClassId = 0; + try { - xCont.set(xSearch, UNO_QUERY); - xSearch = xCont.is() ? xCont->getParent() : Reference< XInterface > (); - xParentAsResultSet.set(xSearch, UNO_QUERY); + nClassId = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); } - - // and insert all entries below this root into the listbox - if (xSearch.is()) + catch (...) { - // check which service the allowed components must support - sal_Int16 nClassId = 0; - try { nClassId = ::comphelper::getINT16(m_xControlModel->getPropertyValue(PROPERTY_CLASSID)); } catch(...) { } - m_sRequiredService = (FormComponentType::RADIOBUTTON == nClassId) ? SERVICE_COMPONENT_GROUPBOX : SERVICE_COMPONENT_FIXEDTEXT; - m_aRequiredControlImage = (FormComponentType::RADIOBUTTON == nClassId) ? RID_EXTBMP_GROUPBOX : RID_EXTBMP_FIXEDTEXT; - - // calc the currently set label control (so InsertEntries can calc m_xInitialSelection) - Any aCurrentLabelControl( m_xControlModel->getPropertyValue(PROPERTY_CONTROLLABEL) ); - DBG_ASSERT((aCurrentLabelControl.getValueTypeClass() == TypeClass_INTERFACE) || !aCurrentLabelControl.hasValue(), - - "OSelectLabelDialog::OSelectLabelDialog : invalid ControlLabel property !"); - if (aCurrentLabelControl.hasValue()) - aCurrentLabelControl >>= m_xInitialLabelControl; - - // insert the root - OUString sRootName(PcrRes(RID_STR_FORMS)); - m_xControlTree->insert(nullptr, -1, &sRootName, nullptr, - nullptr, nullptr, false, m_xScratchIter.get()); - m_xControlTree->set_image(*m_xScratchIter, RID_EXTBMP_FORMS); - - // build the tree - m_xInitialSelection.reset(); - m_bHaveAssignableControl = false; - std::unique_ptr<weld::TreeIter> xRoot = m_xControlTree->make_iterator(); - m_xControlTree->get_iter_first(*xRoot); - InsertEntries(xSearch, *xRoot); - m_xControlTree->expand_row(*xRoot); } + m_sRequiredService = (FormComponentType::RADIOBUTTON == nClassId) + ? SERVICE_COMPONENT_GROUPBOX + : SERVICE_COMPONENT_FIXEDTEXT; + m_aRequiredControlImage = (FormComponentType::RADIOBUTTON == nClassId) + ? RID_EXTBMP_GROUPBOX + : RID_EXTBMP_FIXEDTEXT; + + // calc the currently set label control (so InsertEntries can calc m_xInitialSelection) + Any aCurrentLabelControl(m_xControlModel->getPropertyValue(PROPERTY_CONTROLLABEL)); + DBG_ASSERT((aCurrentLabelControl.getValueTypeClass() == TypeClass_INTERFACE) + || !aCurrentLabelControl.hasValue(), + + "OSelectLabelDialog::OSelectLabelDialog : invalid ControlLabel property !"); + if (aCurrentLabelControl.hasValue()) + aCurrentLabelControl >>= m_xInitialLabelControl; + + // insert the root + OUString sRootName(PcrRes(RID_STR_FORMS)); + m_xControlTree->insert(nullptr, -1, &sRootName, nullptr, nullptr, nullptr, false, + m_xScratchIter.get()); + m_xControlTree->set_image(*m_xScratchIter, RID_EXTBMP_FORMS); + + // build the tree + m_xInitialSelection.reset(); + m_bHaveAssignableControl = false; + std::unique_ptr<weld::TreeIter> xRoot = m_xControlTree->make_iterator(); + m_xControlTree->get_iter_first(*xRoot); + InsertEntries(xSearch, *xRoot); + m_xControlTree->expand_row(*xRoot); + } - if (m_xInitialSelection) - { - m_xControlTree->scroll_to_row(*m_xInitialSelection); - m_xControlTree->select(*m_xInitialSelection); - } - else - { - m_xControlTree->scroll_to_row(0); - m_xControlTree->unselect_all(); - m_xNoAssignment->set_active(true); - } + if (m_xInitialSelection) + { + m_xControlTree->scroll_to_row(*m_xInitialSelection); + m_xControlTree->select(*m_xInitialSelection); + } + else + { + m_xControlTree->scroll_to_row(0); + m_xControlTree->unselect_all(); + m_xNoAssignment->set_active(true); + } - if (!m_bHaveAssignableControl) - { // no controls which can be assigned - m_xNoAssignment->set_active(true); - m_xNoAssignment->set_sensitive(false); - } + if (!m_bHaveAssignableControl) + { // no controls which can be assigned + m_xNoAssignment->set_active(true); + m_xNoAssignment->set_sensitive(false); + } - m_xLastSelected = m_xControlTree->make_iterator(nullptr); + m_xLastSelected = m_xControlTree->make_iterator(nullptr); - m_xNoAssignment->connect_toggled(LINK(this, OSelectLabelDialog, OnNoAssignmentClicked)); - OnNoAssignmentClicked(*m_xNoAssignment); - } + m_xNoAssignment->connect_toggled(LINK(this, OSelectLabelDialog, OnNoAssignmentClicked)); + OnNoAssignmentClicked(*m_xNoAssignment); +} - OSelectLabelDialog::~OSelectLabelDialog() - { - } +OSelectLabelDialog::~OSelectLabelDialog() {} - sal_Int32 OSelectLabelDialog::InsertEntries(const Reference< XInterface > & _xContainer, const weld::TreeIter& rContainerEntry) +sal_Int32 OSelectLabelDialog::InsertEntries(const Reference<XInterface>& _xContainer, + const weld::TreeIter& rContainerEntry) +{ + Reference<XIndexAccess> xContainer(_xContainer, UNO_QUERY); + if (!xContainer.is()) + return 0; + + sal_Int32 nChildren = 0; + OUString sName; + Reference<XPropertySet> xAsSet; + for (sal_Int32 i = 0; i < xContainer->getCount(); ++i) { - Reference< XIndexAccess > xContainer(_xContainer, UNO_QUERY); - if (!xContainer.is()) - return 0; - - sal_Int32 nChildren = 0; - OUString sName; - Reference< XPropertySet > xAsSet; - for (sal_Int32 i=0; i<xContainer->getCount(); ++i) + xContainer->getByIndex(i) >>= xAsSet; + if (!xAsSet.is()) { - xContainer->getByIndex(i) >>= xAsSet; - if (!xAsSet.is()) - { - SAL_INFO("extensions.propctrlr", "OSelectLabelDialog::InsertEntries : strange : a form component which isn't a property set !"); - continue; - } + SAL_INFO("extensions.propctrlr", "OSelectLabelDialog::InsertEntries : strange : a form " + "component which isn't a property set !"); + continue; + } - if (!::comphelper::hasProperty(PROPERTY_NAME, xAsSet)) - // we need at least a name for displaying ... - continue; - sName = ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_NAME)); - - // we need to check if the control model supports the required service - Reference< XServiceInfo > xInfo(xAsSet, UNO_QUERY); - if (!xInfo.is()) - continue; - - if (!xInfo->supportsService(m_sRequiredService)) - { // perhaps it is a container - Reference< XIndexAccess > xCont(xAsSet, UNO_QUERY); - if (xCont.is() && xCont->getCount()) - { // yes -> step down - m_xControlTree->insert(&rContainerEntry, -1, &sName, nullptr, - nullptr, nullptr, false, m_xScratchIter.get()); - m_xControlTree->set_image(*m_xScratchIter, RID_EXTBMP_FORM); - auto xIter = m_xControlTree->make_iterator(&rContainerEntry); - m_xControlTree->iter_nth_child(*xIter, nChildren); - sal_Int32 nContChildren = InsertEntries(xCont, *xIter); - if (nContChildren) - { - m_xControlTree->expand_row(*xIter); - ++nChildren; - } - else - { // oops, no valid children -> remove the entry - m_xControlTree->remove(*xIter); - } + if (!::comphelper::hasProperty(PROPERTY_NAME, xAsSet)) + // we need at least a name for displaying ... + continue; + sName = ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_NAME)); + + // we need to check if the control model supports the required service + Reference<XServiceInfo> xInfo(xAsSet, UNO_QUERY); + if (!xInfo.is()) + continue; + + if (!xInfo->supportsService(m_sRequiredService)) + { // perhaps it is a container + Reference<XIndexAccess> xCont(xAsSet, UNO_QUERY); + if (xCont.is() && xCont->getCount()) + { // yes -> step down + m_xControlTree->insert(&rContainerEntry, -1, &sName, nullptr, nullptr, nullptr, + false, m_xScratchIter.get()); + m_xControlTree->set_image(*m_xScratchIter, RID_EXTBMP_FORM); + auto xIter = m_xControlTree->make_iterator(&rContainerEntry); + m_xControlTree->iter_nth_child(*xIter, nChildren); + sal_Int32 nContChildren = InsertEntries(xCont, *xIter); + if (nContChildren) + { + m_xControlTree->expand_row(*xIter); + ++nChildren; + } + else + { // oops, no valid children -> remove the entry + m_xControlTree->remove(*xIter); } - continue; } + continue; + } - // get the label - if (!::comphelper::hasProperty(PROPERTY_LABEL, xAsSet)) - continue; - - OUString sDisplayName = - ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_LABEL)) + - " (" + sName + ")"; + // get the label + if (!::comphelper::hasProperty(PROPERTY_LABEL, xAsSet)) + continue; - // all requirements met -> insert - m_xUserData.emplace_back(new Reference<XPropertySet>(xAsSet)); - OUString sId(weld::toId(m_xUserData.back().get())); - m_xControlTree->insert(&rContainerEntry, -1, &sDisplayName, &sId, nullptr, nullptr, false, m_xScratchIter.get()); - m_xControlTree->set_image(*m_xScratchIter, m_aRequiredControlImage); + OUString sDisplayName = ::comphelper::getString(xAsSet->getPropertyValue(PROPERTY_LABEL)) + + " (" + sName + ")"; - if (m_xInitialLabelControl == xAsSet) - { - m_xInitialSelection = m_xControlTree->make_iterator(&rContainerEntry); - m_xControlTree->iter_nth_child(*m_xInitialSelection, nChildren); - } + // all requirements met -> insert + m_xUserData.emplace_back(new Reference<XPropertySet>(xAsSet)); + OUString sId(weld::toId(m_xUserData.back().get())); + m_xControlTree->insert(&rContainerEntry, -1, &sDisplayName, &sId, nullptr, nullptr, false, + m_xScratchIter.get()); + m_xControlTree->set_image(*m_xScratchIter, m_aRequiredControlImage); - ++nChildren; - m_bHaveAssignableControl = true; + if (m_xInitialLabelControl == xAsSet) + { + m_xInitialSelection = m_xControlTree->make_iterator(&rContainerEntry); + m_xControlTree->iter_nth_child(*m_xInitialSelection, nChildren); } - return nChildren; + ++nChildren; + m_bHaveAssignableControl = true; } - IMPL_LINK(OSelectLabelDialog, OnEntrySelected, weld::TreeView&, rLB, void) + return nChildren; +} + +IMPL_LINK(OSelectLabelDialog, OnEntrySelected, weld::TreeView&, rLB, void) +{ + DBG_ASSERT(&rLB == m_xControlTree.get(), + "OSelectLabelDialog::OnEntrySelected : where did this come from ?"); + std::unique_ptr<weld::TreeIter> xIter = m_xControlTree->get_selected(); + OUString sData = xIter ? m_xControlTree->get_id(*xIter) : OUString(); + if (!sData.isEmpty()) + m_xSelectedControl.set(*weld::fromId<Reference<XPropertySet>*>(sData)); + m_xNoAssignment->set_active(sData.isEmpty()); +} + +IMPL_LINK(OSelectLabelDialog, OnNoAssignmentClicked, weld::Toggleable&, rButton, void) +{ + DBG_ASSERT(&rButton == m_xNoAssignment.get(), + "OSelectLabelDialog::OnNoAssignmentClicked : where did this come from ?"); + + if (m_xNoAssignment->get_active()) { - DBG_ASSERT(&rLB == m_xControlTree.get(), "OSelectLabelDialog::OnEntrySelected : where did this come from ?"); - std::unique_ptr<weld::TreeIter> xIter = m_xControlTree->get_selected(); - OUString sData = xIter ? m_xControlTree->get_id(*xIter) : OUString(); - if (!sData.isEmpty()) - m_xSelectedControl.set(*weld::fromId<Reference<XPropertySet>*>(sData)); - m_xNoAssignment->set_active(sData.isEmpty()); + std::unique_ptr<weld::TreeIter> pSelected = m_xControlTree->get_selected(); + m_bLastSelected = bool(pSelected); + if (pSelected) + m_xLastSelected = std::move(pSelected); } - - IMPL_LINK(OSelectLabelDialog, OnNoAssignmentClicked, weld::Toggleable&, rButton, void) + else { - DBG_ASSERT(&rButton == m_xNoAssignment.get(), "OSelectLabelDialog::OnNoAssignmentClicked : where did this come from ?"); - - if (m_xNoAssignment->get_active()) + DBG_ASSERT(m_bHaveAssignableControl, "OSelectLabelDialog::OnNoAssignmentClicked"); + // search the first assignable entry + auto xSearch = m_xControlTree->make_iterator(nullptr); + bool bSearch = m_xControlTree->get_iter_first(*xSearch); + while (bSearch) { - std::unique_ptr<weld::TreeIter> pSelected = m_xControlTree->get_selected(); - m_bLastSelected = bool(pSelected); - if (pSelected) - m_xLastSelected = std::move(pSelected); + if (m_xControlTree->get_id(*xSearch).toInt64()) + break; + bSearch = m_xControlTree->iter_next(*xSearch); } - else + // and select it + if (bSearch) { - DBG_ASSERT(m_bHaveAssignableControl, "OSelectLabelDialog::OnNoAssignmentClicked"); - // search the first assignable entry - auto xSearch = m_xControlTree->make_iterator(nullptr); - bool bSearch = m_xControlTree->get_iter_first(*xSearch); - while (bSearch) - { - if (m_xControlTree->get_id(*xSearch).toInt64()) - break; - bSearch = m_xControlTree->iter_next(*xSearch); - } - // and select it - if (bSearch) - { - m_xControlTree->copy_iterator(*xSearch, *m_xLastSelected); - m_xControlTree->select(*m_xLastSelected); - m_bLastSelected = true; - } - } - - if (m_bLastSelected) - { - if (!m_xNoAssignment->get_active()) - m_xControlTree->select(*m_xLastSelected); - else - m_xControlTree->unselect(*m_xLastSelected); + m_xControlTree->copy_iterator(*xSearch, *m_xLastSelected); + m_xControlTree->select(*m_xLastSelected); + m_bLastSelected = true; } } -} // namespace pcr + if (m_bLastSelected) + { + if (!m_xNoAssignment->get_active()) + m_xControlTree->select(*m_xLastSelected); + else + m_xControlTree->unselect(*m_xLastSelected); + } +} +} // namespace pcr /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/extensions/source/propctrlr/selectlabeldialog.hxx b/extensions/source/propctrlr/selectlabeldialog.hxx index 3aa693a6cf02..6a61fb9d0171 100644 --- a/extensions/source/propctrlr/selectlabeldialog.hxx +++ b/extensions/source/propctrlr/selectlabeldialog.hxx @@ -26,39 +26,45 @@ namespace pcr { - // OSelectLabelDialog - class OSelectLabelDialog final : public weld::GenericDialogController - { - css::uno::Reference< css::beans::XPropertySet > m_xControlModel; - OUString m_sRequiredService; - OUString m_aRequiredControlImage; - std::unique_ptr<weld::TreeIter> m_xInitialSelection; - // the entry data of the listbox entries - std::vector<std::unique_ptr<css::uno::Reference<css::beans::XPropertySet>>> m_xUserData; - css::uno::Reference< css::beans::XPropertySet > m_xInitialLabelControl; +// OSelectLabelDialog +class OSelectLabelDialog final : public weld::GenericDialogController +{ + css::uno::Reference<css::beans::XPropertySet> m_xControlModel; + OUString m_sRequiredService; + OUString m_aRequiredControlImage; + std::unique_ptr<weld::TreeIter> m_xInitialSelection; + // the entry data of the listbox entries + std::vector<std::unique_ptr<css::uno::Reference<css::beans::XPropertySet>>> m_xUserData; + css::uno::Reference<css::beans::XPropertySet> m_xInitialLabelControl; - css::uno::Reference< css::beans::XPropertySet > m_xSelectedControl; - std::unique_ptr<weld::TreeIter> m_xLastSelected; - bool m_bLastSelected; - bool m_bHaveAssignableControl; + css::uno::Reference<css::beans::XPropertySet> m_xSelectedControl; + std::unique_ptr<weld::TreeIter> m_xLastSelected; + bool m_bLastSelected; + bool m_bHaveAssignableControl; - std::unique_ptr<weld::Label> m_xMainDesc; - std::unique_ptr<weld::TreeView> m_xControlTree; - std::unique_ptr<weld::TreeIter> m_xScratchIter; - std::unique_ptr<weld::CheckButton> m_xNoAssignment; + std::unique_ptr<weld::Label> m_xMainDesc; + std::unique_ptr<weld::TreeView> m_xControlTree; + std::unique_ptr<weld::TreeIter> m_xScratchIter; + std::unique_ptr<weld::CheckButton> m_xNoAssignment; - public: - OSelectLabelDialog(weld::Window* pParent, css::uno::Reference< css::beans::XPropertySet > const & _xControlModel); - virtual ~OSelectLabelDialog() override; +public: + OSelectLabelDialog(weld::Window* pParent, + css::uno::Reference<css::beans::XPropertySet> const& _xControlModel); + virtual ~OSelectLabelDialog() override; - css::uno::Reference< css::beans::XPropertySet > GetSelected() const { return m_xNoAssignment->get_active() ? css::uno::Reference< css::beans::XPropertySet > () : m_xSelectedControl; } + css::uno::Reference<css::beans::XPropertySet> GetSelected() const + { + return m_xNoAssignment->get_active() ? css::uno::Reference<css::beans::XPropertySet>() + : m_xSelectedControl; + } - private: - sal_Int32 InsertEntries(const css::uno::Reference< css::uno::XInterface >& _xContainer, const weld::TreeIter& rContainerEntry); +private: + sal_Int32 InsertEntries(const css::uno::Reference<css::uno::XInterface>& _xContainer, + const weld::TreeIter& rContainerEntry); - DECL_LINK(OnEntrySelected, weld::TreeView&, void); - DECL_LINK(OnNoAssignmentClicked, weld::Toggleable&, void); - }; -} // namespace pcr + DECL_LINK(OnEntrySelected, weld::TreeView&, void); + DECL_LINK(OnNoAssignmentClicked, weld::Toggleable&, void); +}; +} // namespace pcr /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist index 6a4c3b928f4f..237644e85865 100644 --- a/solenv/clang-format/excludelist +++ b/solenv/clang-format/excludelist @@ -3552,8 +3552,6 @@ extensions/source/propctrlr/propeventtranslation.hxx extensions/source/propctrlr/proplinelistener.hxx extensions/source/propctrlr/pushbuttonnavigation.cxx extensions/source/propctrlr/pushbuttonnavigation.hxx -extensions/source/propctrlr/selectlabeldialog.cxx -extensions/source/propctrlr/selectlabeldialog.hxx extensions/source/propctrlr/sqlcommanddesign.cxx extensions/source/propctrlr/sqlcommanddesign.hxx extensions/source/propctrlr/standardcontrol.cxx commit 0e40ffbaebce231d432cdbbb6cb9e9fb867fb022 Author: Michael Weghorn <[email protected]> AuthorDate: Wed Feb 25 00:32:29 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Wed Feb 25 09:03:32 2026 +0100 tdf#130857 qt weld: Support .ui files used in "Properties: Text Box" dlg This means that native Qt widgets are used for that dialog now when using the qt5 or qt6 VCL plugin and starting LO with environment variable SAL_VCL_QT_USE_WELDED_WIDGETS=1 set. The dialog can be triggered like this: * start Writer * "Form" -> "Text Box" * click and drag mouse in the document to insert the text box * double-click on the inserted text box to open the properties dialog Previously, the top-level dialog was declared as supported but those 2 UI files used were not, resulting in an assert getting triggered: soffice.bin: /home/michi/development/git/libreoffice/vcl/qt6/../qt5/QtInstanceContainer.cxx:27: auto QtInstanceContainer::move(weld::Widget *, weld::Container *)::(anonymous class)::operator()() const: Assertion `pQtInstanceWidget' failed. Change-Id: I2c58100fd86a6a8875c6e2004fd49bc05ba918ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200275 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/vcl/qt5/QtInstanceBuilder.cxx b/vcl/qt5/QtInstanceBuilder.cxx index 4670c7f1327d..a247c1128ecc 100644 --- a/vcl/qt5/QtInstanceBuilder.cxx +++ b/vcl/qt5/QtInstanceBuilder.cxx @@ -353,9 +353,11 @@ constexpr auto SUPPORTED_WITH_QT_PARENT = frozen::make_unordered_set<std::u16str u"modules/smath/ui/printeroptions.ui", u"modules/spropctrlr/ui/browserline.ui", u"modules/spropctrlr/ui/browserpage.ui", + u"modules/spropctrlr/ui/colorlistbox.ui", u"modules/spropctrlr/ui/combobox.ui", u"modules/spropctrlr/ui/formproperties.ui", u"modules/spropctrlr/ui/listbox.ui", + u"modules/spropctrlr/ui/multiline.ui", u"modules/spropctrlr/ui/numericfield.ui", u"modules/spropctrlr/ui/textfield.ui", u"modules/spropctrlr/ui/urlcontrol.ui", commit 2dbed928c771dd8a8280164e8c21b476c66bded1 Author: Michael Weghorn <[email protected]> AuthorDate: Wed Feb 25 00:18:15 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Wed Feb 25 09:03:24 2026 +0100 spropctrlr: Resave multiline.ui with glade 3.40 This .ui file gets used in the dialog that can be triggered like this: * start Writer * "Form" -> "Text Box" * click and drag mouse in the document to insert the text box * double-click on the inserted text box to open the properties dialog Change-Id: I1a66e5479f06faa855d1c174c13968a424b89c17 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/200274 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/extensions/uiconfig/spropctrlr/ui/multiline.ui b/extensions/uiconfig/spropctrlr/ui/multiline.ui index 9304d21cc4a6..dbe860a0bcd1 100644 --- a/extensions/uiconfig/spropctrlr/ui/multiline.ui +++ b/extensions/uiconfig/spropctrlr/ui/multiline.ui @@ -1,27 +1,62 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="pcr"> <requires lib="gtk+" version="3.24"/> + <object class="GtkBox" id="multiline"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="hexpand">True</property> + <property name="spacing">6</property> + <child> + <object class="GtkEntry" id="entry"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="hexpand">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkMenuButton" id="button"> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="tooltip-text" translatable="yes" context="multiline|tooltip">Multiline Editing</property> + <property name="draw-indicator">True</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> <object class="GtkPopover" id="popover"> - <property name="can_focus">False</property> - <property name="no_show_all">True</property> + <property name="can-focus">False</property> + <property name="no-show-all">True</property> <property name="constrain-to">none</property> <child> <object class="GtkBox" id="container"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkScrolledWindow" id="textviewscroll"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="shadow_type">in</property> + <property name="can-focus">True</property> + <property name="shadow-type">in</property> <child> <object class="GtkTextView" id="textview"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="wrap_mode">word</property> + <property name="can-focus">True</property> + <property name="wrap-mode">word</property> </object> </child> </object> @@ -35,8 +70,8 @@ <object class="GtkButton" id="ok"> <property name="label" translatable="yes" context="stock">_OK</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="use-underline">True</property> </object> <packing> @@ -48,40 +83,4 @@ </object> </child> </object> - <object class="GtkBox" id="multiline"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="spacing">6</property> - <child> - <object class="GtkEntry" id="entry"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="hexpand">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkMenuButton" id="button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="tooltip_text" translatable="yes" context="multiline|tooltip">Multiline Editing</property> - <property name="draw_indicator">True</property> - <property name="label" translatable="no"></property> - <child> - <placeholder/> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> </interface>
