summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2023-12-28Decouple ScPatternAttr from SfxItemPoolArmin Le Grand (allotropia)
ScPatternAttr is traditionally derived from SfxPoolItem (or better: SfxSetItem) and held in the ScDocumentPool as Item. This is only because of 'using' the 'poolable' functionality of the Item/ItemSet/ItemPool mechanism. Lots of hacks were added to sc and Item/ItemSet/ ItemPool to make that 'work' which shows already that this relationship is not optimal. It uses DirectPutItemInPool/DirectRemoveItemFromPool to do so, also with massive overhead to do that (and with not much success). The RefCnt in the SfxPoolItem that is used for this never worked reliably, so the SfxItemPool was (ab)used as garbage collector (all Items added and never removed get deleted at last for good when the Pool goes down). For this reasons and to be able to further get ItemSets modernized I changed this. I did two big changes here: (1) No longer derive ScPatternAttr from SfxItemSet/ SfxSetItem, no longer hold as SfxPoolItem (2) Add tooling to reliably control the lifetime of ScPatternAttr instances and ther uniqueness/ reusage for memory reasons It is now a regular non-derived class. The SfxItemSet formally derived from SfxSetItem is now a member. The RefCnt is now also a member (so independent from size/data type of SfxPoolItem). All in all it's pretty much the same size as before. To support handling it I created a CellAttributeHelper that is at/owned by ScDocument and takes over tooling to handle the ScPatternAttr. It supports to guarantee the uniqueness of incarnated ScPatternAttr instances for a ScDocument by providing helpers like registerAndCheck and doUnregister. It hosts the default CellAttribute/ ScPatternAttr. That default handling was anyways not using the standard default-handling of Items/Pools. I adapted whole SC to use that mainly by replacing calls to DirectPutItemInPool with registerAndCheck and DirectRemoveItemFromPool with doUnregister, BUT: This was not sufficient, the RefCnt kept to be broken. For that reason I decided to also do (2) in this change: I added a CellAttributeHolder that owns/regulates the lifetime of a single ScPatternAttr. Originally it also contained the CellAttributeHolder, but after some thoughts I decided that this is not needed - if there is no ScPatternAttr set, no CellAttributeHolder is needed for safe cleanup at destruction of the helper. So I moved/added the CellAttributeHolder to ScPatternAttr where it belongs more naturally anyways. The big plus is that CellAttributeHolder is just one ptr, so not bigger than having a simple ScPatternAttr*. That way, e.g. ScAttrEntry in ScAttrArray did not 'grow' at all. In principle all places where a ScPatternAttr* is used can now be replaced by using a CellAttributeHolder, except for construction. It is capable to be initialized with either ScPatternAttr instances from the heap (it creates a copy that then gets RefCounted) or allocated (it supports ownership change at construction time). Note that ScAttrEntry started to get more a C++ class in that change, it has a constructor. I did not change the SCROW member, but that should also be done. Also made registerAndCheck/doUnregister private in CellAttributeHelper and exclusively used by CellAttributeHolder. That way the RefCnt works, and a lot of code gets much simpler (check ScItemPoolCache, it's now straightforward) and safer and ~ScPatternAttr() uses now a hard assert(!isRegistered()); which shows that RefCnt works now (the 1st time?). There can be done more (see ToDo section below) but I myself will concentrate on getting ItemSets forward. This decoupling makes both involved mechanisms more safe, less complex and more stable. It also opens up possibilities to further optimize ScPatternAttr in SC without further hacking Item/ItemSet/ItemPool stuff. NOTE: ScPatternAttr *should* be renamed to 'CellAttribute' which describes what it is. The experiencd devs may know what it does, but it is a hindrance for understanding for attacting new devs. I already used now names like CellAttributeHelper/CellAttributeHolder etc., but abstained from renaming ScPatternAttr, see ToDo list below. SfxItemSet discussion: ScPatternAttr still contains a SfxItemSet, or better, a SfxSetItem. For that reason it still depends on access to an SfxItemPool (so there is acces in CellAttributeHelper). This is in principle not needed - no Item (in the range [ATTR_PATTERN_START .. ATTR_PATTERN_END]) needs that. In principle ScPatternAttr could now do it's own handling of those needed Items, however this might be done (linear array, hash-by-WhichID, ...). The Items get translated to and from this to the rest of the office anyways. Note that *merging* of SfxItemSets is *still* needed what means to have WhichID slots in SfxItemState::DONTCARE, see note in ScPatternAttr::ScPatternAttr about that. And there is also the Surrogates stuff which would have to be checked. The other extreme is to use SfxItemSet *more*, e.g. directly derive from SfxItemSet what would make stuff easier, maybe even get back to using the 'regular' Items like all office, I doubt that that would be much slower, so why...? Also possible is to remove that range of Items exclusively used by ScPatternAttr from ScDocumentPool *completely* and create an own Pool for them, owned by CellAttributeHelper. That Pool might even be static global, so all SC Docs could share all those Items - maybe even the ScPatternAttr themselves (except the default per document). That would remove the dependency of ScPatternAttr from a Pool completely. ToDo-List: - rename ScPatternAttr to CellAttribute or similar - use SfxItemSetFixed with range [ATTR_PATTERN_START .. ATTR_PATTERN_END] instead of regular SfxItemSet (if the copy-construtor works now...?) - maybe create own/separate Pool for exclusive Items - make ScAttrEntry more a C++ class by moving SCROW to the private section, add get/set methods and adapt SC Had to add some more usages of CellAttributeHolder to the SC Sort mechanism, there were situations where the sorted ScPatternAttr were replaced in the Table, but the 'sorted' ones were just ScPatternAttr*, thus deleting the valid ones in the Table already. Using CellAttributeHolder makes this safe, too. Added a small, one-entry cache to CellAttributeHelper to buffer the last found buffered ScPattrnAttr. It has a HitRate of ca. 5-6% and brings the UnitTest testSheetCellRangeProperties from 0m48,710s to 0m37,556s. Not too massive, but erery bit counts :-) Also shows that after that change optimizations in the now split functionality is possible and easy. Change-Id: I268a7b2a943ce5ddfe3c75b5e648c0f6b0cedb85 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161244 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-28Added boolean op's to SfxPoolItemHolderArmin Le Grand (allotropia)
...and adapted code to make use of it. This makes checking if the SfxPoolItemHolder instance contains an Item or not simpler and thus more readable, no need to access the Item* every time using getItem() - is okay, but not intuitive. Change-Id: I8042267cce670aca2641a91cd36285058f17ffbb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161380 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-28In readonly mode, we restrict many events like click.Gökay Şatır
In readonly mode, Online users need to be able to click on a hyperlink and get the related info. For this purpose, this PR adds a new function template that sends the hyperlink info if there is any at the clicked position. I will send the implementation with the next commit. Signed-off-by: Gökay Şatır <gokaysatir@collabora.com> Change-Id: I886ea22a7097aac73ade0da78a88ddfc95ad819c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160022 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161372 Tested-by: Jenkins
2023-12-28Drop SvtAccessibilityOptions_Impl classGabor Kelemen
It is not doing anything useful anymore since 2016 commit 2c8fe2e737b84ecd3dbac36a4fe6bd061bbd3bae when all setter methods were removed as unused Change-Id: If82c2d0a8007132d9521b43075506db5f8fa4389 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161238 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-28editeng: move EPosition in its own header fileTomaž Vajngerl
Change-Id: I6362bfdde31e276c006be3799839e9c1ff4f82f6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161344 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28editeng: simplify and clean-up EPaMTomaž Vajngerl
Remove copy/assign operator as they are not needed because they are the same as default. Change-Id: I1a71e5de8024680307a65e8b5540b250178f0a97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161343 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28editeng: add EPaM unit testsTomaž Vajngerl
Change-Id: Icc15746bf2712bae446f16fd378f94f8be5ec61e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161342 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28editeng: move EPaM in its own header fileTomaž Vajngerl
Change-Id: Ib3682dd5df09162748aad4402108b2b3cec3a853 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161341 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28editeng: simplify and clean-up ESelectionTomaž Vajngerl
Change-Id: I8c0ee3f6b0f4e20277e006c15fddbda6ba9c05e6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161340 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-28editeng: move ESelection in its own header fileTomaž Vajngerl
Change-Id: I46fbaf9fea8308169f2ada19787684c87b0c3c5b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161338 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-12-26Make GetpApp() the pNotifier's default valueMike Kaganski
It fixes asserts in various places where a message box wants to show in Lok case Change-Id: If3c18e92c131de640281f3365567d66b4e14e1ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161299 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-24Remove listeners of SvtAccessibilityOptionsGabor Kelemen
This class no longer notifies listeners since 2019 commit 3135d820d0172ef5695a4b97cec505e6ad03d67a so presumably the listeners can be dropped as well. The sd part tried to execute SID commands which seem to be removed since 2004 commit f77ad7f15f53526714518bb3562ba7de4ba0d45e Change-Id: I81d234aabe10b53278c89ffd846240507854d0c1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161237 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-24cid#1545470 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545468 COPY_INSTEAD_OF_MOVE cid#1545446 COPY_INSTEAD_OF_MOVE cid#1545435 COPY_INSTEAD_OF_MOVE cid#1545419 COPY_INSTEAD_OF_MOVE cid#1545415 COPY_INSTEAD_OF_MOVE cid#1545410 COPY_INSTEAD_OF_MOVE cid#1545390 COPY_INSTEAD_OF_MOVE cid#1545384 COPY_INSTEAD_OF_MOVE cid#1545374 COPY_INSTEAD_OF_MOVE cid#1545371 COPY_INSTEAD_OF_MOVE cid#1545368 COPY_INSTEAD_OF_MOVE cid#1545366 COPY_INSTEAD_OF_MOVE cid#1545335 COPY_INSTEAD_OF_MOVE cid#1545331 COPY_INSTEAD_OF_MOVE cid#1545327 COPY_INSTEAD_OF_MOVE cid#1545308 COPY_INSTEAD_OF_MOVE cid#1545280 COPY_INSTEAD_OF_MOVE cid#1545199 COPY_INSTEAD_OF_MOVE Change-Id: If05a13125b05ccd93d34d0eced566e7b3b58aaef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161256 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-24Drop some wrapper methods from SvtAccessibilityOptionsGabor Kelemen
just use the wrapped officecfg methods instead of: GetIsAllowAnimatedGraphics GetIsAllowAnimatedText GetIsAutomaticFontColor IsSelectionInReadonly Change-Id: I74de75fc9ff2f9a36ef376255e937bb373055587 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161236 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <kelemeng@ubuntu.com>
2023-12-24tdf#146619 Recheck include/ with find-unneeded-includes --noexcludeGabor Kelemen
to see if some exclusions became obsolete Change-Id: Id88351f5448511b35994c58c6cb749784da3b45e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156993 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <kelemeng@ubuntu.com>
2023-12-24Remove unused headers found by bin/find-unusedheaders.shGabor Kelemen
Change-Id: I859138dee575ef7fd76db28b619c673782914782 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161235 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <kelemeng@ubuntu.com>
2023-12-24Rewrite bin/find-unusedheaders.pyGabor Kelemen
This script was broken, not only in the implementation (it gives too many false positives in a suspiciously short, <1s time) but in its approach as well: only considering stuff that is compiled under Linux inherently leaves out other platform specific or experimental stuff. Rewrite it using another approach: grep for mentions of each header in the modules or global ones in include/ everywhere. Runtime of this script is about 15 minutes, seems to give only a few relevant hits. Change-Id: Ifb92f41f11ca9a2bf14eec617a469003becb78fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161234 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <kelemeng@ubuntu.com>
2023-12-24OInterfaceIteratorHelper3 always copies maData contents in ctorCaolán McNamara
while I think the idea is that the copy on write should only be done by OInterfaceContainerHelper3, i.e. that ownership really transfers to OInterfaceIteratorHelper3 and OInterfaceContainerHelper3 makes a new one if that turns out to be necessary Change-Id: I6e97e3b303f133edbbb35ac23f39cf5348ad49fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161257 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-23cid#1545525 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545519 COPY_INSTEAD_OF_MOVE cid#1545516 COPY_INSTEAD_OF_MOVE cid#1545501 COPY_INSTEAD_OF_MOVE Change-Id: Icc6efaf8c8fe06c7acd629ef77eac6b228b98f4b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161255 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-22Related: tdf#155266 Eliminate delayed scrollbar redrawing when swipingPatrick Luby
By default, the layout idle timer in the InterimWindowItem class is set to TaskPriority::RESIZE. That is too high of a priority as it appears that other timers are drawing after the scrollbar has been redrawn. As a result, when swiping, the content moves fluidly but the scrollbar thumb does not move until after swiping stops or pauses. Then, after a short lag, the scrollbar thumb finally "jumps" to the expected position. So, to fix this scrollbar "stickiness" when swiping, setting the priority to TaskPriority::POST_PAINT causes the scrollbar to be redrawn after any competing timers. Change-Id: I8c0772fc40ddc690ee59c6267c1c50971f4ff238 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161184 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Patrick Luby <plubius@libreoffice.org>
2023-12-22tdf#156820 Fix crash in custom color pickerNoel Grandin
which requires (*) keeping ColorPicker alive during the runAsync in ColorPicker::startExecuteModal (*) keeping the PaletteManager alive during the ExecuteAsync in PaletteManager::PopupCOlorPicker Noting that MattK debugged the cause of this. Change-Id: I07efe8e6514f8882b1347c79c6150578c234bb9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161054 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-22svl: fix build with --enable-debugXisco Fauli
After author Armin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de> 2023-12-20 19:42:28 +0100 committer Armin Le Grand <Armin.Le.Grand@me.com> 2023-12-21 21:13:55 +0100 commit 789a737ac92c4f2b0eb9820b99c43cc8253c8b29 (patch) tree bc167ec04de29e63168844be973f59980fa36ac2 parent 3430a2c639a9f714259f9d319515464a653d21ab (diff) Remove DeleteItemOnIdlex it fails with /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:340: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemiter.o] Error 1 make[1]: *** Se espera a que terminen otras tareas.... In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/svl/source/items/sitem.cxx:23: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/sitem.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/svl/source/items/itemset.cxx:30: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/o3tl/sorted_vector.hxx:15, from /home/xisco/libreoffice/include/svl/itempool.hxx:30, from /home/xisco/libreoffice/svl/source/items/itemset.cxx:31: /home/xisco/libreoffice/svl/source/items/itemset.cxx: In member function ‘const SfxPoolItemHolder& SfxPoolItemHolder::operator=(const SfxPoolItemHolder&)’: /home/xisco/libreoffice/svl/source/items/itemset.cxx:120:13: error: ‘isDeleted’ was not declared in this scope 120 | assert(!isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx:121:21: error: ‘const class SfxPoolItemHolder’ has no member named ‘isDeleted’ 121 | assert(!rHolder.isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx: In member function ‘bool SfxPoolItemHolder::operator==(const SfxPoolItemHolder&) const’: /home/xisco/libreoffice/svl/source/items/itemset.cxx:139:13: error: ‘isDeleted’ was not declared in this scope 139 | assert(!isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx:140:21: error: ‘const class SfxPoolItemHolder’ has no member named ‘isDeleted’ 140 | assert(!rHolder.isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemset.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/itemset.hxx:23, from /home/xisco/libreoffice/include/svl/setitem.hxx:25, from /home/xisco/libreoffice/svl/source/items/itempool.cxx:21: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itempool.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/include/svl/itemprop.hxx:26, from /home/xisco/libreoffice/svl/source/items/itemprop.cxx:23: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemprop.o] Error 1 make: *** [Makefile:290: build] Error 2 Change-Id: I0f61738d4afbdfc06b372d6c5e5fff6f9f9f4e65 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161142 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-22cid#1546500 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1546492 COPY_INSTEAD_OF_MOVE cid#1546468 COPY_INSTEAD_OF_MOVE cid#1546431 COPY_INSTEAD_OF_MOVE cid#1546382 COPY_INSTEAD_OF_MOVE cid#1546350 COPY_INSTEAD_OF_MOVE cid#1546336 COPY_INSTEAD_OF_MOVE cid#1546314 COPY_INSTEAD_OF_MOVE cid#1546152 COPY_INSTEAD_OF_MOVE cid#1546094 COPY_INSTEAD_OF_MOVE cid#1546077 COPY_INSTEAD_OF_MOVE cid#1546047 COPY_INSTEAD_OF_MOVE cid#1545213 COPY_INSTEAD_OF_MOVE Change-Id: Ia51df9f9cbde755db4d2685e34f22676ed5eceff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161141 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-21tdf#153690 Prevent invisible dialogs in Calc Full ScreenMatt K
This change just adds the flag "SfxChildWindowFlags::NEVERHIDE" to the info passed around so that the dialogs are not treated as invisible when executing SfxWorkWindow::ShowChildren_Impl. Change-Id: I35f0be94132cee438b3be9f4b4217208617a1e77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160660 Tested-by: Jenkins Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-21allow passing if deep detection is wantedCaolán McNamara
which naturally requires the data to achieve Change-Id: If23e7dbd009f3d8e60422ec4d485b459d5721c8f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161135 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-21Remove DeleteItemOnIdlexArmin Le Grand (allotropia)
There are some CrashReports in 7.6 which have DeleteItemOnIdle on the stack, but there is nothing reproducable. So I took a look... I first thought it's a MCGR regression, due to classes on the stack. But the Item involved is just random, can happen with any Item. Then I thought it may have to do with ITEM refactorings, but it happens with DeleteItemOnIdle involved, so also not the case. I already saw DeleteItemOnIdle when doing these and qualified as 'hack' in the way. already It is only on Windows and DeleteItemOnIdle is involved. This again (took a deeper look now) is an old hack to keep an SfxPoolItem 'alive' for some 'time'. For that, it triggers an async reschedule which then deletes the Item when being called. If the Item will be used after that is pure coincidence - seems to work in most cases. It seems as if for Windows the timing slightly changed for some scenarios, so a reschedule is too early. This can happen with this hack anytime. DeleteItemOnIdle is used in scenarios where SfxPoolItem* is e.g. returned, but is *not* anchored, so e.g. not member of an SfxItemSet. Or in short: Lifetime is not safe. DeleteItemOnIdle exists since 1st import, but was changed to AsyncEvent ca. 4 months ago (see 57145acf9ec47c23e307b7a5c0029d21d937cc35), so that may have caused it. It is possible that these errors happen on Windows since then. Before something more complicated was used to delete it late, but surely also not really safe. Due to ITEM refactor I have the knowledge/tooling to solve this. It will not be a 1-5 lines fix, but it is a hack and in the way for further ITEM refactor anyways. What we have nowadays is a SfxPoolItemHolder -> it's like an SfxItemSet for a single Item. It safely holds/ controls the lifetime of an SfxPoolItem. It is already used in quite some places. It helps to solve many hacks, also the ones putting Items directly to the Pool - due to there never was an alternative for that. In principle the ItemPool/ItemSet/Item paradigm was never complete without SfxPoolItemHolder. Thus I started to fix that (and remove that hack for good, sooo many changes over the years, sigh), but as said is not straightforward. Will have to change retvals of involved stuff to SfxPoolItemHolder - it's just two pointers and designed to be copied (one is a Pool, needed to cleanup when destructing). CopyConstruct/destroy just counts the RefCnt up/down, so cheap. 1st version compiling, let's check on gerrit... Corrected one error in QueryState for securitypage, also added some security features/asserts. Change-Id: Ida49fd35ca88ead84b11d93e18b978cb9e395090 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161083 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-21Add flush mechanism to buffered Primitives IIArmin Le Grand (allotropia)
As sberg mentioned in previous change this might be responsible for heap-use-after-free problems. I took a look and it seems to be possible that the timer calls back while deletion of the helper is in progress, so I try now to first stop the timer and then delete so that it cannot trigger. Will see if that works - if not I might have to use another lock... Change-Id: I1ae27d9ed890f352904cab18c3292b449659a3ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161128 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-21std::list::size() can still be implemented as std::distance()Caolán McNamara
seen with Red Hat Developer Toolset 10 https: //github.com/CollaboraOnline/online/issues/6893#issuecomment-1866342284 Change-Id: I4a0e8ad028126dded678e971a6261d6725a6b06c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161129 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-21tdf#158375: adapt UI when DDE is disabled via DisableActiveContentSarper Akdemir
When DisableActiveContent is set, provide now non-functional areas meaningful error messages / popup dialogs. Change-Id: I34bffee10fb0ba5c0194193f3d3d81b93d7dbd26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160923 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2023-12-20cool#7865 sfx2 lok: fix bad view id on async command dispatchMiklos Vajna
If you try hard enough, it's possible to request an "add conditional format" dialog in one view and have the dialog pop up in an other view. This is related to cool#7853 but it focuses on the wider problem. What happens is that sometimes we do want to execute an uno command in an async way, e.g. one dialog opening an other dialog in its response handler: making sure the dialog is not manually / synchronously spinning the main loop while it's running is wanted. Also fixing each & every async command dispatch manually would be a lot of work. Fix the problem by remembering the current view in SfxHintPoster::Post() as it posts events to the main loop and restoring that view if necessary in SfxHintPoster::DoEvent_Impl(). Other comments: - An alternative would be to just dispatch all these UNO commands synchronously, but see above, there are cases where we want to stay async, a nested main loop would be worse. - An even more general fix would be to handle all calls to Application::PostUserEvent(), but vcl doesn't know what is the current view and would have trouble switching to that view (only sfx2 and higher up knows that), so do this only at a SfxHintPoster::Post() level, this is already meant to fix all async uno commands. - There was a single case in sd/ where we tried to dispatch an async event while switching views, so switch to a sync command dispatch there to avoid the problem. CppunitTest_sd_tiledrendering would hang without this and would emit a warning in SfxHintPoster::Post(). - Restore the sc/ code to do its async dispatch as it used to, so now CppunitTest_sc_tiledrendering's testOpenURL is a test case that covers this change. Change-Id: I765e618f55caad791aa1fe7569a32bcc31622525 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161071 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-12-20Fix BigInt::AbsMike Kaganski
It would fail to negate SAL_MIN_INT32. Change-Id: Ia5d34fc31917cabee2a1b130ef69c91b202592fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161063 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-20Make BigInt::DivMod public, to allow optimized divisionMike Kaganski
Change-Id: I4f79c30b9ab997d01e59a0dec76986e74abfc11f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161053 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-20Simplify and rename for clarityMike Kaganski
Change-Id: Ic97a2b313c6f7d9da540a8867f01362c2fe7b0d0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161052 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-20tdf#158375: disable DDE when DisableActiveContent is setSarper Akdemir
Change-Id: I167f6ea5d740b5a53cd02a9b865e65ff980a8877 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160922 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2023-12-20tdf#158375: adapt UI when embedded content is disabled via optionSarper Akdemir
When DisableActiveContent is set, embedded active content is disabled (e.g. OLE). Therefore the existing ui insertion bits don't function either. Disable them with a warning pop-up hinting "Active content is disabled." Change-Id: I14984684f22df6aff81af79d5a15589b5cae75fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161055 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2023-12-20tdf#158105 Change character "background" to "highlighting color"Bogdan B
Change-Id: I98dcc9cf0d2e3306275a25ed83dc5692211ed442 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160037 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org> Reviewed-by: Hossein <hossein@libreoffice.org>
2023-12-20ofz#65165 Stack-buffer-overflow READ 4 test caseCaolán McNamara
make VALGRIND=memcheck CppunitTest_tools_test Conditional jump or move depends on uninitialised value(s) at 0x13348ADA: BigInt::DivLong(BigInt const&, BigInt&, BigInt*) const (bigint.cxx:306) by 0x13349A0A: BigInt::operator/=(BigInt const&) (bigint.cxx:635) by 0x12A58F67: tools::BigIntTest::testLenB1() (test_bigint.cxx:103) by 0x12A5C6A8: void std::__invoke_impl<void, void (tools::BigIntTest::*&)(), tools::BigIntTest*&>(std::__invoke_memfun_deref, void (tools::BigIntTest::*&)(), tools::BigIntTest*&) (invoke.h:74) if ( (static_cast<sal_uInt64>(aTmpB.nNum[nLenB1 - 1]) * nQ) > ^ nLenB1 is 0 ((nTmp - static_cast<sal_uInt64>(aTmpB.nNum[nLenB1]) * nQ) << 32) + aTmpA.nNum[j - 2]) Since: commit bcbc0857bf4bc24b5ea36e445a367cce0a382da4 Date: Sun Dec 17 21:11:31 2023 +0300 Simplify BigInt Co-authored-by: Mike Kaganski <mike.kaganski@collabora.com> Change-Id: Id8dbff23f7b4312ba666e1443c41b7869713bfbc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160953 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-19Drop some wrapper methods from SvtOptionsDrawinglayerGabor Kelemen
just use the wrapped officecfg methods instead of: IsSolidDragCreate IsRenderDecoratedTextDirect IsRenderSimpleTextDirect GetQuadratic3DRenderLimit GetQuadraticFormControlRenderLimit IsTransparentSelection Change-Id: Ie0f3ec0f8fdbbf08facfff1a372c666c8a0c8979 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160654 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-19Fix typoAndrea Gelmini
Change-Id: Ie9848c31ee4969d61470dfb5b570e45848f0914d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160992 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-12-19cid#1557601 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1546498 COPY_INSTEAD_OF_MOVE cid#1546384 COPY_INSTEAD_OF_MOVE cid#1546376 COPY_INSTEAD_OF_MOVE cid#1546374 COPY_INSTEAD_OF_MOVE cid#1546373 COPY_INSTEAD_OF_MOVE cid#1546368 COPY_INSTEAD_OF_MOVE cid#1546365 COPY_INSTEAD_OF_MOVE cid#1546356 COPY_INSTEAD_OF_MOVE cid#1546340 COPY_INSTEAD_OF_MOVE cid#1546266 COPY_INSTEAD_OF_MOVE cid#1546236 COPY_INSTEAD_OF_MOVE cid#1546188 COPY_INSTEAD_OF_MOVE cid#1546178 COPY_INSTEAD_OF_MOVE cid#1546166 COPY_INSTEAD_OF_MOVE cid#1546156 COPY_INSTEAD_OF_MOVE cid#1546144 COPY_INSTEAD_OF_MOVE cid#1546143 COPY_INSTEAD_OF_MOVE cid#1546100 COPY_INSTEAD_OF_MOVE cid#1546078 COPY_INSTEAD_OF_MOVE cid#1546041 COPY_INSTEAD_OF_MOVE cid#1546036 COPY_INSTEAD_OF_MOVE cid#1546033 COPY_INSTEAD_OF_MOVE Change-Id: Ib3586d93198992e206baf5c2de5a663d5574aa3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160979 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-19Add flush mechanism to buffered PrimitivesArmin Le Grand (allotropia)
There are the classes BufferedDecompositionPrimitive2D and BufferedDecompositionGroupPrimitive2D that offer a unified mechanism to preserve/buffer the decomposition of a Primitive, independent of the complexity. This may include e.g. the pixel representation of a 3D Scene, for Charts/CustomShapes and others. Until now these were refreshed when the objects change, or when the buffered decomposition decides that it is necessary, but there was no general mechanism in place to clean these up while the Primitive owning them was alive/used. This is not a big thing in Draw/Impress since this would only be relevant when zooming deep into a SdrPage, so the non-vislible parts would still hold data that would not be needed. But for Calc and Writer this is more relevant: A 3D Chart on the 1st page of a Writer document would be held buffered all the time a user would work on pages below that. This is good for guaranteeing fast re-visualization when scrolling up again, but until then would just block memory. So I added this general mechanism that allows activating flushing timer-based, on Seconds. The default is null seconds, thus deactivated. It should only be used for Primitives that can get expensive, not for all. NOTE: I checked activating for all Primitives to be on the safe side, works. It is now (initially) activated for: - GlowPrimitive2D - GraphicPrimitive2D - MetafilePrimitive2D - ScenePrimitive2D - ShadowPrimitive2D (softShadow) - SoftEdgePrimitive2D - SdrCustomShapePrimitive2D - SdrGrafPrimitive2D These are the usual suspects that may use some memory to buffer their decomposition (for good reasons, each repaint uses it). Other Primitives which may show need to be treated this way can easily be added, just by calling setCallbackSeconds(s) in their constructor. This is true for all Primitives derived from the two classes mentioned above. NOTE: Too short buffering times are *not* useful - e.g. for a expensive-to-be-recreated 3D chart representation this may not pay out, so I chose times in a way that try to respect this. NOTE: This change needs 7397fa7cdfc33f5a079df42e4d6cfa59ae9e062d to work correctly (thanks to sberg for this). Without this the office hangs/does not terminate regularly in trying to destroy the 'TimerManager'. Change-Id: Id4802afcb6d12480bb2935cc1ef67fe443b3b788 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160926 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-12-19cid#1545222 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545241 COPY_INSTEAD_OF_MOVE cid#1545303 COPY_INSTEAD_OF_MOVE cid#1545315 COPY_INSTEAD_OF_MOVE cid#1545319 COPY_INSTEAD_OF_MOVE cid#1545322 COPY_INSTEAD_OF_MOVE Change-Id: I284ba6e395f72abd7939667a8367ac99ab64194d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160955 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-19tdf#123864 a11y: Handle new checkable state for VCLXAccessibleMenuItemMichael Weghorn
Add reporting for the new CHECKABLE a11y state introduced in commit d6c6472bbe1c90b733a4d69c4c8528f4de3750d3 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Nov 13 15:53:44 2023 +0100 tdf#123864 a11y: Add new AccessibleStateType::CHECKABLE for `VCLXAccessibleMenuItem`. `MenuItemData::HasCheck` looks like it already provides what's needed to say whether an item is checkable, therefore add a `Menu::IsItemCheckable` that makes use of this and and a `VCLXAccessibleMenuItem::IsCheckable` that makes use of that in turn. Extend `VCLXAccessibleMenuItem::FillAccessibleStateSet` to use the latter to report the CHECKABLE state accordingly. Change-Id: Id23196ef2527a71a338102a5143a8bd6fd41db84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160902 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-12-18add copy constructor for SfxItemSetFixedNoel Grandin
which flushes out the fact that, previously, when SfxItemSetFixed was being copied, we were not actually taking advantage of the "internal" memory, and were actually allocating a separate block of memory, like a "normal" SfxItemSet. Change-Id: I6a8073c58b464d53bfd2a54cf1dd27a3f2cb3df7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160377 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-18tdf#158703: return updated position from FnAddNonBrkSpaceMike Kaganski
The paragraph text may become shorter after the function succeeds, because it may remove arbitrary number of preceding spaces; since the position may then be used to access data in the string in the caller, we need to update it, to avoid use of old position (which may point beyond the string, and produce a crash; or it may point to a wrong position in it). Change-Id: Ib1b4b63cbd7150e0f69c97032e3410db7dadd4dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160924 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-18tdf#158686 sw floattable: fix print preview crashMiklos Vajna
Regression from commit b8521d969ab5be4fc947e467d4afe969f9d3b563 (tdf#157263 sw floattable: prefer join over split after moving fwd, 2023-09-25), enabling Options -> Writer -> Formatting Aids -> Hidden Characters, then opening the bugdoc, finally Toggle Print Preview on the toolbar resulted in a crash. We have a memory corruption here: ==11968==ERROR: AddressSanitizer: heap-use-after-free on address 0x60f0000734e0 at pc 0x7f473822d2ee bp 0x7fffdadd3660 sp 0x7fffdadd3658 READ of size 8 at 0x60f0000734e0 thread T0 #0 0x7f473822d2ed in rtl::Reference<FmXFormShell>::operator->() const /include/rtl/ref.hxx:216:9 #1 0x7f473821feeb in FmFormShell::IsActiveControl() const /svx/source/form/fmshell.cxx:1227:12 #2 0x7f46dad4d52a in SwView::SelectShell() /sw/source/uibase/uiview/view.cxx:296:40 #3 0x7f46dad496a6 in SwView::AttrChangedNotify(LinkParamNone*) /sw/source/uibase/uiview/view.cxx:572:13 ... #32 0x7f4748944cda in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) /sfx2/source/view/viewfrm.cxx:2552:32 #33 0x7f47488f4e3b in SfxViewFrame::ExecView_Impl(SfxRequest&) /sfx2/source/view/viewfrm.cxx:2637:29 freed by thread T0 here: #0 0x5568ff2f9a7b in operator delete(void*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-15.0.7.src/build/../projects/compiler-rt/lib/asan/asan_new_delete.cpp:164:3 #1 0x7f4738214346 in FmFormShell::~FmFormShell() /svx/source/form/fmshell.cxx:181:1 #2 0x7f4746b04b9d in SfxDispatcher::FlushImpl() /sfx2/source/control/dispatch.cxx:1412:13 #3 0x7f4746aff767 in SfxDispatcher::Flush() /sfx2/source/control/dispatch.cxx:157:26 #4 0x7f47489100dc in SfxViewFrame::PopShellAndSubShells_Impl(SfxViewShell&) /sfx2/source/view/viewfrm.cxx:1100:24 #5 0x7f47489441a3 in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) /sfx2/source/view/viewfrm.cxx:2538:13 #6 0x7f47488f4e3b in SfxViewFrame::ExecView_Impl(SfxRequest&) /sfx2/source/view/viewfrm.cxx:2637:29 I.e. a new SwPagePreview replaces the old SwView, but the order is that SfxViewFrame::SwitchToViewShell_Impl() starts with deleting the SfxShells of the old SwView in PopShellAndSubShells_Impl(), then it creates the new shell, finally deletes the old shell. Given that the new shell hides hidden characters and the old shell did not, this triggers a size notification for the half-deleted old shell and we crash. Seeing that SwView::AttrChangedNotify() already had code to delay the selection of an SfxShell in the old SwView, fix the problem by introducing a new flag that allows not selecting an SfxShell at all if the old view is known to be deleted in the near future anyway. An alternative would be to make sure that all relevant pointers are maintained using an SfxBroadcaster / SfxListener protocol, but after fixing some 4 of them and that's still not enough, probably it's better to handle this at a higher level. It's also a bit unclear how this "worked" in the past; looks like the old view didn't get the size change notification by accident. Change-Id: I423ff946f8235848cc3a870bc52fcf88a721fd2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160925 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-12-18unique_ptr->optional in SdrObjGeoDataNoel Grandin
and move it to its own header file to make the include dependencies easier to handle Change-Id: I9449ebd70d83be332e47e1786422697f76175e53 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160905 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-18svx: prefix members of XColorEntryMiklos Vajna
See tdf#94879 for motivation. Change-Id: I5f666424a2f9cd2206f37b4440d54452e339e3e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160891 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-12-17Simplify BigIntMike Kaganski
Change-Id: I1b88648a84760ea16f32566fe0d88e402c328987 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160888 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-12-16cid#1545970 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545957 COPY_INSTEAD_OF_MOVE cid#1545944 COPY_INSTEAD_OF_MOVE cid#1545939 COPY_INSTEAD_OF_MOVE cid#1545931 COPY_INSTEAD_OF_MOVE cid#1545926 COPY_INSTEAD_OF_MOVE cid#1545909 COPY_INSTEAD_OF_MOVE cid#1545899 COPY_INSTEAD_OF_MOVE cid#1545896 COPY_INSTEAD_OF_MOVE cid#1545894 COPY_INSTEAD_OF_MOVE cid#1545858 COPY_INSTEAD_OF_MOVE cid#1545823 COPY_INSTEAD_OF_MOVE cid#1545820 COPY_INSTEAD_OF_MOVE cid#1545819 COPY_INSTEAD_OF_MOVE cid#1545772 COPY_INSTEAD_OF_MOVE cid#1545749 COPY_INSTEAD_OF_MOVE cid#1545743 COPY_INSTEAD_OF_MOVE cid#1545739 COPY_INSTEAD_OF_MOVE cid#1545635 COPY_INSTEAD_OF_MOVE cid#1545603 COPY_INSTEAD_OF_MOVE cid#1545602 COPY_INSTEAD_OF_MOVE cid#1545592 COPY_INSTEAD_OF_MOVE cid#1545544 COPY_INSTEAD_OF_MOVE cid#1545532 COPY_INSTEAD_OF_MOVE cid#1545520 COPY_INSTEAD_OF_MOVE cid#1545512 COPY_INSTEAD_OF_MOVE cid#1545490 COPY_INSTEAD_OF_MOVE cid#1545483 COPY_INSTEAD_OF_MOVE cid#1545467 COPY_INSTEAD_OF_MOVE cid#1545461 COPY_INSTEAD_OF_MOVE cid#1545458 COPY_INSTEAD_OF_MOVE cid#1545428 COPY_INSTEAD_OF_MOVE cid#1545394 COPY_INSTEAD_OF_MOVE cid#1545385 COPY_INSTEAD_OF_MOVE cid#1545383 COPY_INSTEAD_OF_MOVE cid#1545366 COPY_INSTEAD_OF_MOVE cid#1545357 COPY_INSTEAD_OF_MOVE Change-Id: I76224326977b4067b94ca3176cad1ca6de17930a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160847 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>