summaryrefslogtreecommitdiff
path: root/reportdesign
AgeCommit message (Collapse)Author
2024-10-01use more concrete UNO types in reportdesignNoel Grandin
Change-Id: Ic5d773bc063629b13293ff875cb5c894373e7d08 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174317 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-10-01use more concrete UNO types in reportdesignNoel Grandin
Change-Id: I29b3b85f8ff71d66ca874434d5412145e5cfb731 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174316 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-01use more concrete UNO types in reportdesignNoel Grandin
Change-Id: I30e391c1d5166ad24e129a20db1d7403644f8791 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174315 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-01cid#1608000 Data race conditionNoel Grandin
just remove the mutex, this class is only ever accessed from one thread Change-Id: I7c088c0cb33d21513a5566ae65f663877d829072 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174291 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-01cid#1608069 Data race conditionNoel Grandin
just remove the mutex, this class is only ever accessed from one thread Change-Id: Ie2b42a6a141676ee4cb14549d44f15fd55194aaf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174289 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-23reportdesign: Use NC_ to create a TranslateIdMichael Weghorn
I don't see any reason for handling `RID_STR_EXPLANATION` differently than all other translatable strings here. Change-Id: Ica678557124f4daf48c3759fe3640fe95a2bc8ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173810 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-09-20use more concrete UNO types in variousNoel Grandin
Change-Id: Ia28cffdeae8ced2e19dcf695ee5c3417d4f97d64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173698 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-16use more concrete UNO types in reportdesignNoel Grandin
Change-Id: I688cbfe44cebd95e2321d3b75a2ee397cc4aa4f8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173410 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-09tsan:lock-order-inversion in formsNoel Grandin
================== WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=14614) Cycle in lock order graph: M0 (0x720c004ac190) => M1 (0x720c004a8200) => M0 Mutex M1 acquired here while holding mutex M0 in thread T43: 2 osl::Mutex::acquire() /home/noel/libo-tsan/include/osl/mutex.hxx:63 (libuno_cppuhelpergcc3.so.3+0x8fdd9) 3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) /home/noel/libo-tsan/include/osl/mutex.hxx:144 (libuno_cppuhelpergcc3.so.3+0x8fdd9) 4 cppu::OBroadcastHelperVar<cppu::OMultiTypeInterfaceContainerHelper, com::sun::star::uno::Type>::addListener(com::sun::star::uno::Type const&, com::sun::star::uno::Reference<com::sun::star::uno::XInterface> const&) /home/noel/libo-tsan/include/cppuhelper/interfacecontainer.h:468 (libuno_cppuhelpergcc3.so.3+0x8fdd9) 5 cppu::OPropertySetHelper::addPropertiesChangeListener(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertiesChangeListener> const&) /home/noel/libo-tsan/cppuhelper/source/propshlp.cxx:912 (libuno_cppuhelpergcc3.so.3+0x8fdd9) 6 comphelper::OPropertySetAggregationHelper::addPropertiesChangeListener(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertiesChangeListener> const&) /home/noel/libo-tsan/comphelper/source/property/propagg.cxx:495 (libcomphelper.so+0x1a1865) 7 comphelper::OPropertySetAggregationHelper::startListening() /home/noel/libo-tsan/comphelper/source/property/propagg.cxx:466 (libcomphelper.so+0x1a1416) ^^^ Mutex M0 previously acquired by the same thread here: 8 comphelper::OPropertySetAggregationHelper::addPropertyChangeListener(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertyChangeListener> const&) /home/noel/libo-tsan/comphelper/source/property/propagg.cxx:488 (libcomphelper.so+0x1a181a) 9 non-virtual thunk to comphelper::OPropertySetAggregationHelper::addPropertyChangeListener(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertyChangeListener> const&) /home/noel/libo-tsan/comphelper/source/property/propagg.cxx:? (libcomphelper.so+0x1a181a) 10 frm::OInterfaceContainer::implInsert(int, com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> const&, bool, frm::ElementDescription*, bool) /home/noel/libo-tsan/forms/source/misc/InterfaceContainer.cxx:787 (libfrmlo.so+0x23e03c) 11 frm::OInterfaceContainer::insertByIndex(int, com::sun::star::uno::Any const&) /home/noel/libo-tsan/forms/source/misc/InterfaceContainer.cxx:904 (libfrmlo.so+0x240644) 12 non-virtual thunk to frm::OInterfaceContainer::insertByIndex(int, com::sun::star::uno::Any const&) /home/noel/libo-tsan/forms/source/misc/InterfaceContainer.cxx:? (libfrmlo.so+0x240716) 13 FmXUndoEnvironment::Inserted(FmFormObj*) /home/noel/libo-tsan/svx/source/form/fmundo.cxx:424 (libsvxcorelo.so+0x41b2a4) 14 FmXUndoEnvironment::Inserted(SdrObject*) /home/noel/libo-tsan/svx/source/form/fmundo.cxx:336 (libsvxcorelo.so+0x41a982) 15 FmXUndoEnvironment::Notify(SfxBroadcaster&, SfxHint const&) /home/noel/libo-tsan/svx/source/form/fmundo.cxx:292 (libsvxcorelo.so+0x41a8a0) 16 non-virtual thunk to FmXUndoEnvironment::Notify(SfxBroadcaster&, SfxHint const&) /home/noel/libo-tsan/svx/source/form/fmundo.cxx:? (libsvxcorelo.so+0x41acd2) 17 SfxBroadcaster::Broadcast(SfxHint const&) /home/noel/libo-tsan/svl/source/notify/SfxBroadcaster.cxx:40 (libsvllo.so+0xe7c3d) 18 SdrObjList::InsertObject(SdrObject*, unsigned long) /home/noel/libo-tsan/svx/source/svdraw/svdpage.cxx:351 (libsvxcorelo.so+0x6fdf3a) 19 FmFormPage::InsertObject(SdrObject*, unsigned long) /home/noel/libo-tsan/svx/source/form/fmpage.cxx:79 (libsvxcorelo.so+0x3c1e05) 20 SvxDrawPage::add(com::sun::star::uno::Reference<com::sun::star::drawing::XShape> const&) /home/noel/libo-tsan/svx/source/unodraw/unopage.cxx:191 (libsvxcorelo.so+0x850c7b) 21 SwFmDrawPage::add(com::sun::star::uno::Reference<com::sun::star::drawing::XShape> const&) /home/noel/libo-tsan/sw/source/core/unocore/unodraw.cxx:649 (libswlo.so+0xc30712) 22 non-virtual thunk to SwFmDrawPage::add(com::sun::star::uno::Reference<com::sun::star::drawing::XShape> const&) /home/noel/libo-tsan/sw/source/core/unocore/unodraw.cxx:? (libswlo.so+0xc31732) 23 gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) /home/noel/libo-tsan/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:87 (libgcc3_uno.so+0xd92a) 24 cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, _typelib_MethodParameter*, void*, void**, _uno_Any**) /home/noel/libo-tsan/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:229 (libgcc3_uno.so+0xcc3c) 25 unoInterfaceProxyDispatch /home/noel/libo-tsan/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:409 (libgcc3_uno.so+0xc1f6) Mutex M0 acquired here while holding mutex M1 in thread T44: 3 osl::Guard<osl::Mutex>::Guard(osl::Mutex&) /home/noel/libo-tsan/include/osl/mutex.hxx:144 (libcomphelper.so+0x1bde34) 4 comphelper::OPropertyChangeListener::setAdapter(comphelper::OPropertyChangeMultiplexer*) /home/noel/libo-tsan/comphelper/source/property/propmultiplex.cxx:58 (libcomphelper.so+0x1bde34) 5 comphelper::OPropertyChangeMultiplexer::disposing(com::sun::star::lang::EventObject const&) /home/noel/libo-tsan/comphelper/source/property/propmultiplex.cxx:120 (libcomphelper.so+0x1bde34) 6 non-virtual thunk to comphelper::OPropertyChangeMultiplexer::disposing(com::sun::star::lang::EventObject const&) /home/noel/libo-tsan/comphelper/source/property/propmultiplex.cxx:? (libcomphelper.so+0x1bdf12) 7 cppu::OInterfaceContainerHelper::disposeAndClear(com::sun::star::lang::EventObject const&) /home/noel/libo-tsan/cppuhelper/source/interfacecontainer.cxx:272 (libuno_cppuhelpergcc3.so.3+0x66524) 8 cppu::OMultiTypeInterfaceContainerHelperInt32::disposeAndClear(com::sun::star::lang::EventObject const&) /home/noel/libo-tsan/cppuhelper/source/interfacecontainer.cxx:577 (libuno_cppuhelpergcc3.so.3+0x68af0) 9 cppu::OPropertySetHelper::disposing() /home/noel/libo-tsan/cppuhelper/source/propshlp.cxx:246 (libuno_cppuhelpergcc3.so.3+0x8be45) 10 comphelper::OPropertySetAggregationHelper::disposing() /home/noel/libo-tsan/comphelper/source/property/propagg.cxx:366 (libcomphelper.so+0x1a0321) ^^^ Mutex M1 previously acquired by the same thread here: 11 frm::OControlModel::disposing() /home/noel/libo-tsan/forms/source/component/FormComponent.cxx:705 (libfrmlo.so+0x19eecc) 12 frm::ORichTextModel::disposing() /home/noel/libo-tsan/forms/source/richtext/richtextmodel.cxx:295 (libfrmlo.so+0x267bdb) 13 cppu::OComponentHelper::dispose() /home/noel/libo-tsan/cppuhelper/source/component.cxx:159 (libuno_cppuhelpergcc3.so.3+0x4504f) 14 non-virtual thunk to cppu::OComponentHelper::dispose() /home/noel/libo-tsan/cppuhelper/source/component.cxx:? (libuno_cppuhelpergcc3.so.3+0x45379) 15 frm::OControlModel::disposing() /home/noel/libo-tsan/forms/source/component/FormComponent.cxx:708 (libfrmlo.so+0x19ef13) 16 frm::OBoundControlModel::disposing() /home/noel/libo-tsan/forms/source/component/FormComponent.cxx:1340 (libfrmlo.so+0x1a507f) 17 frm::OEditModel::disposing() /home/noel/libo-tsan/forms/source/component/Edit.cxx:301 (libfrmlo.so+0x161208) 18 cppu::OComponentHelper::dispose() /home/noel/libo-tsan/cppuhelper/source/component.cxx:159 (libuno_cppuhelpergcc3.so.3+0x4504f) 19 non-virtual thunk to cppu::OComponentHelper::dispose() /home/noel/libo-tsan/cppuhelper/source/component.cxx:? (libuno_cppuhelpergcc3.so.3+0x45379) 20 SdrUnoObj::~SdrUnoObj() /home/noel/libo-tsan/svx/source/svdraw/svdouno.cxx:214 (libsvxcorelo.so+0x6f471b) 21 FmFormObj::~FmFormObj() /home/noel/libo-tsan/svx/source/form/fmobj.cxx:119 (libsvxcorelo.so+0x3bd8cf) 22 FmFormObj::~FmFormObj() /home/noel/libo-tsan/svx/source/form/fmobj.cxx:112 (libsvxcorelo.so+0x3bd985) 23 SdrObject::release() /home/noel/libo-tsan/svx/source/svdraw/svdobj.cxx:486 (libsvxcorelo.so+0x6634df) 24 rtl::Reference<SdrObject>::~Reference() /home/noel/libo-tsan/include/rtl/ref.hxx:126 (libsvxcorelo.so+0x61610d) 25 void std::destroy_at<rtl::Reference<SdrObject> >(rtl::Reference<SdrObject>*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:88 (libsvxcorelo.so+0x61610d) 26 void std::_Destroy<rtl::Reference<SdrObject> >(rtl::Reference<SdrObject>*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:149 (libsvxcorelo.so+0x61610d) 27 void std::_Destroy_aux<false>::__destroy<rtl::Reference<SdrObject>*>(rtl::Reference<SdrObject>*, rtl::Reference<SdrObject>*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:163 (libsvxcorelo.so+0x61610d) 28 void std::_Destroy<rtl::Reference<SdrObject>*>(rtl::Reference<SdrObject>*, rtl::Reference<SdrObject>*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:195 (libsvxcorelo.so+0x61610d) 29 void std::_Destroy<rtl::Reference<SdrObject>*, rtl::Reference<SdrObject> >(rtl::Reference<SdrObject>*, rtl::Reference<SdrObject>*, std::allocator<rtl::Reference<SdrObject> >&) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/alloc_traits.h:948 (libsvxcorelo.so+0x61610d) 30 std::vector<rtl::Reference<SdrObject>, std::allocator<rtl::Reference<SdrObject> > >::~vector() /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_vector.h:735 (libsvxcorelo.so+0x61610d) 31 SdrModel::ClearModel(bool) /home/noel/libo-tsan/svx/source/svdraw/svdmodel.cxx:623 (libsvxcorelo.so+0x61610d) 32 SwDrawModel::~SwDrawModel() /home/noel/libo-tsan/sw/source/core/draw/drawdoc.cxx:108 (libswlo.so+0x714650) 33 std::default_delete<SwDrawModel>::operator()(SwDrawModel*) const /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/unique_ptr.h:99 (libswlo.so+0x5a3082) 34 std::__uniq_ptr_impl<SwDrawModel, std::default_delete<SwDrawModel> >::reset(SwDrawModel*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/unique_ptr.h:211 (libswlo.so+0x5a3082) 35 std::unique_ptr<SwDrawModel, std::default_delete<SwDrawModel> >::reset(SwDrawModel*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/unique_ptr.h:509 (libswlo.so+0x5a3082) 36 sw::DocumentDrawModelManager::ReleaseDrawModel() /home/noel/libo-tsan/sw/source/core/doc/DocumentDrawModelManager.cxx:162 (libswlo.so+0x5a3082) 37 SwDoc::~SwDoc() /home/noel/libo-tsan/sw/source/core/doc/docnew.cxx:585 (libswlo.so+0x5457c8) 38 SwDoc::release() /home/noel/libo-tsan/sw/source/core/doc/doc.cxx:129 (libswlo.so+0x4b8993) 39 rtl::Reference<SwDoc>::clear() /home/noel/libo-tsan/include/rtl/ref.hxx:193 (libswlo.so+0x104c301) 40 SwDocShell::RemoveLink() /home/noel/libo-tsan/sw/source/uibase/app/docshini.cxx:444 (libswlo.so+0x104c301) 41 SwDocShell::~SwDocShell() /home/noel/libo-tsan/sw/source/uibase/app/docshini.cxx:372 (libswlo.so+0x104bf36) 42 SwDocShell::~SwDocShell() /home/noel/libo-tsan/sw/source/uibase/app/docshini.cxx:362 (libswlo.so+0x104c469) 43 non-virtual thunk to SwDocShell::~SwDocShell() /home/noel/libo-tsan/sw/source/uibase/app/docshini.cxx:? (libswlo.so+0x104c469) 44 cppu::OWeakObject::release() /home/noel/libo-tsan/cppuhelper/source/weak.cxx:230 (libuno_cppuhelpergcc3.so.3+0x105ae7) 45 rtl::Reference<SfxObjectShell>::~Reference() /home/noel/libo-tsan/include/rtl/ref.hxx:126 (libsfxlo.so+0x5209e5) 46 IMPL_SfxBaseModel_DataContainer::~IMPL_SfxBaseModel_DataContainer() /home/noel/libo-tsan/sfx2/source/doc/sfxbasemodel.cxx:265 (libsfxlo.so+0x5209e5) 47 void std::destroy_at<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:88 (libsfxlo.so+0x51f4e6) 48 void std::_Destroy<IMPL_SfxBaseModel_DataContainer>(IMPL_SfxBaseModel_DataContainer*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_construct.h:149 (libsfxlo.so+0x51f4e6) 49 void std::allocator_traits<std::allocator<void> >::destroy<IMPL_SfxBaseModel_DataContainer>(std::allocator<void>&, IMPL_SfxBaseModel_DataContainer*) /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/alloc_traits.h:675 (libsfxlo.so+0x51f4e6) 50 std::_Sp_counted_ptr_inplace<IMPL_SfxBaseModel_DataContainer, std::allocator<void>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:613 (libsfxlo.so+0x51f4e6) 51 SfxBaseModel::dispose() /usr/lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/shared_ptr_base.h:175 (libsfxlo.so+0x4e7c7c) 52 SwXTextDocument::dispose() /home/noel/libo-tsan/sw/source/uibase/uno/unotxdoc.cxx:562 (libswlo.so+0x13896e1) 53 SfxBaseModel::close(unsigned char) /home/noel/libo-tsan/sfx2/source/doc/sfxbasemodel.cxx:1526 (libsfxlo.so+0x4eed16) 54 SwXTextDocument::close(unsigned char) /home/noel/libo-tsan/sw/source/uibase/uno/unotxdoc.cxx:575 (libswlo.so+0x138999c) 55 non-virtual thunk to SwXTextDocument::close(unsigned char) /home/noel/libo-tsan/sw/source/uibase/uno/unotxdoc.cxx:? (libswlo.so+0x1389ad3) 56 gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, double*) /home/noel/libo-tsan/bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:87 (libgcc3_uno.so+0xd92a) Change-Id: Ie16fc0ff7462632a591a46025a38344006d43c30 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173068 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-03use less dynamic_cast when broadcasting SfxHintNoel Grandin
Change-Id: I24c947c20afeffffebe5ac794108c4ccecb680f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172828 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-09-01cid#1607430 Overflowed integer argumentCaolán McNamara
and cid#1606956 Overflowed integer argument Change-Id: Ie940530f1538a36ab995407bc0fe01386cd10367 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172715 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-15merge CntUnencodedStringItem into SfxStringItemNoel Grandin
which simplifies the hierarhcy. We never allocate such a thing, we always allocate subclasses, and it has no real meaning by itself. Change-Id: Ie6b716c9ea6ca0efe0ae4f39ac345608c45534f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171890 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-08-11cid#1558088 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1558080 COPY_INSTEAD_OF_MOVE cid#1558077 COPY_INSTEAD_OF_MOVE cid#1558055 COPY_INSTEAD_OF_MOVE cid#1558043 COPY_INSTEAD_OF_MOVE cid#1558039 COPY_INSTEAD_OF_MOVE cid#1558015 COPY_INSTEAD_OF_MOVE cid#1558014 COPY_INSTEAD_OF_MOVE cid#1558009 COPY_INSTEAD_OF_MOVE cid#1558002 COPY_INSTEAD_OF_MOVE cid#1557998 COPY_INSTEAD_OF_MOVE cid#1557996 COPY_INSTEAD_OF_MOVE cid#1557990 COPY_INSTEAD_OF_MOVE cid#1557986 COPY_INSTEAD_OF_MOVE cid#1557980 COPY_INSTEAD_OF_MOVE cid#1557971 COPY_INSTEAD_OF_MOVE cid#1557968 COPY_INSTEAD_OF_MOVE cid#1557967 COPY_INSTEAD_OF_MOVE cid#1557961 COPY_INSTEAD_OF_MOVE cid#1557959 COPY_INSTEAD_OF_MOVE cid#1557958 COPY_INSTEAD_OF_MOVE cid#1557956 COPY_INSTEAD_OF_MOVE cid#1557953 COPY_INSTEAD_OF_MOVE cid#1557949 COPY_INSTEAD_OF_MOVE cid#1557947 COPY_INSTEAD_OF_MOVE cid#1557940 COPY_INSTEAD_OF_MOVE cid#1557931 COPY_INSTEAD_OF_MOVE cid#1557930 COPY_INSTEAD_OF_MOVE cid#1557915 COPY_INSTEAD_OF_MOVE cid#1557913 COPY_INSTEAD_OF_MOVE cid#1557910 COPY_INSTEAD_OF_MOVE cid#1557886 COPY_INSTEAD_OF_MOVE cid#1557884 COPY_INSTEAD_OF_MOVE cid#1557880 COPY_INSTEAD_OF_MOVE cid#1557875 COPY_INSTEAD_OF_MOVE cid#1557871 COPY_INSTEAD_OF_MOVE cid#1557862 COPY_INSTEAD_OF_MOVE cid#1557847 COPY_INSTEAD_OF_MOVE cid#1557845 COPY_INSTEAD_OF_MOVE cid#1557844 COPY_INSTEAD_OF_MOVE cid#1557843 COPY_INSTEAD_OF_MOVE cid#1557838 COPY_INSTEAD_OF_MOVE cid#1557835 COPY_INSTEAD_OF_MOVE cid#1557834 COPY_INSTEAD_OF_MOVE cid#1557828 COPY_INSTEAD_OF_MOVE cid#1557823 COPY_INSTEAD_OF_MOVE cid#1557817 COPY_INSTEAD_OF_MOVE cid#1557813 COPY_INSTEAD_OF_MOVE cid#1557812 COPY_INSTEAD_OF_MOVE Change-Id: I55d4a920daa2d148683419169eb828325fd3c757 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171732 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-07-31reduce number of GetItem callsNoel Grandin
if we already call GetItemState, we can use that call to fetch the item Change-Id: I736dec9bb56ad3bd66bb53e1cef2cf1e3092821d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171269 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-30tdf#161846 remove one layout operations (iii)Noel Grandin
of the 6 we perform per caption Change-Id: I5afbc296a9be4fcb732cfbe28d43a2ad45aa6c9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171172 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-07-29tdf#161846 use unordered_map in SfxItemPropertyMapNoel Grandin
with large property maps, even a binary search starts showing up, but we can do a O(1) search here by using a map Change-Id: Ie7916076073e6dd393f0a1fb5a0db1b973999408 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171173 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-07-27Related: tdf#159343 Handle TableRef separator in brackets for Function WizardEike Rathke
... not breaking to next argument of a function parameter. Change-Id: Ibc7a64c4ea64c415098a213f0ff3d96b8a9dd73c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171085 Tested-by: Jenkins Reviewed-by: Eike Rathke <erack@redhat.com>
2024-07-11Unify/Port to use VCLUnoHelper for AWT <-> VCL conversionsMichael Weghorn
Following Change-Id: Id48f81deb05aee2026509037f7d14575735e5be0 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Jul 10 14:49:03 2024 +0200 VCLUnoHelper: Align AWT <-> VCL helpers with convert.hxx impl , port all uses of the helper functions defined in `include/toolkit/helper/convert.hxx` to use the `VCLUnoHelper` equivalents instead, to unify usage and avoid duplication. Drop `include/toolkit/helper/convert.hxx` now that it's unused. Change-Id: I22695a93e40e47bb2b14d191a2e0a4eb7c856895 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170317 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-07-09Simplify comphelper::query_aggregationMike Kaganski
Change-Id: Id673c27e21c6706367f2effc92bbea61c83a5482 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170133 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-06-27Resave with newer Glade versionBogdan Buzea
Change-Id: I258621ed37dd79e1254ebaa98a76964be6a98c38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169403 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2024-05-30AreObjectsMarked -> GetMarkedObjectList().GetMarkCount() != 0Xisco Fauli
In order to reduce number of calls to GetMarkedObjectList() later on Change-Id: Ib2eb7c88338e64744f886a338acca65f782f8170 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168218 Tested-by: Jenkins Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-29SortMarkedObjects() -> GetMarkedObjectList().ForceSort()Xisco Fauli
In order to reduce number of calls to GetMarkedObjectList() later on Change-Id: Ia74949a47308f95607881a7d44c8c26404902745 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168217 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-29GetMarkedObjectCount() -> GetMarkedObjectList().GetMarkCount()Xisco Fauli
In order to reduce number of calls to GetMarkedObjectList() later on Change-Id: Id94f66545950f0fdf124ba7b985a5215a01d63fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168213 Tested-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-29svx: GetSdrMarkByIndex -> GetMarkedObjectList().GetMarkXisco Fauli
In order to reduce number of calls to GetMarkedObjectList() later on Change-Id: Iec0ad9ed33329719116e39232f86d92dbd6e0da8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168211 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-05-11replace createFromAscii with OUString literals in OConfigurationNodeNoel Grandin
Change-Id: I19017bc993f0adafdae32313e0e01e69e1bbe80b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167517 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-10loplugin:ostr in reportdesignNoel Grandin
Change-Id: I49d112d1a068ff265aa2242e62f53919f43fa15c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167436 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-08WaE: C6011 Dereferencing NULL pointer warningsCaolán McNamara
Change-Id: Ia64d863baa72a2d32a8bee40968af4f6aacd88bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167332 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-05-06svx: prefix members of SdrUndoActionMiklos Vajna
See tdf#94879 for motivation. Change-Id: Ieca2f1d0a8b781a908e3b4bd7fd7698305248a60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167181 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-04-10simplify OGenericUnoController initNoel Grandin
Change-Id: I9053e8f320b140bbb6907daac61939258245ff7f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165913 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-09tdf#146619 Drop unused 'using namespace' in: reportdesign/Gabor Kelemen
Change-Id: Iaf246112014d5b5da751570ca55a179232a1e9d4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165692 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-04-08tdf#50998 tdf#87892 Add sinusoid shapeRMZeroFour
In response to #50998 (as well as #87892 indirectly), regarding adding sinusoidal and coil-like shapes to the shape gallery in LibreOffice, this commit adds a sinusoid shape to the gallery. The shape is still incomplete for release, at least lacking icons for the sidebar. Further details posted on the Bugzilla thread for issue #50998. PS-2: Removed the previously added flag shape. PS-4: Moved sinusoid to the end in a new subgroup. Change-Id: Ie0f6e3948b6dce98dc2b4f87289cfd37f2d16911 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165353 Tested-by: Jenkins Reviewed-by: Regina Henschel <rb.henschel@t-online.de> Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2024-03-29use std::mutex in StatusbarControllerNoel Grandin
remove some locking in reportdesign::OStatusbarController - those places are already locking using the solar mutex Change-Id: I76d8e3a7ad60e4a2be1f0aac42967553356e9202 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165548 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-13reduce symbol visibility in --enable-mergelibs=more modeNoel Grandin
Change-Id: If811c9ec336543227db73c990248b9113846cf2f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164657 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-22UBSan RTTI fixesNoel Grandin
after I missed a bunch of stuff when testing UBSan with commit 3ba92b5f1eaf7d4447a0943ea260db515ca799dc hide more symbols Change-Id: I0743a0c0c6abcb2904face8386e26153ae3229a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163718 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-19ITEM: Speedup SlotIDToWhichID translationsArmin Le Grand (allotropia)
With ItemInfoPackages we now can have a buffered, static global translation table from SlotIDs to WhichIDs since the ItemInfoStatic used already contains all the needed information. Register that in registerItemInfoPackage at the Pool and use it for lookup. That speeds up the lookup from O(n) to O(1). Since that lookup is used in UI and UNO API implementations this has positive effect on load/safe, but also all interactive stuff in the whole office. NOTE: I tried to use a merged version of that translation table in the parent pool, but this shows double SlotIDs, what is no wonder since that's what those are used for: To get different WhichIDs for a SlotID in Item handling. This *might* prevent getting rid of the chanined Pools at all - sadly. The returned WhichID directly depends on which Pool the function(s) GetWhichIDFromSlotID and GetTrueWhichIDFromSlotID are called. NOTE: Very strange is that the parameter 'bDeep' in that functions is *not* passed down to the call to the secondary Pool - probably an error, but risky to fix, that may change already the behaviour :-( Change-Id: Iea77ffad0f6a5401ab74fea0bbfc2589c66680ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163597 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-02-19hide more symbolsNoel Grandin
using the bin/find-can-be-private-symbols.py script to find classes with large numbers of exported symbols that can hidden. before exported = 58104 imported = 30810 unused_exports = 35433 after exported = 55094 imported = 31073 unused_exports = 32423 Change-Id: Idd0a70ee3740afd5ca1a86771e0e2ff8090d102d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163456 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-12ITEM: ItemPool Rework (I)Armin Le Grand (allotropia)
Driving forward the Item reworks I now take the ItemPool in focus: It now does not hold any items anymore and should be renamed to something like ItemInfoProvider/ItemHelper, since it's main purpose is to provide the Defaults for the Item functionality. There is that SfxItemInfo, only a struct and bundling SlotID and ItemFlags. There are also the DefaultItems, just handled as ptrs in an array. It is/was always error-prone to keep these in sync. Remember that it's also necessary for the order to not only being sorted but being increments of one with no gaps allowed in the WhichIDs to which the Items are bound. I now bundled that to a new class ItemInfo that joins WhichID, SlotID, ItemFlags and the default Item. This is a pure virtual base class, it comes in three derivations: (1) ItemInfoStatic: This is supposed to be global static and hosts the Item in a std::unique_ptr to ensure cleanup. It is designed to be constructed once during runtime and being shared globally. It allows the ItemPtr to be nullptr to mark as non-static (if initial static is not possible for some reason) but still offers the needed data. Most cases (95%+) are of that case. The contained Item is owned by that instance. The flag isStaticDefault() is set at the Item. (2) ItemInfoDynamic: This is supposed to be used for cases where the Item cannot be static: Mainly for SfxSetItem (that needs a Pool itself in the contained SfxItemSet, so lifetime is bound to that Pool), but other cases showed up in the transition. These instances live while the Pool lives and get destructed when the Pool goes down. Also uses std::unique_ptr for the Item instance for as much automated cleanup as possible, the contained Item is owned by that instance, the instance by the Pool. The flag isDynamicDefault() is set at the Item. (3) ItemInfoUser: This is used for UserDefaults that can be set for every ItemInfo entry to 'overshadow' the default from the 'outside'. It uses a regular Item and the central access methods implCreateItemEntry/ implCleanupItemEntry to manage the Item instance, thus works like a SfxPoolItemHolder. The Item instance can be globally shared and re-used even when the Pool goes down. Instances belong to the Pool and are cleaned up when the Pool goes down. This Item does not need any further flag to be set. The ItemInfos are organized using a class called ItemInfoPackage: This bundles groups of ItemInfoStatic to functional instances. There are derivations/ implementations of this e.g. for Writer ItemPool bundling all the needed defaults for Writer, similar for draw/impress, Calc and other usages. These ItemInfoPackage can be 'registered' at an ItemPool using it's method registerItemInfoPackage. This does all the needed stuff to setup that group of ItemInfos at the Pool (It even sets internal vars First/LastWhich, that info can just be derived from the buildup ItemInfo Ptrs). The ItemInfoPackage has methods 'size()' and 'getItemInfo(index) to allow looping over it and deliver the infos the Pool needs. The (forced, pure virtual) overloads of getItemInfo in the specific implementations check for the ItemPtr being nullptr and create a exclusive incarnation of ItemInfoDynamic for the Pool if needed, returning that. The Pool owns the ItemInfoDynamic incarnations and uses the ItemInfoStatic directly. On shutdown it cleans up the ItemInfoDynamic as needed. The ItemInfoUser is used by the Pool when a UserDefault is set/used: for SetUserDefaultItem, GetUserDefaultItem, ResetUserDefaultItem. It is not held in a 2nd list, but directly in the list of ItemInfo'ptrs: To keep track of this an unordered_map is used that helds the original ItemInfo associated with the WhichID. That way no two lookups (as before) are needed to get the current Pool's default for any WhichID. The derivations of ItemInfoPackage are encapsulated and just allow access to an ItemInfoPackage& with a single method as return value. All use a static local instance of a std::array<ItemInfoStatic, FIXED_SIZE> which constructs all ItemInfoStatic and the static Item instances - if already possible. Sometimes it is necessary to overload the constructor to set some static instances for Items later than the lib init. These are also just marked with nullptr as Item instance. Some need to overload getItemInfo to complete instances of ItemInfoStatic, if needed, or create and deliver instances of ItemInfoDynamic. The registerItemInfoPackage also offers a optional lambda callback: there were two cases where local data from the Pool was needed to incarnate the item - just add that to the call to registerItemInfoPackage if needed, see examples in the adapted code. For the re-use of Items this means that now in SfxItemSet/SfxPoolItemHolder *true* static Items can and will be used without RefCount directly and globally. This is also the case for dynamic Items, with the exception of differing Pools for SfxSetItems which cannot be done. Future: That design is already prepared to allow solving that Pool-chaining problem: currently there are master/sub-pools and all accesses have to traverse that structure before even doing anything. For the future the idea is more to 'compose' a Pool by registering ItemInfoPackages, e.g. for Writer pool you may start with SfxItemPool, register the writer-specific ItemInfoPackage, then the one for DrawingLayer (if needed) and the one for EditEngine. It should also be possible to get to smaller granularities of that packages. Ideas for new ones will emerge. We might also think about composing Pools which can e.g. run Writer and Chart, so allowing to use Chart *without* OLE stuff in Writer - just ideas... More changes: - Adapted all stuff, cleaned up old stuff/ definitions - Removed FreezeIdRanges, that can be done once per Pool on-demand (and cannot be forgotten to be called) - Merged XOutdevItemPool with SdrItemPool and offered a ItemInfoPackage which joins both needed sets of Items - All the cleanup hassle with Pools and defaults cleaned up - Adapted all access methods of the pool to use that new stuff. Pool chaining currently stays, but I use a central method 'getTargetPool' instead of recursive calling to get the correct Pool for the action Change-Id: I2b8d3d4c3cc80b1d0d0b3c0f4bd90d7656b4bab7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163157 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-27ITEM: Cleanup some Pool stuff with DefaultsArmin Le Grand (allotropia)
Sorted out some methods at ItemPool which process Defaults to make more clear what is going on and what which method is doing. Change-Id: I2568d3e03d0a56a14b6fe4e04521e1a8e22c000b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162643 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-27Drop std::as_const from css::uno::Sequence iterationsMike Kaganski
Obsoleted by commit 2484de6728bd11bb7949003d112f1ece2223c7a1 (Remove non-const Sequence::begin()/end() in internal code, 2021-10-15) and commit fb3c04bd1930eedacd406874e1a285d62bbf27d9 (Drop non-const Sequence::operator[] in internal code, 2021-11-05). Change-Id: Idbafef5d34c0d4771cbbf75b9db9712e504164cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162640 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-01-14ITEM: Move Shareable ItemFlag to SfxPolItemArmin Le Grand (allotropia)
Currently a Pool-Attribute (in SfxItemInfo), but should be a SfxPoolItem property. Originally 'moved' from old 'poolable' used as hint. I identified needs more general and moved it to where it belongs. Also reworked SfxItemInfo to no longer have/support single bollean flags, but a FlagVariable and defined SFX_ITEMINFOFLAG_* entries to access these, that will make future changes easier without having to change all palces where these get defined over and over again. Added CheckItemInfoFlag for gereral access to that flag and e.g. NeedsSurrogateSupport to directly check for the SFX_ITEMINFOFLAG_SUPPORT_SURROGATE flag as syntactical sugar, that makes the intention clear. Change-Id: I09c238c7c5b7f721b657d7b0a44dbc8d14e02528 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161982 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-01-07tdf#150490: ReportBuilder: Wizards starts showing two different data sourcesJulien Nabet
Change-Id: Ic9287228b8f001ccfe8dc7db1bafa4b9e35e6ece Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161464 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-12-07simplify and modernise ScopedBitmapAccessNoel Grandin
(*) Make all of it use a "Scoped" paradigm (*) pass by value, no need to allocate on heap (*) make all of the construction go via the *Access constructors, instead of it being some via the constructors and some via the Acquire*Access methods. (*) take the Bitmap& by const& in the constructor, so we can avoid doing const_cast in random places. Change-Id: Ie03a9145c0965980ee8df9a89b8714a425e18f74 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160293 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-04cid#1546021 Using invalid iteratorJulien Nabet
and : cid#1545983 Using invalid iterator cid#1545969 Using invalid iterator cid#1545949 Using invalid iterator cid#1545929 Using invalid iterator cid#1545911 Using invalid iterator cid#1545910 Using invalid iterator cid#1545886 Using invalid iterator cid#1545870 Using invalid iterator cid#1545813 Using invalid iterator Change-Id: I2ad10c2a9affd348050a4abe0917a90927a52547 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160317 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-11-18c++20: use std::erase(_if) instead of std::remove(_if)+erase (part 7)Julien Nabet
Change-Id: I2a72422a6c8185d17876daac41a86137048b034c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159627 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-11-09loplugin:fieldcast in rptxml::OControlStyleContextNoel Grandin
Change-Id: I2609090c26a2d405aedcca57a67ec9c5c329e122 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159212 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07ITEM: Get away from classic 'poolable' Item flagArmin Le Grand (allotropia)
To understand this, some look back in history will be needed to see why it is as it is today. In some (reworked) comments 'poolable' is described as flag to hold Items in the ItemPool, also always having only one incarnation of each possible Item. This is not the original intention, but a side-effect. The reason is what the binary format in the office did: To save a document, the Objects & the Pool were saved, *not* individual Items *together* with the objects. The Pool was completely (binary) saved (and loaded) in one run. Temporary IDs were used to represent at the objects in file which Items were referenced. This *required* to have only one incarnation per item to have a minimal binary file size, thus this high effort was put into this. At doc load, the pool was loaded, all Items were set to RefCount 5000, the references from the objects were restored and then for each Item the RefCount was lowered by 5000 again and - if being zero - deleted. Items for UI were marked 'non-poolable' to *not* safe them with the document, so poolable was a flag to decide if that Info/Item was to be saved with the document - or more direct: if it is Model Data. Items are small, so if we prefer runtime it is okay to no longer being strict with this, anyways does not happen often and has only marginal memory effects - compared to runtime effects/savings. Other problems which this caused: One example is that objects in the UNDO stack were still in the pool, so e.g. deleted pictures were saved with the document despite no longer being used (!). That is the reason we have an UndoItemPool and a method MigrateItemPool to move stuff to that Pool when objects go to the UNDO stack - all of this is also no longer needed. Cleaning this up means to ideally have all items in the SfxItemSet, no longer at the Pool. The Pool should be reduced to a 'Default-Item- Holder' and a 'Slot-to-whichId-mapper'. This needs thorough cleanups/removals, but will be worth it because that massive simplification(s) will increase safety an runtime and make migrating to the goal of completely type-based ItemSet stuff easier for the future. Hopefully only view code in the office working with items will have to be changed for this. In this 1st step I already found that some 'compromizes' will be needed: - There are still Items that have to be at the pool to make the Surrogate-stuff working. This gives back all Items in a Pool of a type and is used in ca. 80 cases. Each one looks at these Items *without* context (e.g. a SfxItemSet at an Object would be a context), so if e.g. a dialog is open that temporarily uses Items of that type you would also get these - without knowing about it... To make that work there is still a mechanism to have Items at the Pool, but now just *registering* (and un-reg) them without any sort/search/ remove needs. Also only for Items that need that, so I evaluated the GetItemSurrogates calls and added some asserts when GetItemSurrogates tries to access an unregistered item type which needs to be added. - Another caveat is that there are about 250 places that directly put Items to the Pool (not all remove these, that is done at pool deletion, so some kind of silent 'garbage-collection' is in place). To have an overview I renamed the accessing methods to separate them from the same functionality at the SfxItemSet, which had the same names. An implementation does still add these directly to the pool, there is no way to cleanup those usages for now. In principle all these should be changed to hold the data at an SfxItemSet. I am still hunting problems. But you can build the office, all apps work (including chart) and you can do speed comparisons already. There are test throwing errors, so I hunt these now. It is hard to give an estimation about how much more changes/corrections will be needed. Completed adaptions to new registered Items at Pool, that reduces the failing tests. Still many that I need to hunt. Added stuff to work around that 'compromize' in ScDocumentPool: It overloads ::PutImpl of the pool to implement special handling for a single Item in SC, the ScPatternAttr. In former code that method was used from SfxItemSet and ::PutImpl at the pool directly, so it was only used in one place. I am not sure if it was used from the SfxItemSet functionality, but better offer it for now. To not waste too much runtime the callbacks depend on the boolean 'NewItemCallback' at the SfxPoolItem, it gets set for that single Item in SC and only then the callbacks trigger. I hope to get rid of those again, e.g. newItem_UseDirect is only needed since we have no 'real' StaticPoolDefaults currently - another thing that needs to be cleaned up in a next step. Since usages of impl(Create|Cleanup)ItemEntry and Direct(Put|Remove)ItemInPoolImpl got more and more similar I decided to unify that: move impl(Create|Cleanup)ItemEntry to tooling, make it globally available in svl and use it also directly for Direct(Put|Remove)ItemInPoolImpl. This slightly increases the failing tests again, but only since in Direct(Put|Remove)ItemInPoolImpl that fallback (e.g. tryToGetEqualItem) was used before, thus this is the same class of errors (SfxPoolItem ptr-compare) as the others which I will need to find anyways. Also fixed some missing stuff. Have now idenified and redirected all SfxPoolItem ptr-compares to be able to debug these - one cause for the remaining errors is probably that before with bPoolable those often were sufficient, but are no longer. Used the [loplugin:itemcompare] and a local clang build to do so, see https://gerrit.libreoffice.org/c/core/+/157172 Stabilized Direct(Put|Remove)ItemInPoolImpl forwards, added parameter to implCreateItemEntry to signal that it gets called from DirectPool stuff - currently needed. Hopefully when getting rid of that DirectPool stuff we can remove that again Added two more debug functionalities: - Added a SerialNumber to allow targeted debugging for deterministic cases - Added registering & listing of still-allocated SfxPoolItems at office shutdown Found PtrComp error in thints.cxx - POC, thanks to areSfxPoolItemPtrsEqual. Will hopefully help more with other tests Found some wrong asserts/warnings where I was too careful and not finding something/succeeding is OK, fixes some UnitTests for SC For SC I now just tried to replace all areSfxPoolItemPtrsEqual with the full-ptr-content compare SfxPoolItem::areSame. I also needed to experiment/adapt the newItem_Callback solution but got it working. Did that replacement now for SW too, found some places where the direct ptr compare is OK. Continued for the rest of occurrences, now all 160 places evaluated. Also done some cleanups. Massive cleanups of stuff no longer needed with this paradigm change. Also decided to keep tryToGetEqualItem/ITEM_CLASSIC_MODE for now. It is used for *one* Item (ScPatternAttr/ATTR_PATTERN) in SC that already needs many exceptions. Also useful for testing if errors come up on this change to test if it is related to this. Added forwarding of target Pool for ::Clone in SvxSetItem and SvxSetItem, simplified SfxStateCache::SetState_Impl and returned to simple ptr compares in SfxPoolItem::areSame to not do the test in areSfxPoolItemPtrsEqual. Debugged through UITest_calc_tests9 and found that in tdf133629 where BoxStyle is applied to fully selected empty calc the Item- reuse fallback has to be used not only for ATTR_PATTERN, see comment @implCreateItemEntry. Maybe more... Problem with test_tdf156611_insert_hyperlink_like_excel. Found that in ScEditShell::GetFirstURLFieldFromCell the correct SvxURLField is found and returned as ptr, but it's usage crashes. That is due to the SfxItemSet aEditSet used there gets destroyed at function return what again deletes the SvxFieldItem that is holding the SvxURLField that gets returned. This shows a more general problem: There is no 'SfxPoolItemHolder' that safely holds a single SfxPoolItem - like a SfxItemSet for a single Item (if Items would be shared_ptrs, that would be a safe return value). That will be needed in the future, but for now use another solution: Since I see no reason why EE_FEATURE_FIELD should not be shareable I wil change this for ow in the SfxItemInfo for EditCharAttribField. That way the Item returned will be shared (RefCnt > 1) and thus not be deleted. I changed the return value for GetURLField() and GetFirstURLFieldFromCell() in ScEditShell: At least for GetFirstURLFieldFromCell the return type/value was not safe: The SvxFieldItem accessed there and held in the local temporary SfxItemSet may be deleted with it, so return value can be corrupted/deleted. To avoid that, return a Clone of SvxFieldData as a unique_ptr. With all that UnitTest debugging and hunting and to get the paradigm change working to no longer rely on shared/pooled items I lost a little bit focus on speed, so I made an optimization round for the two central methods implCreateItemEntry/implCleanupItemEntry to get back to the speed improvements that I detected when starting this change. It was mainly lost due to that 'strange' chained pool stuff we have, so I added to detect the target pool (the one at which the WhichID is registered) directly and only once. Next thing to cleanup will/should be the pool and it's concept, all this is not needed and really costs runtime. Since implCreateItemEntry/implCleanupItemEntry are executed millions of times, each cycle counts here. Had an error in the last changes: pool::*_Impl methods use index instead of WhichID - most of them. Another bad trap, I really need to cleanup pool stuff next. Change-Id: I6295f332325b33268ec396ed46f8d0a1026e2d69 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157559 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-10-23Extended loplugin:ostr: Rewrite some O[U]StringLiteral -> O[U]StringStephan Bergmann
...in include files. This is a mix of automatic rewriting in include files and manual fixups (mostly addressing loplugin:redundantfcast) in source files that include those. Change-Id: I1f3cc1e67b9cabd2e9d61a4d9e9a01e587ea35cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158337 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-20Extended loplugin:ostr: Automatic rewrite O[U]StringLiteral: reportdesignStephan Bergmann
Change-Id: I5e45fd5d464db3cf038a844b955144649f980ba1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158208 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-18Clean up the remaining uses of OUStringConstExpr, and drop itStephan Bergmann
Change-Id: I30b2ac77b58e2ae1d1e997a0c830c513542b973d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158101 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-16Resolves: tdf#157726 missing chart from Base reportCaolán McNamara
since: commit c9b5c627ccb5b70c103c559b1df38c1175efc2d1 Author: Caolán McNamara <caolan.mcnamara@collabora.com> Date: Wed Sep 6 10:05:23 2023 +0100 add referer to ole objects Change-Id: I9ef18bf0d734dd900bdbcac475ca15af7b15456e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158027 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>