summaryrefslogtreecommitdiff
path: root/cui/source
AgeCommit message (Collapse)Author
2024-05-10replace createFromAscii with OUString literals in SvxPathTabPageNoel Grandin
Change-Id: I831bc78f4934c7d1c137ad70c7bb189d75237e88 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167473 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-10replace createFromAscii with OUString literals in OfaTreeOptionsDialogNoel Grandin
Change-Id: Ibe4de7e2ac6f0f00ba495ecbd18d97154283169c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167474 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-10replace createFromAscii with OUString literals in SvxMacroAssignDlgNoel Grandin
Change-Id: I360d1dc46909f904ac9f984b2f06bb80f4a72c82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167472 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-07tdf#132599 sw schema xmloff: add hyphenation-keep-type='always'László Németh
Add new hyphenation option to limit hyphenation of the last full line of the hyphenated paragraph. Move also loext:hyphenation-keep-type to paragraph-properties, following the associated hyphenation-keep. Note: value "always" is defined by CSS 4 hyphenate-limit-last, see https://www.w3.org/TR/css-text-4/#hyphenate-line-limits. Follow-up to commit 6e8819f29b6051a0e551d77512830539913ec277 "tdf#132599 cui offapi sw xmloff: add hyphenation-keep-type". Change-Id: I2121269205fc89fb5367dccdca00195aac68f3e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167232 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2024-05-07loplugin:ostr in cuiNoel Grandin
Change-Id: I593eb3c02768423fc8cea8d93c112655860228d9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167258 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-05-07tdf#145614 Convert #define to enumZainab Abbasi
Change-Id: I50cad24e9cbda04cfe1209d824cad61da2287def Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166191 Tested-by: Jenkins Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-05-06tdf#159375: remove initialization on Tools>OptionsBayram Çiçek
- Initializing some dialogs at the startup of Options makes it opening very slow on some low-power systems. - This patch removes this initialization. This means, all dialogs will be initialized at the time of search. Therefore, we should wait a bit longer when typing on the search bar to get the results... - remove the default parameter "nNumberOfNode" from initializeFirstNDialog() - rename initializeFirstNDialog() to initializeAllDialogs() Change-Id: I4fd9c5673f7edecfe6a6621b6018d5d405f112a6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167023 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de> Reviewed-by: Moritz Duge <moritz.duge@allotropia.de>
2024-05-04WaE: C6011 Dereferencing NULL pointer warningsCaolán McNamara
Change-Id: I95bc5dae73f6e9a0ae54b1570df51d6d37062695 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167129 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-05-03tdf#160833 sw DoNotMirrorRtlDrawObjs: add UI in cui/Miklos Vajna
The UI code at lcl_ChangeResIdToVerticalOrRTL() was aware that SwAnchoredObjectPosition::CalcRelPosX() mirrors the position when the anchor paragraph is RTL, so swapped the "from left" label to a "from right" label. Don't do this when the compat option is enabled, so not only we render correctly but the UI now correctly explains why we came up with the correct position. Change-Id: I479ed1f085b249d10be47b66d7a656dc1bd4f936 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167031 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-04-29Drop uses of css::uno::Sequence::getConstArray in cppuhelper .. cuiMike Kaganski
where it was obsoleted by commits 2484de6728bd11bb7949003d112f1ece2223c7a1 (Remove non-const Sequence::begin()/end() in internal code, 2021-10-15) and fb3c04bd1930eedacd406874e1a285d62bbf27d9 (Drop non-const Sequence::operator[] in internal code 2021-11-05). Change-Id: Ia2b60af973183bbe79656e67b5e37d7efa39a308 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166817 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-28tdf#159625: fix "allow to split paragraph"Julien Nabet
2 pbs here: 1) bug described in the bugtracker, the uncheck isn't kept => just remove all the buggy GetOldItem stuff 2) after unchecked the option then saving the file and reloading the file, the option is still checked => change the buggy rOutSet->Put( SvxFormatSplitItem( eState == TRISTATE_FALSE, _nWhich ) ); to rOutSet->Put( SvxFormatSplitItem( eState == TRISTATE_TRUE, _nWhich ) ); In fact, I just mimicked the code used for "keep paragraphs" which works well. Also change the QA test since "allow to split paragraph" is checked by default so if the QA simulates a click on it, we expect the value to be false when dialog is opened again Change-Id: I947feb02e0c282304621a252ad5e4c168c1d295a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166774 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2024-04-22use more OUString literalNoel Grandin
convert some functions which merely create an OUString on the fly from a char literal to 'constexpr OUString' literals Change-Id: I617490baf2d976291b324cc991b59cd18f4b242c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166392 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-19loplugin:unusedfieldsNoel Grandin
Change-Id: I43b7a553177bbbdeebe37f7d7e63dfcb2ae70778 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166292 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-17tdf#159395-LanguageTool use correct default URL when username/APIkey setLeonid Ryzhov
Change-Id: I31e1c2f1dfd96d87f60b6be1e5abce4837827a76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165079 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-17Drop FRound, and use generalized basegfx::froundMike Kaganski
Change-Id: I7447e649dc3ef4e51242f69c7486a3e84e103d2e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166159 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-15Generalize basegfx::fround for templated return typeMike Kaganski
And use it when assigning to tools::Long Change-Id: I0814d7bac9cdd48191ba69c64e3b12a4973b3417 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166071 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-04-11tdf#132599 cui offapi sw xmloff: add hyphenation-keep-typeLászló Németh
Support XSL attribute "column" and CSS 4 attribute "spread", stored in loext:hyphenation-keep-type, to give better control over hyphenation-keep. E.g. spread: both parts of a hyphenated word shall lie within a single spread, i.e. when the next page is not visible at the same time (e.g. the next page is not a right page of a book). – css::style::ParaHyphenationKeep is a boolean property now, importing hyphenation-keep = "page" as true. – type of ParaHyphenationKeep, including the new non-ODF types is stored in the new ParagraphProperties::ParaHyphenationKeepType. – default value of ParaHyphenationKeepType is COLUMN for interoperability. – Add checkboxes to Text Flow -> Hyphenation Across in paragraph dialog: * Column (previously: Hyphenate across column and page) * Page * Spread – enabling/disabling them follows XSL/CSS 4/loext, i.e. possible combinations: * No Hyphenation across (hyphenation-keep = "page" and loext:hyphenation-keep-type = "column") * Hyphenation across [x] Column (hyphenation-keep = "page" and loext:hyphenation-keep-type = "page") * Hyphenation across [x] Column [x] Page (hyphenation-keep = "page" and loext:hyphenation-keep-type = "spread") * Hyphenation across [x] Column [x] Page [x] Spread (hyphenation-keep = "auto") – Add ODF import/export – Update DOCX import – Add ODF unit tests Note: recent implementation depends on widow settings: disabling widow handling allows hyphenation across columns and pages not only in table cells. Note: RTF import-only, but not used bPageEnd has been renamed to bKeep. Depending on the RTF test results, likely it will need to disable the layout change, e.g. GetKeepType()=ParagraphHyphenationKeepType::AUTO, if PageEnd uses obsolete hyphenation rule, i.e. shifting only the hyphenated word to the next page, not the full line. More information: – COLUMN (standard XSL value, defined in https://www.w3.org/TR/2001/REC-xsl-20011015/slice7.html#hyphenation-keep) – SPREAD and ALWAYS (CSS 4 values of hyphenate-limit-last, equivalent of hyphenation-keep, defined in https://www.w3.org/TR/css-text-4/#hyphenate-line-limits). Follow-up to commit 9574a62add8e4901405e12117e75c86c2d2c2f21 "tdf#132599 cui offapi sw xmloff: implement hyphenate-keep" and commit c8ee0e8f581b8a6e41b1a6b8aa4d40b442c1d463 "tdf160518 DOCX: import hyphenation-keep to fix layout". Change-Id: I3ac6d9e86d0ed1646f105de8607c0e8ebc534eaa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165954 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2024-04-10New Expert Configuration setting to not offer Safe Mode in the UIStephan Bergmann
/org.openoffice.Office/Common/Misc/OfferSafeMode (default: true), controlling: * "Help - Restart in Safe Mode..." menu entry * "Restart LibreOffice to enter safe mode" checkbox in the "Crash Report" dialog * "To start temporarily with a fresh user profile,..." tip of the day (It does not control the --safe-mode command line argument, though.) Change-Id: I66084448a1ba9427aaafef630187b4bf25219a2c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165926 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-04-09Use some nicer assert stringGabor Kelemen
Change-Id: I49b5950a63b7c1decb07f3093e8962fc3eada0bc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165569 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2024-04-05tdf#146619 Drop unused 'using namespace' in: cui/Gabor Kelemen
Change-Id: I311423b045a504b268cffdf740db1fe82aea2810 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165568 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2024-04-05cid#1596116 Uninitialized scalar fieldCaolán McNamara
Change-Id: I6a4803ae079786880b5a8ff040f1215657604476 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165810 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-04-04loplugin:unusedmethodsNoel Grandin
Change-Id: I19f466a272c821185bea4b45efd34392e525c0d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165785 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-02tdf#145538 Use range based for loopsRMZeroFour
As part of the efforts in tdf#145538 to replace regular for loops with range-based for loops in the codebase where suitable, this commit does so in SvxNumOptionsTabPage::PageCreated. PS-2: Renamed a variable. Change-Id: I7ec813a3c6fead3246137a2841c9f3e80f5adc63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165594 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-03-30tdf#145081 Line spacing style type "Fixed" is not on the style sheet dialogGlen Campbell
Change-Id: I0dd668a2bedb16fe39793c5350c1d5a251949a65 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165400 Reviewed-by: Vernon, Stuart Foote <vsfoote@libreoffice.org> Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com> Tested-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2024-03-29Resolves: tdf#160159 update spellchecking area colors when style changesCaolán McNamara
so for the case of using "automatic" for the document background the spelling checking textbox background area updates to match Change-Id: I8723afb946176596b0a5fa43aa3bb3c036dee12c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165554 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-03-28-Werror,-Wunused-parameterStephan Bergmann
Change-Id: Ic7d32200332554b0a615120f69e4c86e612450c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165466 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-03-27Resolves tdf#159573 and tdf#137931 - WhatsNew or Welcome dialogHeiko Tietze
To test the new dialog, change org.openoffice.Setup > Product > ooSetupLastVersion to some lesser value for the WhatsNew dialog or clear the entry for the Welcome version. Change-Id: Iec6de50edba0e5430e82f1db85e61d1e4501771d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163739 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2024-03-26ITEM: Use SfxPoolItemHolder in SvxSearchDialogArmin Le Grand (allotropia)
I replaced that SfxPoolItem* in SearchAttrInfo with a much safer SfxPoolItemHolder and adapted and simplified used code - it does not need to take care of Item lifetime/Cloning itself. That works well. I did not find out why that 'invalid' state is used in the SrchAttrInfoList, but seems to be needed. Thus I keep this for now as it is (it can be all expressed/used using SfxPoolItemHolder, too). Change-Id: I4b769f43128cb2e25153919f7652b2f032393123 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165167 Tested-by: Jenkins Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
2024-03-26Hide "Add and resize" button from numbering and bullets dialog for ONLINEDarshan11
- Image tab had "Add and resize" option for numbering and bullets dialog - which is not need in online - so we will just hide that browseBtn for online Change-Id: Ib87f1e7ae7e6df5256ab77122b477695a45cf441 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164587 Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> (cherry picked from commit 08a5c1352f4d65c180995cdfca5c981f88035901) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164818 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165215 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-03-22improve loplugin:staticmethodsNoel Grandin
Some of the exclusions were too aggressive. Restrict them to only the important classes, which exposes some more places this plugin applies. Change-Id: I1b2d1fb24391adc71ed0984f94168f61a149479f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165154 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
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-20tdf#158885 cui offapi sw xmloff: fix hyphenation at stem boundaryLászló Németh
Add new hyphenation option "Compound characters at line end", equivalent of libhyphen's COMPOUNDLEFTHYPHENMIN, to limit bad pattern based hyphenation of compound words using morphological analysis of Hunspell. * Add checkbox to Text Flow in paragraph formatting dialog window * Store property in paragraph model: css::style::ParagraphProperties::ParaHyphenationCompoundMinLeadingChars * Add ODF import/export (loext:hyphenation-compound-remain-char-count) * Add ODF unit tests Note: slower Hunspell based hyphenation is used only if ParaHyphenationCompoundMinLeadingChars >= 3 (we assume that libhyphen hyphenation patterns cover the smaller distances correctly). Hunpell based hyphenation doesn't introduce new hyphenation breaks, only detects the stem boundaries from the libhyphen based hyphenation breaks. Follow-up to commit c899d3608d30f3ab4c2bc193c1fcd765221614a4 "tdf#158885 sw: don't hyphenate right after a stem boundary", replacing hyphenation zone dependence with the new "Compound characters at line end". Note: preset COMPOUNDLEFTHYPHENMIN values aren't loaded yet from hyphenation dictionaries. Note: the suffix of the last stem of the compound is always hyphenated, i.e. the distance limits only hyphenation inside the stem, not inside its suffix or at the end of the stem before the suffix. Change-Id: I46a0288929a66f7453e3ff97fbc5a0c6a01f038f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164983 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
2024-03-04tdf#132599 cui offapi sw xmloff: implement hyphenate-keepLászló Németh
Both parts of a hyphenated word shall lie within a single page with ODF paragraph setting fo:hyphenation-keep="page". The implementation follows the default page layout of MSO 2016 and newer by shifting the bottom hyphenated line to the next page (and to the next column, see last note). Note: this is a MSO DOCX interoperability feature, used also in DTP software, XSL and CSS. * Add checkbox/combobox to Text Flow in paragraph dialog * Store property in paragraph model (com::sun::star::style::ParagraphProperties::ParaHyphenationKeep) * Add ODF import/export * Add ODF unit tests New constants of com::sun::star::text::ParagraphHyphenationKeepType, containing ODF AUTO and PAGE (borrowed from XSL), and for the planned extension ParaHyphenationKeepType of ParagraphProperties: – COLUMN (standard XSL value, defined in https://www.w3.org/TR/2001/REC-xsl-20011015/slice7.html#hyphenation-keep) – SPREAD and ALWAYS (CSS 4 values of hyphenate-limit-last, equivalent of hyphenation-keep, defined in https://www.w3.org/TR/css-text-4/#hyphenate-line-limits). Note: the implementation truncates only a single hyphenated line, like MSO does: the pages can end in hyphenated lines (i.e. in the case of consecutive hyphenated lines), but less often, than before. Clean-up hyphenation dialog by collecting "Don't hyphenate" options at the end of the hyphenation settings, and negating them (similar to MSO and DTP), adding also the new option "Hyphenate across column and page": [x] Hyphenate words in CAPS [x] Hyphenate last word [x] Hyphenate across column and page Note: ODF fo:hyphenation-keep has got only "auto" and "page" attributes, while XSL defines also "column". Because of the interoperability with MSO and DTP, fo:hyphenation-keep="page" is interpreted as XSL "column", avoiding hyphenation at the end of column, not only at the end of page. Change-Id: I5c6b7adc0671a5a790568e7bf1d33256e607f85f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164158 Tested-by: László Németh <nemeth@numbertext.org> Reviewed-by: László Németh <nemeth@numbertext.org>
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-25Create an UNO service to do the cui symbol lookup in vclNoel Grandin
which means I can remove one usage of gb_Library_set_plugin_for, which is blocking linking the cui module into --enable-mergelibs=more Change-Id: Ic6cd48377627f94747037c7247a1cd398738b390 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163820 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
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>
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-02-05tdf#159476 Remove experimental status from Basic IDE entry in Options dialogRafael Lima
Change-Id: Icbc9d131d90e639490f6dfd896565c994a17b172 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162829 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2024-02-04cid#1455212 Uncaught exceptionCaolán McNamara
and cid#1401342 Uncaught exception Change-Id: I77c2303ceb25301d85bfc9f8f6dc9eb8f4c4494a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162945 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-02-04cid#1591486 Logically dead codeCaolán McNamara
since: commit 93c4bfc96acf7f387120ff05883068d358a608c1 Date: Thu Jan 25 10:29:47 2024 +0200 make writer databases dialog async Change-Id: Ic67a7b5313e1dfad9c34fc3bf05ca808af29ceba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162944 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-31move CharMap out of cuiCaolán McNamara
remove CUI_DLLPUBLIC from stuff which is not exported then drop the cui/include dir which is then empty and the places we link to cui where we now don't need to and restore cui back to a lib containing stuff that doesn't need to be explictly linked to in keeping with original #i106421# idea Change-Id: I21894e6f8529dd3306df345fb52dbf5009015f3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162798 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-31move SvxNumberingPreview out of cuiCaolán McNamara
the point of cui was to have no headers, so move this SvxNumberingPreview out of cui and into svx Change-Id: I83edbcdc8d8b95dbea734bdef4a93f6ec8ee50e6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162748 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-30tdf#151352 keep a reference to the parentCaolán McNamara
and use that in the dtor instead of a pointer. FWIW the XWindow isn't actually a vcl::Window in the Gtk case, so VCLUnoHelper::GetWindow doesn't do anything there. But using an XWindow gives a safe view wrt life cycle. Change-Id: I4d0fd707ea931a76d6f87f434f7ece8df066785c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162744 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-30make writer databases dialog asyncNoel Grandin
Change-Id: I9f3c3bc3c555ef8a115258ff6d186ceeead3cc99 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162556 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-01-29loplugin:unnecessarymethodsNoel Grandin
Change-Id: I3bc2bde431dc71d4a01f7e314c67be31271be9e8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162681 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-01-28Simplify massively over-engineered compatibility optionsMike Kaganski
They seem to be designed with multi-dimensional flexibility in mind; it is stored as an array of lists, each having a name and a module. The name may mean a filter. It may have a special name "_user" with unclear meaning. But it only ever used a single item in the array, named "_default", in a single module (swriter). Everything else was only read into a hidden listbox in Compatibility dialog, and never shown nor used. Make ir much simpler. Just use the "_default" item. It is possible to expand it later, if needed; but the previous complexity was bad for maintenance and adding new options. Translatable descriptions of the options were moved from UI file to sw/inc/strings.hrc, and used in a structure that clearly maps them to respective identifiers, to avoid fragile hidden dependency on order of different lists. Change-Id: I78ac5add8a872613e1fb388e4b8cc4fbf4362adf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162651 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.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-26Don't export printer name & config in privacy modeSamuel Mehrbrodt
Don't export printer name & printer config when RemovePersonalInfoOnSaving is enabled, as it might contain sensitive data such as printer location. Add an option to export printer settings even when RemovePersonalInfoOnSaving is enabled. Change-Id: I3d2ca91ad2032050c919d382c11c9ceabf331770 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162577 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>