summaryrefslogtreecommitdiff
path: root/svx/source/sidebar
AgeCommit message (Collapse)Author
2024-11-08no need to take a copy of the getProcessComponentContext return valueNoel Grandin
we can just take a "const &". (found by running clang-tidy with the performance-unnecessary-copy-initialization warning) Change-Id: I20fd208c65303da78170b1ac06c638fdf3aa094b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176267 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-11-01tdf#163486: PVS: Identical branchesBogdan Buzea
V1037 Two or more case-branches perform the same actions. Check lines: 78, 91 Change-Id: I912657b129f90f03bbbb9d47d0d954db2c6c5e08 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175307 Reviewed-by: David Gilbert <freedesktop@treblig.org> Tested-by: Jenkins
2024-10-01loplugin:constantparamNoel Grandin
Change-Id: Ibf1f8b8c01333f87f8e8cd73ccb0d62f30fbcd2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174303 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-08-29tdf#161826 - Add uniform Glow effect for texts in shapesBalazs Varga
- Add new text Glow effect properties for shapes - Using TextGlowPrimitive for rendering uniform text glow in shapes - Add/allow new UI Glow Effect for texts in shapes on sidebar (Only for Impress/Draw and Calc) - Import/Export ooxml files with Glow effect on texts in shapes (Only PPTX/XLSX) - Import/Export odf files with Glow effect on texts in shapes - Add unit test for glow text attributes in ODF - Add uni tests for OOXML import/export Note: Also this patch effects on tdf#144061 - Effects: Allow GLOW to apply to Text (as we have for shapes) Change-Id: I16586c01654f197f532129e4e06aa2ef9f214395 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172216 Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de> Tested-by: Jenkins Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
2024-08-29Resolves: tdf#160675 reformat 'blanked' metricspinbutton after setting valueCaolán McNamara
click on background, set_text sets a blank for the content of the metric spin button, so explicitly reformat when a value is set afterwards. Change-Id: Idac3f805bcf1baad1cdeaa3caa1c48a976f2f738 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172591 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-08-19invalid cast from 'GtkToggleToolButton' to 'GtkToggleButton'Caolán McNamara
These are toolbar items, and not GtkToggleButton's so use the toolbar api here instead. The "ToolbarUnoDispatcher" thing is to auto dispatch uno:whatver when the toolbar items have names like that, these ones have custom handlers so that doens't really fit here. Change-Id: I93fc11bf364ba7ae145ff52bc78a1544c9bae412 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172047 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-16tdf#162491 tdf#125032 add hyphenation settings to sidebarLászló Németh
Add .uno:NoBreak to the Character sidebar panel to disable automatic hyphenation for selected words. The icon is enabled only on hyphenated words and words with disabled hyphenation. Add .uno:Hyphenate icon to the Character sidebar panel, with tooltip "Insert Soft Hyphen...", which opens the dialog for (semi-)automatic insertion of soft hyphens. Add paragraph-level hyphenation settings to the Paragraph sidebar panel. Only the toggle button icon "Hyphenation" is visible to enable hyphenation, if the paragraph is not hyphenated. If it's enabled, show all paragraph-level settings. These new sidebar controls allow adjusting paragraph layout and hyphenation quickly, like DTP software do. Note: to add icon to .uno:NoBreak, modify "Properties" of officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu. Note: it's possible, that high resolution icon sizes will need extra dispatcher calls (the draft is attached to the issue in the bug tracker). Change-Id: I292527589ed3a38e4400cfd97ea54cbc7ff56a44 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171883 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2024-07-17tdf#137525 Update ColumnValueSet (and others) to use push/popRMZeroFour
This patch updates the ColumnValueSet and some other parts of the drawing code to use the Push/Pop functions of RenderContext. Change-Id: I3fbdee9afa167facb45242bc8bad9a35758b3c0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165587 Reviewed-by: Hossein <hossein@libreoffice.org> Tested-by: Jenkins
2024-05-21tdf#69724 Allow to change default bullet symbols in UITibor Nagy
Change-Id: Ife700096fb55ebc752ae289398a36ee78b3e5ccb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167660 Tested-by: Jenkins Reviewed-by: Nagy Tibor <tibor.nagy.extern@allotropia.de> Tested-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-05-16tdf#161056 Show bullets used in document in bullets dropdownSamuel Mehrbrodt
Change-Id: I40cfc39501006146f7c6c04a1f3c7cf877c6f1c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167186 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2024-05-16tdf#146619 Drop unused 'using namespace com::sun::star'Gabor Kelemen
now that find-unused-includes was expanded with detecting these Change-Id: I9f21ad1a85c1e3178cad98464b2ba407d909b62d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167638 Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de> Tested-by: Jenkins
2024-05-11loplugin:ostr in svxNoel Grandin
Change-Id: Ia765a03e033acb82e367873380d289587ea87d6c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167449 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-05-07Sidebar: Direct update of FillStyleOliver Specht
FillStyle is directly updated to prevent deferred resize when additional controls are created. Change-Id: I48ed987971cf6c711af31d552e8d64fa9982a416 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165993 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2024-04-25Remove unused fieldsSamuel Mehrbrodt
Unused since f944648e0f5d52605a267ed50bba4bfc035aecc6 Change-Id: Id5f5a77df8afdf15d99989b86bb04179d86ae92b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166614 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@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-04-03tdf#146619 Drop unused 'using namespace' in: svx/Gabor Kelemen
Change-Id: Ic8b925a3ec55166a9d5da05827d2cb335943b665 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165542 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-03-21ITEM: Remove InvalidateAllItems()Armin Le Grand (allotropia)
I checked if this is used, but it can be replaced using Clear() -> all. This prevents that the whole array of Items in an ItemSet gets set to INVALID_POOL_ITEM. I also checked if INVALID_POOL_ITEM/IsInvalidItem is needed at all representing SfxItemState::DONTCARE but it is and still will need to be set for individual Items. At last checked if SfxItemState::UNKNOWN and ::DISABLED really need to be separate states, but indeed there are some rare cases that need that. To make things more consistent I also renamed SfxItemState::DONTCARE to SfxItemState::INVALID to better match Set/IsInvalid calls at ItemSet. The build showed a missing UT and led to a problem due to the hand-made ItemSet-like SearchAttrItemList. The state 'invalid' seems to be used as 'unused' marker. It should be changed to use SfxPoolItemHolder and not need that. For now, set by using an own loop to set to that state. Change-Id: Ifc51aad60570569a1e37d3084a5e307eed47d06c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165035 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-03-12lok: use locale units in dialogs and sidebarJaume Pujantell
When oepning tha same doucment with different locales, the dailogs and sidebar show units (cm/inch) of the first locale (or the locale used in preloading, en-US) for all the views. This patch changes the units used according to the LOK locale. Change-Id: I3d515873bde661f2d9048bbc405843e83134cca7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164589 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com> (cherry picked from commit 3ca938a25439d6f23bbd6830a96e5180ff94f757) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164619 Tested-by: Jenkins
2024-02-26tdf#159865 Revert "tdf#136905 NBB: let ValueSetWithTextControl set optimal"Justin Luth
...height This reverts my 24.2 commit 1876feb8a8805b2f80537e2828c152ccbdf67fe2 (as well as my initial attempt to fix it in 24.8). Change-Id: I70c3668393a13992f9ce489e86b07860218445b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163954 Tested-by: Justin Luth <jluth@mail.com> Reviewed-by: Justin Luth <jluth@mail.com>
2024-02-26tdf#108697 Allow modifying default bullet selectionSamuel Mehrbrodt
Allow to change bullets in configuration. Change-Id: Iab26118dd597417997d6f0a7355f516a4da97ee4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163735 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2024-02-24tdf#159865 tdf#136905 NBB: font looked too small in page size choicesJustin Luth
This fixes my 24.2 regression from commit 1876feb8a8805b2f80537e2828c152ccbdf67fe2 I considered reverting it, but decided to tweak the font size instead. If I reverted, the size of the choices was displayed in 16pt font. I wanted to keep the sizing as "scientific" as possible, but fixing the rounding issues didn't really make the font stand out as much as desired. In this case, my system font of 11 became 10 for the page size dialog, due to rounding, which is still a significant 10%. Although that still looks too small, it seems fairly close to the other button on the notebook bar, at least to my eyes. But it is definitely smaller/less clear than the "more option" button. Perhaps it has to do with the visible size of a font compared to the full size (with leading)? Fonts are often sized as 11/13 or 12/14 for example. Adding 20% to the font size makes it look about right. In my case, it ends up chosing a font height of 13. Change-Id: Ic0a7296aa74be542e2a38ce52cf5fd23e5d8c7f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163886 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2024-02-22fix ubsan use-after-freeNoel Grandin
caused by commit 8cd4cd31e9cffb593ccfba765fa28c2494a2d6f7 Author: AkshayWarrier <aksmen121@gmail.com> Date: Mon Jan 22 20:31:16 2024 +0530 tdf#157882 svx: Remove cap/corner styles and move arrowhead control to new row The ToolbarUnoDispatcher needs to destruct before the associated Toolbar. Shows up as vcl/source/app/salvtables.cxx:1278:1:runtime error: member call on address 0x51700010dc00 which does not point to an object of type 'SalInstanceToolbar'0x51700010dc00: note: object has invalid vptr 00 00 00 00 8c 03 03 00 00 00 00 00 80 43 4e 00 90 51 00 00 00 00 00 00 00 00 00 00 30 7e 9a 00 ^~~~~~~~~~~~~~~~~~~~~~~ invalid vptr SalInstanceToolbar::LinkStubMenuToggleListener(void*, VclWindowEvent&) vcl/source/app/salvtables.cxx:1278:1 void>::Call(VclWindowEvent&) const include/tools/link.hxx:111:45 void*) vcl/source/window/event.cxx:262:23 vcl/source/window/window.cxx:158:5 vcl/source/window/dockwin.cxx:407:13 vcl/source/outdev/vclreferencebase.cxx:38:5 include/vcl/vclptr.hxx:207:19 vcl/source/window/builder.cxx:811:23 vcl/source/window/builder.cxx:803:5 Change-Id: Id890fe431ab724db4bdf7ad6622b933044bd6ade Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163706 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-02-20tdf#157882 svx: Remove cap/corner styles and move arrowhead control to new rowAkshayWarrier
Change-Id: Ifa38ec7ba9969627ff26abe22c58d06ec373ecb1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162403 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2024-02-18ITEM: Rename for more control over SlotID usagesArmin Le Grand (allotropia)
Change-Id: I51585f1c15984a066262023184f668662853d20f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163556 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-02-12Resolves tdf#158531 - Connector lines for Keep Ratio settingHeiko Tietze
Icons taken from https://thenounproject.com/icon/lock-89649/ and https://thenounproject.com/icon/unlock-89647/ (licensed PD) Change-Id: I7efd25e83726ced7dee4f876cf4bb4c8f54408df Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160460 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2023-12-30tdf#146619 Recheck svx/ with IWYUGabor Kelemen
Change-Id: I99650b50587294c20b1e92270e541140d9ec9cae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161240 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
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-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-10cid#1546281 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1546278 COPY_INSTEAD_OF_MOVE cid#1546276 COPY_INSTEAD_OF_MOVE cid#1546247 COPY_INSTEAD_OF_MOVE cid#1546244 COPY_INSTEAD_OF_MOVE cid#1546243 COPY_INSTEAD_OF_MOVE cid#1546220 COPY_INSTEAD_OF_MOVE cid#1546209 COPY_INSTEAD_OF_MOVE cid#1546207 COPY_INSTEAD_OF_MOVE cid#1546206 COPY_INSTEAD_OF_MOVE cid#1546205 COPY_INSTEAD_OF_MOVE cid#1546197 COPY_INSTEAD_OF_MOVE cid#1546180 COPY_INSTEAD_OF_MOVE cid#1546172 COPY_INSTEAD_OF_MOVE cid#1546165 COPY_INSTEAD_OF_MOVE cid#1546164 COPY_INSTEAD_OF_MOVE cid#1546158 COPY_INSTEAD_OF_MOVE cid#1546151 COPY_INSTEAD_OF_MOVE cid#1546135 COPY_INSTEAD_OF_MOVE cid#1546132 COPY_INSTEAD_OF_MOVE cid#1546129 COPY_INSTEAD_OF_MOVE cid#1546128 COPY_INSTEAD_OF_MOVE cid#1546122 COPY_INSTEAD_OF_MOVE cid#1546117 COPY_INSTEAD_OF_MOVE cid#1546113 COPY_INSTEAD_OF_MOVE cid#1546106 COPY_INSTEAD_OF_MOVE cid#1546099 COPY_INSTEAD_OF_MOVE cid#1546091 COPY_INSTEAD_OF_MOVE cid#1546085 COPY_INSTEAD_OF_MOVE cid#1546069 COPY_INSTEAD_OF_MOVE cid#1546063 COPY_INSTEAD_OF_MOVE cid#1546062 COPY_INSTEAD_OF_MOVE cid#1546058 COPY_INSTEAD_OF_MOVE cid#1546056 COPY_INSTEAD_OF_MOVE cid#1546051 COPY_INSTEAD_OF_MOVE cid#1546040 COPY_INSTEAD_OF_MOVE cid#1546030 COPY_INSTEAD_OF_MOVE cid#1546028 COPY_INSTEAD_OF_MOVE cid#1546015 COPY_INSTEAD_OF_MOVE cid#1546001 COPY_INSTEAD_OF_MOVE Change-Id: Ib954c92a300fc323b29f27880fdf8bc46ed98862 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160520 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
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: svxStephan Bergmann
Change-Id: Ib5028b826a3f62303b9e0502af70ad62c578fbb1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158240 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-12Make NC_ constexpr-friendlyStephan Bergmann
...by moving the char8_t -> char reinterpret_cast out of any potential constexpr paths into a new TranslateId::getId. And demonstrate constexpr'ability by making the aCategories var in OApplicationIconControl::Fill (dbaccess/source/ui/app/AppIconControl.cxx) constexpr. (And there might be more such cases that could now be made constexpr.) Change-Id: I0b4e3292faf8f6b901f9b9e934e1aa6bf0f583ff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157862 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-03tdf#155756 sidebar properties not displaying height over 100Caolán McNamara
Change-Id: I5ea2441319e0d7c34ffdcd179d8a82738da4733f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157519 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-09-04tdf#154875 "Use slide background" is only for ImpressSamuel Mehrbrodt
Change-Id: I078437a1cff58b868f4db4b482ad2aff335dc965 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156514 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2023-09-04tdf#151188 Select correct fill type in sidebarSamuel Mehrbrodt
Change-Id: Ic123e6b21009cc57bf1c4b5f4edc6dcd277bae0a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156510 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2023-07-23tdf#154038 tdf#83618 fix wrong line spacing valueJim Raykowski
Impress and Writer seem to require different MapUnit values for fixed line spacing metric values to be correctly calculated. This patch initially sets the MapUnit unit value to Map100thMM, which is what it was before commit 849b837d1a3b185a8dd893a8f6eaed53605bcab1, which works for Impress. For Writer, the value is set to MapTwip. Change-Id: I49e9b80aa4d3fbda1f19101903d2a4459089024c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154665 Tested-by: Jenkins Reviewed-by: Jim Raykowski <raykowj@gmail.com>
2023-07-18tdf#136905 NBB: use label font in ValueSetWithTextControlJustin Luth
The label font is taken from the system settings, and doing this matched the "more options" button font as well as the nearby "margins" and "columns" as well as pretty much everything else in the notebookbar. I tested this by changing "Font Selection" in my Ubuntu Cinnamon to a flowery font. Prior to the patch it was a normalish font, but after the change it was using the flowery font. Change-Id: I2585e6aec31aa4195a2354337eb243e63c719ec0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154555 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-07-18tdf#136905 NBB: let ValueSetWithTextControl set optimal heightJustin Luth
There was no way to specify a "good font size" to use for .uno:AttributePageSize in the notebookbar. The font "resized to match to size of the box" which is hard-coded to aSize(250, 300). (Even if ValueSet::SetOptimalSize worked, it would set an inadequate height.) So it seems like the best thing to do is simply add a function that allows the box height to be modified. Using the fontsize from GetDefaultFont is not correct. Use the OS-defined label font size instead, which seems to be the most common choice - GetPushButtonFont would has also worked. I verified that the label font size is controled by the OS' font preference. The ability to define the box's optimal height is still (somewhat) necessary. It isn't good enough to just "use the system font size". I tested with an OS font size of 48 (instead of 11), and in that case the box height was too small (but with the font only using 4/9's of a 12pt space, even a 24pt font looked OK without adjusting optimal height). Change-Id: I0a0774dea9c2a6c21a8e84439318a94f39783413 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154286 Tested-by: Jenkins Reviewed-by: Justin Luth <jluth@mail.com>
2023-07-05Swap .uno:FontColor for .uno:ColorMaxim Monastirsky
Following tdf#105293, which left some UI elements unchanged. This also simplifies the sidebar, as .uno:Color is universal while .uno:FontColor works only with Writer text. It also benefits tdf#154270, as using the same command in the toolbar and the sidebar will keep their color in sync. Change-Id: Ia6e1ffef4012b6f8db4c9079d0b0c99a59887670 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154012 Tested-by: Jenkins Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2023-06-25cid#1532451 silence Iterator container mismatchCaolán McNamara
Change-Id: I8560f3e5c7820fef8e27433321c97fc3a0b29746 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153552 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-06-24CID several. Use ctor 'from other' instead 'first..last'Regina Henschel
This covers CID#1532461, CID#1532462, CID#1532464, CID#1532467, CID#1532479. Now solutions without iterator are used. In all cases constructions like maColorStops = basegfx::BColorStops(rGradient.GetColorStops().begin(), rGradient.GetColorStops().end()); are replaced with solutions like maColorStops = rGradient.GetColorStops(); And instead of constructions like aColorStops.emplace_back(maColorStops.front().getStopOffset(), aStartBColor); aColorStops.insert(aColorStops.begin(), maColorStops.begin() + 1, maColorStops.end() - 1); aColorStops.emplace_back(maColorStops.back().getStopOffset(), aEndBColor); now it is like aColorStops = maColorStops; aColorStops.front() = basegfx::BColorStop(maColorStops.front().getStopOffset(), aStartBColor); aColorStops.back() = basegfx::BColorStop(maColorStops.back().getStopOffset(), aEndBColor); Change-Id: I66662d2286e7707b205c58977bc3f850b2a49dda Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153555 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-06-23tdf#155901 MCGR: preserve first and last gradient stop tooRegina Henschel
Error was, that only the in-between gradient stops were preserve. First stop was set with fixed offset 0, last stop with fixed offset 1. The offsets of first and last gradient stop of the original gradient were lost. Now in all cases (hopefully) the complete gradient stops vector is preserved and the original offset is used, if e.g. the user changes the color. For calculating transparence the indirect way over Color is removed. Instead percent is directly transformed to the 0..1 values of BColor. That avoids rounding errors. Change-Id: Icdf699a6c2e9c6289d2f77033858448e58396a60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153395 Tested-by: Jenkins Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
2023-05-15MCGR: consolidations/cleanups for changes so farArmin Le Grand (allotropia)
Change-Id: I85cf40e4803b0485bb40349d8e81adc8123666c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151706 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-04-21MCGR: Reduce diverse GradientStyle enums to single UNO API oneArmin Le Grand (allotropia)
Change-Id: Ie0cd26a308a75ddead9451c53e874a39cc6eeb63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150705 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-04-19MCGR: 2nd corrections/adaptions to MCGRArmin Le Grand (allotropia)
Adapted handling of 'border' argument from our gradients for oox export, so that it looks the same. Also added quite some cases to peserve in-between GradientStops for current UI implementations to be able to edit the gradients as usual without losing the in-between GradientStops. While we will not be able to modify these, we are at least able to modify all the other gradient attributes, including start/endColor. Done this for TransparencyGradients, too. Also moved more stuff to the gradient tooling in basegfx. Change-Id: I6e94011bbf3715baa1401ab97e5b59811298342f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150577 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2023-04-18reduce copy and paste a bitCaolán McNamara
Change-Id: I65cb71d44828e0c0d738c4192c39a697513bc6e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150549 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2023-04-18Resolves: tdf#154870 label grayed out when it should not beCaolán McNamara
Change-Id: I1d84434622f09e6e91bea550f5dc0321cb7d89ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150548 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2023-04-02Avoid conversions between OUString and OString in VCLMike Kaganski
Standardize on OUString, which is the main internal string class. Convert from/to OUString only when communicating with respective external APIs. Removes about 200 conversions from the code. Change-Id: I96ecee7c6fd271bb76639220e96d69d2964bed26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149930 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-03-19MCGR: Model data changes for ColorStepsArmin Le Grand (allotropia)
Added tooling replaceStart/EndColor to allow simple transition for code that does not immediately adapt to multi color gradients. Also added createColorStepsFromStartEndColor for the same purpose. Adapted XGradient to no longer have Start/EndColor at all, but only use ColorSteps. Adapted all usages of XGradient to no longer use Get/Set/Start/EndColor, but access the ColorSteps instead. Replaced quite some XGradient constructors that used XGradient() as Start/EndColor since this is already the default. Adapted ColorBlending to black AKA Start/EndIntens in XGradient to work now on all ColorSteps in the required linearly-scaled manner. UNO API changes: Added com::sun::star::awt::ColorStep as basic data element that holds a pair of Offset and Color. Added com::sun::star::awt::ColorStepSequence to handle an array of sorted entries. Added com::sun::star::awt::Gradient2 derived from com::sun::star::awt::Gradient, extended by the needed com::sun::star::awt::ColorStepSequence. Added MID_GRADIENT_COLORSTEPSEQUENCE to UNO API to provide access to ColorSteps directly. Adapted XFillGradientItem::QueryValue/PutValue to make use of new UNO API data structures. To do so, added tooling methods for data transition: - fillColorStepSequenceFromColorSteps - fillGradient2FromXGradient - fillColorStepsFromAny - fillXGradientFromAny and adapted - case '0' (all data) - MID_FILLGRADIENT - MID_GRADIENT_COLORSTEPSEQUENCE - MID_GRADIENT_START/ENDCOLOR to make use of these. Tested usage of these in the office. Renamed from GradientStep to GradientStop after discussions with members on the list to make this closer related to other norms/definitions. Also renamed classes and class members to better reflect to GradientStop, so grepping/finding will be easier (e.g. 'Color' just exists pretty often, but 'StopColor' is more precise). Changed the used UNO API class for reprsenting the Color to better reflect to ranges [0.0 .. 1.0] and usage of RGB. Change-Id: I1eeb3e97e81d6785967615d1ff256551fc3b882d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148849 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>