summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-11-07loplugin:fieldcast in xmloffNoel Grandin
Change-Id: Ic975c6344edb03e8bb8283a627fb70e05ca76239 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159075 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07loplugin:fieldcast in vclNoel Grandin
Change-Id: I699783305355c49854307cc83ec1e2e9a94cc326 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159076 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07Update git submodulesMichael Stahl
* Update helpcontent2 from branch 'master' to 798773a4ad50b9311758a4ed2275f2f4ff53a3e0 - tdf#146386 helpcontent2: FTP UI is removed Change-Id: Ie2d38acdf570644dbd087fd14e9485f263bdbb7b Reviewed-on: https://gerrit.libreoffice.org/c/help/+/159067 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.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-11-07Pass XInteractionHandler to hasTrustedScriptingSignature instead of a boolMike Kaganski
This allows to use the same interaction handler there, as used in DocumentMacroMode::adjustMacroMode. hasTrustedScriptingSignature used to find its own interaction handler; and that would conflict with e.g. ODatabaseModelImpl::adjustMacroMode_AutoReject, which passes nullptr to adjustMacroMode, with intention to not show any UI; but with signed macros (see tdf#97694), the UI would still appear. Change-Id: Ia209f96bef67dccfe1da23c4d172ac47497f8eb1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159070 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07Add a description commentMike Kaganski
Basically describing commit 71c6f438cecc3ce5e8060efe1df840652885701c (tdf#129311 don't allow temporary trusted certs, 2019-12-17). Change-Id: I4d947014b09412638560e9249f242cf6ff222cc2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159069 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07use more TypedWhichIdNoel Grandin
Change-Id: Ic52321ba38589a396a52d95454524ab8985cbafd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159060 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07use more TypedWhichIdNoel Grandin
Change-Id: I37683d59e4994546ad4591d213b825ab080940eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159059 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07tdf#158083: RTF: drop export for \pgdsctblVasily Melenchuk
This table is not standard extension to RTF format. It is not described in RTF specification and even is not used by Writer on import these days. Change-Id: I52f27dfd30877d461ad535b7847f40dd4c6f4ea5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158986 Tested-by: Jenkins Tested-by: Gabor Kelemen <kelemeng@ubuntu.com> Reviewed-by: Gabor Kelemen <kelemeng@ubuntu.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-11-07make this a more straight forward yes/no questionCaolán McNamara
instead of an ok/cancel, and default to no Change-Id: If86ca1b29d0dd91018fdc8edd6482a6d9ef5c0e2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159068 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-07resave with newer glade versionBalazs Varga
Change-Id: Id2c8977d6ab9d0632ac0350a78e52edba2280f4d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158988 Tested-by: Jenkins Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
2023-11-07curl: mitigate migration to OpenSSL on LinuxMichael Stahl
The problem is that curl 8.3.0 removed the NSS backend, so we now have no other choice than to use the bundled OpenSSL on Linux. Currently any curl https connection fails with: CurlSession.cxx:963: curl_easy_perform failed: (60) SSL certificate problem: unable to get local issuer certificate Apparently this requires manually telling curl which CA certificates to trust; there is a configure flag --with-ca-bundle but that is useless as it tries to load the file relative to whatever is the current working directory, and also did i mention that there are at least 3 different locations where a Linux system may store its system trusted CA certificates because ALL ABOUT CHOICE. So add a new header with an init function to try out various file locations listed in this nice blog article and call it from way too many places that independently use curl. https://www.happyassassin.net/posts/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ TODO: perhaps bundle a cacert.pem as a fallback in case the system chose to innovate by putting its certificates in yet another unexpected place (regression from commit c2930ebff82c4f7ffe8377ab82627131f8544226) Change-Id: Ibf1cc0069bc2ae011ecead9a4c2b455e94b01241 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158915 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-07Rename variable: The UI is not only to "add" author (i.e., modify config)Mike Kaganski
It is mainly to allow macro execution for this unknown certificate once. The UI will even disable the option to add, when the config is read-only. Change-Id: Iebc526c23572dc7c0e94fac79fafc8b402d451c3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159051 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07getCurrentMacroExecMode returns sal_Int16Mike Kaganski
And that conforms the IDL definition of css::document::MacroExecMode Change-Id: I78ebfa94eb50552e7f4ecf3d64a0ac0556c56867 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159029 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07Fix a typoMike Kaganski
Change-Id: I01dae264822c5394cabbb5cc4f7d4cb63190d23e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159030 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07use more TypedWhichIdNoel Grandin
Change-Id: If76b02a20b01624c2cc0aa5e3c310aa1dd930c01 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159058 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07use more concrete *PoolItem types in SwLanguageIteratorNoel Grandin
rather than casting Change-Id: Ic134c30490fea7ae42bbf3194532ae0aad4c61c9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159057 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07warn about exotic protocols as wellCaolán McNamara
Change-Id: I50dcf4f36cd20d75f5ad3876353143268740a50f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151834 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-07loplugin:unnecessaryparenStephan Bergmann
Change-Id: Ic236de610c956c81f7eb8b0c27cee0b0ed6910ed Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159055 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-07libcmis: fix regression setting wrong type of CURLOPT_SEEKFUNCTIONMichael Stahl
Change-Id: I45421bbe13626aa843380e77f589e793328f99d4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159010 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-07sw floattable, insert UI: fix default frame width when inserting a new oneMiklos Vajna
Insert -> Frame -> Frame presented a dialog which stated the width of the new frame will be 2cm, but the width was ~zero. This is a regression from commit 9da7b1592e010928c26c43ee93b91cdd66403985 (sw: remove all uses of MM50 with (added) o3tl::toTwip, 2021-07-23). Previously the code worked because the 2cm was speficified as MM50*4 (283*4=1132 twips), and we compared this to the 2cm from the UI, which had no rounding errors (283.46456692913387*4=1134 twips), and this 1132 vs 1134 meant the dialog put the unchanged size to the output item set. Now we don't have rounding errors anymore, so we have 1134 everywhere, which means the dialog doesn't specify a default size, but no other code would do it, resulting in a frame with minimal width, which is clearly not wanted. Fix the problem by checking if this will be a new frame, and if so, the dialog should send the default size to the caller, even if the user didn't customize the size. This restores the lost 2cm default width while keeping the rounding improvements. This requires running the test in its own process, because the measurement unit is only loaded once from the config and the rounding error is not hit with the default inches. Change-Id: I9a5945fdd0e5cd64ff8bd84f95f11be5277b8d18 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159050 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-11-07Update libxmlsec to 1.3.2Miklos Vajna
Keep external/xmlsec/old-nss.patch.1 for now, though the baseline has been updated to RHEL 8 in the meantime, so probably it's not needed in practice. Change-Id: I4730f71f45937770ac3f78182f3f65eed64b5a6a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159012 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2023-11-07specify the reason for listing zxcvbn-c among build toolsSarper Akdemir
Change-Id: I814cebc6e8ca4815c055ed6f524bfebf08611ccc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159017 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-11-07gtk4 a11y: Map states to corresponding GtkAccessibleStateMichael Weghorn
Set those states that Gtk handles as `GtkAccessibleState`, see documentation at [1]. For the LO a11y states, the Gtk 4 a11y API differentiates between three different enums/ways of handling those: * `AccessibleProperty`, for which handling was added in the previous commit, Change-Id Ic033e66dd89021defca449bbe2251102bbd61015, "gtk4 a11y: Map states to corresponding gtk a11y properties" * `GtkAccessibleState`, for which this commit implements the handling * `GtkAccessiblePlatformState`, for which handling was implemented in `lo_accessible_get_platform_state` in commit 341ff232aec77c2b46325389da933315613b6f2d Author: Caolán McNamara <caolanm@redhat.com> Date: Mon Mar 20 20:37:15 2023 +0000 gtk4: get a11y to say hello world already. [1] https://docs.gtk.org/gtk4/enum.AccessibleState.html Change-Id: If22725dc2ccab5f73518e4171209a80a9c4df6d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159006 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07gtk4 a11y: Map states to corresponding gtk a11y propertiesMichael Weghorn
For those states in `com::sun::star::accessibility::AccessibleStateType::EDITABLE` that have a corresponding `GTK_ACCESSIBLE_PROPERTY_*`, set that property when creating a new `LoAccessible`. This e.g. makes Accerciser show the "multiline" and "multi selectable" AT-SPI states for a Writer paragraph when using the gtk4 VCL plugin. State updates are not handled yet, since a11y event handling is currently not implemented in the gtk4 VCL plugin yet. Change-Id: Ic033e66dd89021defca449bbe2251102bbd61015 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159005 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07qt a11y: Map AccessibleStateType::INDETERMINATE to Qt equivalentMichael Weghorn
`QAccessible::State` has a `checkStateMixed` state flag [1] that matches what `AccessibleStateType::INDETERMINATE` is for, and Qt's AT-SPI adapter maps that to the AT-SPI equivalent, `ATSPI_STATE_INDETERMINATE`, so add the corresponding mapping. [1] https://doc.qt.io/qt-6/qaccessible-state.html [2] https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/accessible/linux/qspi_constant_mappings.cpp?id=c5d9e4a7a78b82ed31e5225c169de4718dfe4f05#n41 Change-Id: Ic16f50344040f3d4ff7ad4ef0002abf5a7ae3dcc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159004 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07qt a11y: Set passwordEdit state for PASSWORD_TEXTMichael Weghorn
The Qt API doesn't have a separate role to distinguish password edits from other text edits, but has a `passwordEdit` state. Set that state for objects that have role `AccessibleRole::PASSWORD_TEXT`. With this in place, password entries, e.g. the one in the "Tools" -> "Options" -> "Security" -> "Password for Web Connections" -> "Master Password" dialog, are exposed via the `ATSPI_ROLE_PASSWORD_TEXT` role with the qt6 VCL plugin on Linux, because Qt's AT-SPI adapter takes the `passwordEdit` state into account when mapping the Qt a11y roles to AT-SPI ones. [1] [1] https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/accessible/linux/atspiadaptor.cpp?id=c5d9e4a7a78b82ed31e5225c169de4718dfe4f05#n1637 Change-Id: Icb3f0935e703e2786c5704007cad7eea9070f8a5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158987 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07gtk4 a11y: Map PASSWORD_TEXT role to gtk text box roleMichael Weghorn
This is in line with what the `GtkPasswordEntry` doc [1] says: > `GtkPasswordEntry` uses the `GTK_ACCESSIBLE_ROLE_TEXT_BOX` role. Note however, that gtk's AT-SPI bridge has specific code to map that to AT-SPI's `ATSPI_ROLE_PASSWORD_TEXT` for `GtkPasswordEntry` [2], which won't apply for any custom LO widgets. Currently, LO uses `GtkEntry` for password entries for gtk4 as well, e.g. the one in the "Tools" -> "Options" -> "Security" -> "Password for Web Connections" -> "Master Password" dialog, so those currently have an AT-SPI role of `ATSPI_ROLE_TEXT` for gtk4, while it is `ATSPI_ROLE_PASSWORD_TEXT` for gtk3. (That's independent of this change, since a native `GtkEntry` is used there. Changing this to use `GtkPasswordEntry` instead of `GtkEntry` for the gtk4 case should cause that to use `ATSPI_ROLE_PASSWORD_TEXT` as well.) [1] https://docs.gtk.org/gtk4/class.PasswordEntry.html#accessibility [2] https://gitlab.gnome.org/GNOME/gtk/-/blob/fe4b7a5159e8cc3e4918ad1829d71ff39edd5ba7/gtk/a11y/gtkatspiutils.c#L308-310 Change-Id: Iec6c8685f017b565553fbc63b4403484be20ed1a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158984 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07tdf#135236 a11y: Notify a11y layer of WeldEditView sel changeMichael Weghorn
Extend `WeldEditView::EditViewSelectionChange` to not only invalidate the view, but also notify the `AccessibleTextHelper` of the selection update, so the corresponding events are sent on the a11y layer. This e.g. causes the `CARET_CHANGED` events to be sent as needed when moving the cursor/caret using the arrow keys in the "Not in dictionary" text edit in Writer's spelling dialog ("Tools" -> "Spelling"), so the Orca screen reader on Linux with the gtk3 or qt6 VCL plugin announces the new caret position, which was no longer the case since the spelling dialog was welded in commit 243b5b392906042ab03800e0b5765e6f3513372c Date: Fri Jun 14 21:56:44 2019 +0100 weld SpellDialog The newly added `AccessibleTextHelper::UpdateSelection` is a simplified version of `AccessibleTextHelper::UpdateChildren`. Change-Id: I5f0898c3ccb9fd527a6ff672be49157cb6e518b1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158992 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07tdf#135236 gtk3 a11y: Restore AtkObject's focus_eventMichael Weghorn
After commit 14e6a810e14e28ab82fe65d66e604ce562016845 Date: Mon Aug 15 13:14:08 2022 +0100 fix "invalid class cast from 'OOoAtkObj' to 'GtkWidgetAccessible'" , Orca with the gtk3 VCL plugin was no longer announcing focus (and content) for the "Not in dictionary" text edit in Writer's spelling dialog ("Tools" -> "Spelling") when moving the focus there e.g. using the Tab key. Make it work again by restoring the `focus_event` function from `AtkObject`, similar to how commit f0827c392641b45647241b3a22e24a95e2b595e3 Date: Fri Aug 19 16:13:04 2022 +0100 Resolves: tdf#150496 we want the AtkObject get_parent function GtkAccessible overrode it, but we expect the AtkObject implementation did for the `get_parent` function to fix the announcement of Writer paragraphs after the above-mentioned commit. The other functions that `gtk_widget_accessible_class_init` overrides [1] are already explicitly set to the wrapper ones (s. the lines above the ones added in this commit), so don't need additional changes. [1] https://gitlab.gnome.org/GNOME/gtk/-/blob/c47425c62efb99be8cd2f0eea651dda76a99ba04/gtk/a11y/gtkwidgetaccessible.c#L542-557 Change-Id: Iae3b47f7fa7fe5ca90acb045a077cf0af52dd7fa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158990 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-07tdf#152155 vcl: fix gtk popup listbox positions on sidebarLászló Németh
It was fixed only on Wayland previously. Follow-up to commit 15cdee0d846854b50dd04626b73499bef9305e00 "Resolves: tdf#152155 use gtk's knowledge of relative widget positions". Change-Id: I7a8b17189b319146142a2193ec4b5ec41e2c2d27 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159020 Tested-by: Jenkins Reviewed-by: László Németh <nemeth@numbertext.org>
2023-11-07Fix SwLanguageIterator::Next for RES_TXTATR_AUTOFMTStephan Bergmann
...following advice by mstahl, as discussed in the comments starting at <https://gerrit.libreoffice.org/c/core/+/158732/2#message-053bc195667ee3ba396ed12a85f3af8d4b7e5efc> "tdf#157667 sw track changes: fix cycle case on multiple words", which had started to cause > /sw/inc/txatritr.hxx:69:18: runtime error: downcast of address 0x603001b45d90 which does not point to an object of type 'const SvxLanguageItem' > 0x603001b45d90: note: object is of type 'SwFormatAutoFormat' > 00 00 00 00 f0 0f 53 4e 3b 7f 00 00 02 00 00 00 32 00 90 be 20 31 36 00 80 60 00 00 c0 5d b4 01 > ^~~~~~~~~~~~~~~~~~~~~~~ > vptr for 'SwFormatAutoFormat' > #0 0x7f3b45ef75d2 in SwLanguageIterator::GetLanguage() const /sw/inc/txatritr.hxx:69:18 > #1 0x7f3b45ee2765 in SwTextNode::TransliterateText(utl::TransliterationWrapper&, int, int, SwUndoTransliterate*, bool) /sw/source/core/txtnode/txtedt.cxx:1980:32 > #2 0x7f3b429f1d40 in sw::DocumentContentOperationsManager::TransliterateText(SwPaM const&, utl::TransliterationWrapper&) /sw/source/core/doc/DocumentContentOperationsManager.cxx:3186:15 > #3 0x7f3b43a52777 in SwEditShell::TransliterateText(TransliterationFlags) /sw/source/core/edit/editsh.cxx:1076:51 > #4 0x7f3b49118c97 in SwTextShell::ExecRotateTransliteration(SfxRequest const&) /sw/source/uibase/shells/textsh.cxx:866:20 > #5 0x7f3b49118984 in SfxStubSwTextShellExecRotateTransliteration(SfxShell*, SfxRequest&) /workdir/SdiTarget/sw/sdi/swslots.hxx:3194:1 > #6 0x7f3b6529ff75 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) /sfx2/source/control/dispatch.cxx:254:9 > #7 0x7f3b652b5e85 in SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) /sfx2/source/control/dispatch.cxx:753:9 > #8 0x7f3b65240e3b in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot const*, SfxShell*) /sfx2/source/control/bindings.cxx:1061:22 > #9 0x7f3b656c2760 in SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:688:53 > #10 0x7f3b656c4ec1 in SfxOfficeDispatch::dispatchWithNotification(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) /sfx2/source/control/unoctitm.cxx:266:16 > #11 0x7f3b193705a6 in framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatch> const&, com::sun::star::util::URL const&, bool, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx:163:30 > #12 0x7f3b1936f482 in framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx:120:16 > #13 0x7f3b19370e54 in non-virtual thunk to framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /framework/source/services/dispatchhelper.cxx > #14 0x7f3b3810b5e9 in unotest::MacrosTest::dispatchCommand(com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) /unotest/source/cpp/macros_test.cxx:94:33 > #15 0x7f3b7245e5fd in testTdf157667::TestBody() /sw/qa/extras/uiwriter/uiwriter6.cxx:793:5 Change-Id: I0e0545a134d86a333b971da83a66f58c5e70f601 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159002 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-07simplify OutputDevice::ClipAndDrawGradientMetafileNoel Grandin
using a poly clip is better than using XOR, so make this the default. Change-Id: I48bb6b5d617b8b6dc82760277d72a50a2123ae0f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158957 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-11-07Simplify a bitMike Kaganski
XDocumentDigitalSignatures::isLocationTrusted would remove segments itself, as needed; this change not only simplifies this code, but also potentially allows to define not only trusted directories, but also individuals trusted files (if the UI would be adjusted). Change-Id: I0b0d60946d84a52479fcce5ce49d368cf53283fd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159009 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-07tdf#99822 sw floattable: testcase for objects from different cellsMiklos Vajna
Fails with commit 435f1aadf7dd8087a8997924bedfccff0f496ba2 (tdf#99822 sw floattable: allow nomimal overlap of objects from different cells, 2023-10-27) reverted. Change-Id: Ic90a2aa254a47804dc50eba8fc1daf0131e65a26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159007 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-11-06tdf#149935 - Hyperlink Target Dialog: remember last used position and sizeAndreas Heinisch
Change-Id: I87fdf78b6ec4963eb4450d937dd86209e03865a1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158879 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2023-11-06Make CustomTarget_odk/build-examples_java more robust against localized envsStephan Bergmann
At least on Linux, with a --with-lang=ALL build, `LANGUAGE=de make CustomTarget_odk/build-examples_java' would fail, as it would ask for license agreement in German rather than English (presumably because the code in getUILangFromEnvironment, i18nlangtag/source/isolang/inunx.cxx, inspects the LANGUAGE env var fist thing), so would expect a "ja" rather than the "yes" we feed into stdin. Change-Id: If285e4458e0706102a62f4e0094e5144575ccf7b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158998 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-06Adapt to various Clang 18 trunk enum reworkStephan Bergmann
<https://github.com/llvm/llvm-project/commit/a9070f22a29e28f7d6f83c24a8dd88f3a94969ae> "[clang][NFC] Refactor `CXXConstructExpr::ConstructionKind`", <https://github.com/llvm/llvm-project/commit/c23aaa410358b9f9c364ddaaeb6b2069b185a99b> "[clang][NFC] Refactor `CharacterLiteral::CharacterKind`", <https://github.com/llvm/llvm-project/commit/3e6ce58701a3a8463b53fb3fd2023c02b4e90554> "[clang][NFC] Refactor `StringLiteral::StringKind`", <https://github.com/llvm/llvm-project/commit/edd690b02e16e991393bf7f67631196942369aed> "[clang][NFC] Refactor `TagTypeKind` (#71160)" Change-Id: Ice802f6d662494781ad22fcf11ea5006de918254 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158983 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-11-06tdf#155266 force flush after scrollingPatrick Luby
This is the second attempt to force a flush after scrolling. Commit 9c0803edd1f42b2d29115674795c7c674fea1a35 worked on Mac Silicon but not Mac Intel. So, instead of calling [NSApp currentEvent] to determine if scrolling has occurred, mark the AquaSalFrame whenever a scrollwheel or mouse drag event is dispatched so the frame will be flushed in the next AquaSalFrame::Flush() call. Change-Id: I2d0b99d2cd1167e92c7fd89bf53b2f30ab85a165 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159003 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-11-06add --with-system-zxcvbnRene Engelhard
Change-Id: I9a90585d8eb498861a6ef4752ab85dcff8eeaab6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158674 Tested-by: René Engelhard <rene@debian.org> Reviewed-by: René Engelhard <rene@debian.org>
2023-11-06libcmis: HttpSession: add a callback that can be used to configure libcurlMichael Stahl
Change-Id: I6c2a3d1976f2256b21a3a306db7fbf04ca444c32 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159000 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-06libcmis: fix regression in HttpSession::initProtocols()Michael Stahl
Change-Id: I1d884945cc1f88a3abbf87c78227b56abf865c16 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158999 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-06sw floattable: make Insert Frame dialog async and mark it as a jsdialogMiklos Vajna
- with this, once a LOK client dispatches .uno:InsertFrame, we don't open two dialogs (one tunelled, one jsdialog) - all the tabpages were already allowed as jsdialogs, the tabpages don't open any unwanted file picker (hyperlink browse button, area -> image -> import button) - switching to async means we can't work with the original SfxRequest (which is no longer there by the time the callback is invoked), but 057eca05f23d9d15465e591bd0da671735d62d50 (sc: convert optimal width/height and normal width/height dialog to async, 2022-04-12) shows we can re-create the SfxRequest after the fact, do the same here - similar problem with SwFlyFrameAttrMgr, but looks like the SwFlyFrameAttrMgr before launching the dialog doesn't share state with the SwFlyFrameAttrMgr after the dialog is gone, so work with two instances here Change-Id: I97aad336b613d105f380012f8c79e92d89c583ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158978 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-11-06tdf#155266 revert commit 9c0803edd1f42b2d29115674795c7c674fea1a35Patrick Luby
While commit 9c0803edd1f42b2d29115674795c7c674fea1a35 fixed tdf#155266 on Mac Silicon, it didn't fix that bug on Mac Intel. Change-Id: I4dc9eb3a5da319a0c8f58bcdea5abfc3e4ec4a0c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158997 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-11-06vscode-ide-integration: add license-header template (snippet)Christian Lohmaier
Change-Id: Iea7837c87fd5803b225d9e18733a67c40fa915d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158887 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
2023-11-06Improve presentation options layoutSamuel Mehrbrodt
* Sort presentations options, put similiar options next to each other. * Move non-document option (Navigation bar) to "Display" area. Also improve wording a little bit for more clarity Change-Id: I18de6b95ea26033ef78709845db40e428a1d6c84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158831 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2023-11-06svx: prefix members of SdrObjCustomShapeMiklos Vajna
See tdf#94879 for motivation. Change-Id: I589bba671fc7ad4282d18c35666ace80fff9ed77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158969 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2023-11-06"SyntaxVersion" has been declared as "sal_Int16" in unomodelJulien Nabet
not "sal_uInt16" See "aModelPropertyInfoMap" var in starmath/source/unomodel.cxx It fixes this message when loading https://bugs.documentfoundation.org/attachment.cgi?id=55799 warn:legacy.osl:19853:19853:xmloff/source/core/SettingsExportHelper.cxx:176: this type is not implemented now Change-Id: I18779b122555681f7544e64745c8074775e27277 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158952 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-11-06tdf#158002 - UI: Part 19 - Unify lockdown behavior of Options dialogBalazs Varga
for LanguageTool Page. Change-Id: Ib1255dd7a67eae7e9c1f2cf6da984ba614f3453a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158931 Tested-by: Jenkins Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
2023-11-06lok: notebookbar: reduce calls to SfxNotebookBar::IsActiveSzymon Kłos
- in LOK case toolbars in core doesn't make any difference - SfxNotebookBar::IsActive which reads config makes doc_setView slower, avoid it in LOK case then - it was used for hiding contextual toolbars - introduced in commit 9bc1ffa2153d2474b023e0860d3c9c68ee18727b tdf#125040 Make single mode toolbar context aware Signed-off-by: Szymon Kłos <szymon.klos@collabora.com> Change-Id: I63de48faf2f7e7f30f8b509455061ac20a788f8a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158939 Tested-by: Jenkins