summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2024-02-05lok: calc: fix for rendering issues on in place editingMarco Cecchetti
Our main problem is how to compute the correct output area for the requested tile zoom level. The old solution was using a fine-tuned edit rectangle as output area. An edit rectangle is the rectangle computed according to the range of rows and columns involved in the text editing. Unfortunately in some cases the edit rectangle can be enough larger than the output area. For instance that occurs with centered text. The new proposed solution is able to scale the output area to the requested tile zoom level by a few pixels (0 up to 3) offset/size error. The hope is to reduce the error in some follow-up patch. The new solution is also able to perform painting of text edited by different views in the correct order. The last painted text is the one belonging to the last view where editing occurred. SfxViewShell::maEditViewHistory keeps track of the last 10 editing events per document. Change-Id: I8f1035a730cb2b94b0990f3c8eb6445511b94223 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162196 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162986 Reviewed-by: Marco Cecchetti <marco.cecchetti@collabora.com>
2024-02-01tdf#159483 sc HTML import: handle data-sheets-value attribute for the text caseMiklos Vajna
The A2 cell in the bugdoc has 01 in it, which was auto-converted to 1 (float) value on import, even if it was text originally. This is hard to solve for HTML in general, which is not typed, but this input is coming from google sheets, which has an additional data-sheets-value attribute on <td> that does tell us about the type of the cell. Fix the problem by handling that attribute, and in case it explicitly says it's text, then apply the matching number format. Other types are not yet handled. (cherry picked from commit e6e5660b726ecf3b0c39b277568568973b43c9f0) Change-Id: I2986ef864e97d9c46d191aba25ca5740a1151a71
2024-01-29lok: notebookbar: enable currency dropdownSzymon Kłos
Add .uno:NumberFormatCurrency item to .ui Use weld:: way of widgets creation so we can inject jsdialog code and popup will be correctly registered. Signed-off-by: Szymon Kłos <szymon.klos@collabora.com> Change-Id: Ib57e1cad617ca5c7198d67e107441ba062580f06 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161829 (cherry picked from commit 91df0cafa87692b5c924c44b9c7adf4a8d6f3e34) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162623
2024-01-29Use correct type when getting document colorsSzymon Kłos
After commit 0460be8848b0ce02c07183e41dd7137ac3b94164 Send document colors with lok callback There was issue detected by CI: /sc/source/core/data/document10.cxx:198:46: runtime error: downcast of address 0x6100000efa40 which does not point to an object of type 'const SvxColorItem' 0x6100000efa40: note: object is of type 'SvxBrushItem' 00 00 00 00 b0 79 19 48 ce 7f 00 00 01 00 00 00 94 00 be be 4c 17 00 00 a0 be be be cc cc ff 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'SvxBrushItem' #0 0x7fce1fbed369 in ScDocument::GetDocColors() /sc/source/core/data/document10.cxx:198:46 Change-Id: I41f28b6bb54d7720d58c16d75b9d116a53f106cc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162076 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2024-01-23calc doc with saved zoom in settings causes disjoint invalidations...Caolán McNamara
in multiple views, while the invalidations rectangles should be reported at the same place from each view. on load, ScTabView::SetZoom gets called with the zoom stored in the document settings, which both calls sets Zoom on the ViewData, and then calls ZoomChanged, which syncs the GridWindows MapMode from the ViewData derived GetDrawMapMode(). Later lok sets zoom via setClientArea which leaves the GridWindows MapMode untouched and out of sync with the newly changed ViewData MapMode. Typically then, on e.g. on deleting text in one view then ScViewFunc::DeleteContents or similar is called which calls ScTabView::UpdateCopySourceOverlay which calls ScGridWindow::UpdateCopySourceOverlay and that sets the GridWindow MapMode to the DrawMapMode but then *for lokit* returns early (among a few other unlikely early return cases) while every other similar func restores the orig GridWindow mode before returning. So the view which is used to make the change ends up with GridWindows synced to the ViewData MapMode, which looks like accident. While the other view remains with GridWindows with MapModes unsynced with that views ViewData MapMode. So on invalidate, the view that was used to make the change has GridWindows with MapModes that report the correct rectangle, while the other unsynced view will report an incorrect rectangle, until something happens in that view to get it to exec UpdateCopySourceOverlay and get synced. Here add the sync to ScModelObj::setClientZoom so the two MapModes remain synced once that is called. Change-Id: I2da59f50ae2b0e3ea6b7ef8b54debdab1ee98266 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162312 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162322 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 7edfb1b85cef5e5435cd2bf46e1b91b68f1e6427) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162482
2024-01-23cool#7769 Reduce unnecessary invalidations on calc saveCaolán McNamara
https://github.com/CollaboraOnline/online/issues/7769 Reduce unnecessary invalidations. Don't invalidate windows if layer visibility didn't really change. Change-Id: Ic2abd78d60aea2e8676c8e56608cf51e941f5918 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162481 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-18Fix SDK buildMike Kaganski
Change-Id: Id94856661d62e718f8368477f6464152f75fde27 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161282 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162238 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-01-17std::list::size() can still be implemented as std::distance()Caolán McNamara
seen with Red Hat Developer Toolset 10 https: //github.com/CollaboraOnline/online/issues/6893#issuecomment-1866342284 Change-Id: I4a0e8ad028126dded678e971a6261d6725a6b06c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161129 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-16chart2: Make automatic area coloring for charts work for tiled renderingofftkp
Charts now get a temporary colored applied to the area property set if their color was set to automatic, which is done by default in tiled rendering mode. Change-Id: Ic6bd19b97d2a0ffa2a1ad516cfa202e2f4921db7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160659 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2024-01-16calc: on editing invalidation of view with different zoom is wrongMarco Cecchetti
This patch fixes the following invalidation issue: There are 2 views with different zoom levels. In a view text editing for a cell occurs. The other view is not invalidated properly: the computed invalidation rectangle is misplaced. Change-Id: I72db61486647640ee68e6cb2db96b2902de5b997 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160303 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162161 Tested-by: Jenkins
2024-01-16Send tooltip text to LOKMike Kaganski
Call vcl::Window::RequestHelp from LOKPostAsyncEvent for mouse movement. Introduce LOK_CALLBACK_TOOLTIP callback type, and send it from SwEditWin::RequestHelp. Intention is, that the tooltip is shown by client at the current mouse pointer position, which is hopefully not far away from the point that generated the mouse event. On the next movement, the client starts a timer to hide the tooltip. If the next tooltip message arrives, the tooltip would be updated in the new place. Alternatively, the payload could contain the coordinates from the HelpEvent. Change-Id: I8e96eb6e6983ad8d13b4c5d7be4d51ff3fd11893 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161302 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-01-16cool#7492 sfx2 lok: set language/locale on async sidebar updateMiklos Vajna
Create two Calc views, set the first view language to English, second view language to German. Type in the English view, double-click on a chart in the German view. The sidebar in the German view will have English strings in it. This doesn't happen if there is no typing right after the chart activation in the English view. What happens is that the sidebar update is async, and sfx2::sidebar::SidebarController::notifyContextChangeEvent() gets called, which registers an aync event when it calls AsynchronousCall::RequestCall(). Then later this job gets scheduled, but possibly by that time the active view is the English one, leading to English strings when chart::ColumnChartDialogController::getName() calls SchResId(), which works from the language of the current view. Fix the problem similar to what commit fb7b0b944741e4efae8d92a6e305036aff906c7a (cool#7492 sfx2 lok: just set language/locale on async binding update, 2024-01-09), did: set the language/locale from the current view before executing the async job and restore the old value once we're done. Extract the now duplicated code to a new SfxLokLanguageGuard, so in case more places have a problem with incorrect l10n, then it's meant to be a one-liner to fix further places. (cherry picked from commit aaf6ce108e91b1504befe19afcee471e3316ae7a) Change-Id: I52724a24d93fb753175a3b9b99bc33178519d981
2024-01-16cool#7492 sfx2 lok: fix bad view id / statusbar string on async binding updateMiklos Vajna
With two Calc views (first is an English one, second is a German one), type in the English view and in parallel to that, create a cell selection in the German view. Sometimes the status bar update about the selected cells arrives in English, in the German view. The root of the problem is that SfxBindings has a timer that does the expensive update of all the UNO commands only after a delay, but by the time this timer runs, possibly the current view is no longer the German one, which leads to English strings in the German view. Fix the problem somewhat similar to what commit ee7ca8e4ea8ed93655f99e77a9e77032ac830c46 (cool#7865 sfx2 lok: fix bad view id on async command dispatch, 2023-12-20) did in SfxHintPoster::DoEvent_Impl() by restoring the original view for the duration of the timer job execution. The test works even in case '--with-lang=en-US de' is not used, because it asserts the locale, which is not downgraded to English when translations are not available. This required turning the payload of the .uno:RowColSelCount status update into JSON, which is meant to be mostly backwards-compatible, given that we already have a mix of plain text and JSON for the various UNO commands. Another trouble is that the SfxBindings lazy update is a timer, so processing idles won't help and sleeping in test code is not ideal, either. Solve that by exposing the timer of SfxBindings, so test code can explicitly invoke the timer without waiting. (cherry picked from commit 51d8a2ef54751403fa707816e27ddb4e7faa8231) Conflicts: sc/qa/unit/tiledrendering/tiledrendering.cxx Change-Id: Iacf17f81c28b95ce41a0ee29ad25eb576db0d62a
2024-01-15Send document colors with lok callbackSzymon Kłos
First step for publishing any palette for LOK. Let's start with Document colors (colors used in the document) which can be extracted similar to theme colors from SfxViewShell. Modify generateJSON function so it appends palette into existing ptree/JSON. In the next step we can make it more generic so it will be able to send any palette managed by PaletteManager. Change-Id: Ibb56690af6dfd59ee232e88b28e7a3d312d0e16c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161798 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit 0460be8848b0ce02c07183e41dd7137ac3b94164) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161941 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2024-01-15sc: announce theme colors with lok callbackSzymon Kłos
As it is done already for Writer. Unfortunately cannot move the code from afterCallbackRegistered to base class in sfx2 as it is not linked to svx which is needed to generate JSON. So at least share generation and sending part in ThemeColorChangerCommon. Signed-off-by: Szymon Kłos <szymon.klos@collabora.com> Change-Id: Icbf681230bd4c49698c47d852a0862620d93bcec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161771 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161927 Tested-by: Jenkins
2024-01-15lok: send error on access denied in image import 2Szymon Kłos
followup for commit 64624d225c71229acce4f889d4863d7c29c52658 lok: send error on access denied in image import It shows an error in LOK when we try to insert image from remote host blocked by HostFilter Previously it was showing error in paste case, now do the same also on image insertion. For now disable HandleGraphicFilterError in sd, as it crashes, is synchronous and cannot be easily fixed - dialog sits inside module not linked to sfx2, needs some rework. Change-Id: I3c15ff5621add97ef9d60d4f4c1305dae2909158 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161001 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161774 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2024-01-15lok: send error on access denied in image importSzymon Kłos
- when we paste HTML with references to external images and host filter is configured then we have empty graphics - inform client about that so we can show an error to the user Change-Id: I7d584c256d8d004955c970056341ab42864d1dd3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160319 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161773 Tested-by: Jenkins
2024-01-15lok: external data source listSzymon Kłos
Make possible to filter allowed data sources. It is used for WebDAV curl, WEBSERVICE function, cell external references. Change-Id: Ifc82af31ff1123b5656a21e6a27624fb1616db39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160196 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161772 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2024-01-15lok: import Work path from LOK_WORKDIRSzymon Kłos
Change-Id: If0c9727f53c1c4dfb78d1ccbd6b3ff602268bbf7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160156 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161059 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
2024-01-15sal: initial osl::File sand-boxing commit for Unix.Michael Meeks
Change-Id: If2c106fef9640499b82b5cf350cb5169beb219fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159838 Reviewed-by: Szymon Kłos <szymon.klos@collabora.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
2024-01-15Related: cool#7951 only invalidate Window if the setting really changedCaolán McNamara
cut down on some of these invalidations when the setting didn't change and we don't need the expensive invalidation Change-Id: Id84a79636fcd7f21c7a8dbe86218b75d32b26487 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161784 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-01-15cool#7865 sfx2 lok: fix bad view id on async command dispatchMiklos Vajna
If you try hard enough, it's possible to request an "add conditional format" dialog in one view and have the dialog pop up in an other view. This is related to cool#7853 but it focuses on the wider problem. What happens is that sometimes we do want to execute an uno command in an async way, e.g. one dialog opening an other dialog in its response handler: making sure the dialog is not manually / synchronously spinning the main loop while it's running is wanted. Also fixing each & every async command dispatch manually would be a lot of work. Fix the problem by remembering the current view in SfxHintPoster::Post() as it posts events to the main loop and restoring that view if necessary in SfxHintPoster::DoEvent_Impl(). Other comments: - An alternative would be to just dispatch all these UNO commands synchronously, but see above, there are cases where we want to stay async, a nested main loop would be worse. - An even more general fix would be to handle all calls to Application::PostUserEvent(), but vcl doesn't know what is the current view and would have trouble switching to that view (only sfx2 and higher up knows that), so do this only at a SfxHintPoster::Post() level, this is already meant to fix all async uno commands. - There was a single case in sd/ where we tried to dispatch an async event while switching views, so switch to a sync command dispatch there to avoid the problem. CppunitTest_sd_tiledrendering would hang without this and would emit a warning in SfxHintPoster::Post(). - Restore the sc/ code to do its async dispatch as it used to, so now CppunitTest_sc_tiledrendering's testOpenURL is a test case that covers this change. Change-Id: I765e618f55caad791aa1fe7569a32bcc31622525 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161071 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
2024-01-15In readonly mode, we restrict many events like click.Gökay Şatır
In readonly mode, Online users need to be able to click on a hyperlink and get the related info. For this purpose, this PR adds a new function template that sends the hyperlink info if there is any at the clicked position. I will send the implementation with the next commit. Signed-off-by: Gökay Şatır <gokaysatir@collabora.com> Change-Id: I886ea22a7097aac73ade0da78a88ddfc95ad819c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160022 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161372 Tested-by: Jenkins
2024-01-15[cp] Collabora Office brandingAndras Timar
Change-Id: I694d9a6c508853d2d980f76cc259ce1e39149da4
2024-01-10UnoApiTest::loadFromURL -> UnoApiTest::loadFromFileMike Kaganski
The old name was misleading (it doesn't take an URL, but a filename); also, now it's easier to grep for it - doesn't get mixed with vcl::graphic::loadFromURL. Change-Id: Ib88d2194200a6a54d2326971e0306ba39f0c7025 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161578 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161888 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2024-01-09tdf#159018: make 64-bit hash algorithm similar to 32-bit oneMike Kaganski
The magic of choosing a substitution font depends on the order of fontfaces returned from PhysicalFontCollection::GetFontFaceCollection (called from WinGlyphFallbackSubstititution::FindFontSubstitute). Since commit db04b3e154a1fb8f222232ef969bb3617e051329 (return 64-bit hash for O[U]String, 2022-08-22), the order has changed, which resulted in different fallbacks in some documents (which aren't well-formed in respect to their formatting, so when they work, it's just luck). The difference was because the 64-bit hash implementation was modelled after Java one. This patch makes the code follow the algorithm in rtl::str::hashCode_WithLength, used in 32-bit hash, which restores the order (at least for my system). Not reliable, just "why not". Change-Id: I3c482e86bee79d6c9c6981300518c4ff6b7f29d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161706 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 4eeb6178fb9fb499bc417a42f8d6d0bdde9acb8e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161753 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-12-30OInterfaceIteratorHelper3 always copies maData contents in ctorCaolán McNamara
while I think the idea is that the copy on write should only be done by OInterfaceContainerHelper3, i.e. that ownership really transfers to OInterfaceIteratorHelper3 and OInterfaceContainerHelper3 makes a new one if that turns out to be necessary Change-Id: I6e97e3b303f133edbbb35ac23f39cf5348ad49fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161257 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 28616cf0989dab2ca2a1710c64f6fb1c1d78c584) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161328 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-24Related: tdf#155266 Eliminate delayed scrollbar redrawing when swipingPatrick Luby
By default, the layout idle timer in the InterimWindowItem class is set to TaskPriority::RESIZE. That is too high of a priority as it appears that other timers are drawing after the scrollbar has been redrawn. As a result, when swiping, the content moves fluidly but the scrollbar thumb does not move until after swiping stops or pauses. Then, after a short lag, the scrollbar thumb finally "jumps" to the expected position. So, to fix this scrollbar "stickiness" when swiping, setting the priority to TaskPriority::POST_PAINT causes the scrollbar to be redrawn after any competing timers. Change-Id: I8c0772fc40ddc690ee59c6267c1c50971f4ff238 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161184 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Patrick Luby <plubius@libreoffice.org> (cherry picked from commit 9a685238cfcc17bb1586b07047bb077a5ce3821b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161215
2023-12-22svl: fix build with --enable-debugXisco Fauli
After author Armin Le Grand (allotropia) <armin.le.grand.extern@allotropia.de> 2023-12-20 19:42:28 +0100 committer Armin Le Grand <Armin.Le.Grand@me.com> 2023-12-21 21:13:55 +0100 commit 789a737ac92c4f2b0eb9820b99c43cc8253c8b29 (patch) tree bc167ec04de29e63168844be973f59980fa36ac2 parent 3430a2c639a9f714259f9d319515464a653d21ab (diff) Remove DeleteItemOnIdlex it fails with /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:340: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemiter.o] Error 1 make[1]: *** Se espera a que terminen otras tareas.... In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/svl/source/items/sitem.cxx:23: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/sitem.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/svl/source/items/itemset.cxx:30: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/o3tl/sorted_vector.hxx:15, from /home/xisco/libreoffice/include/svl/itempool.hxx:30, from /home/xisco/libreoffice/svl/source/items/itemset.cxx:31: /home/xisco/libreoffice/svl/source/items/itemset.cxx: In member function ‘const SfxPoolItemHolder& SfxPoolItemHolder::operator=(const SfxPoolItemHolder&)’: /home/xisco/libreoffice/svl/source/items/itemset.cxx:120:13: error: ‘isDeleted’ was not declared in this scope 120 | assert(!isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx:121:21: error: ‘const class SfxPoolItemHolder’ has no member named ‘isDeleted’ 121 | assert(!rHolder.isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx: In member function ‘bool SfxPoolItemHolder::operator==(const SfxPoolItemHolder&) const’: /home/xisco/libreoffice/svl/source/items/itemset.cxx:139:13: error: ‘isDeleted’ was not declared in this scope 139 | assert(!isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ /home/xisco/libreoffice/svl/source/items/itemset.cxx:140:21: error: ‘const class SfxPoolItemHolder’ has no member named ‘isDeleted’ 140 | assert(!rHolder.isDeleted() && "Destructed instance used (!)"); | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemset.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/itemset.hxx:23, from /home/xisco/libreoffice/include/svl/setitem.hxx:25, from /home/xisco/libreoffice/svl/source/items/itempool.cxx:21: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itempool.o] Error 1 In file included from /usr/include/c++/12/cassert:44, from /home/xisco/libreoffice/include/svl/whichranges.hxx:16, from /home/xisco/libreoffice/include/svl/itemset.hxx:30, from /home/xisco/libreoffice/include/svl/itemprop.hxx:26, from /home/xisco/libreoffice/svl/source/items/itemprop.cxx:23: /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘SfxItemPool& SfxPoolItemHolder::getPool() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:64:44: error: ‘isDeleted’ was not declared in this scope 64 | SfxItemPool& getPool() const { assert(!isDeleted() && "Destructed instance used (!)"); return *m_pPool; } | ^~~~~~~~~ /home/xisco/libreoffice/include/svl/itemset.hxx: In member function ‘const SfxPoolItem* SfxPoolItemHolder::getItem() const’: /home/xisco/libreoffice/include/svl/itemset.hxx:65:50: error: ‘isDeleted’ was not declared in this scope 65 | const SfxPoolItem* getItem() const { assert(!isDeleted() && "Destructed instance used (!)"); return m_pItem; } | ^~~~~~~~~ make[1]: *** [/home/xisco/libreoffice/solenv/gbuild/LinkTarget.mk:337: /home/xisco/libreoffice/workdir/CxxObject/svl/source/items/itemprop.o] Error 1 make: *** [Makefile:290: build] Error 2 Change-Id: I0f61738d4afbdfc06b372d6c5e5fff6f9f9f4e65 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161142 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> (cherry picked from commit e9e3576ada06d53de12efed041fb309fe5388e01) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161214
2023-12-22Remove 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> (cherry picked from commit 789a737ac92c4f2b0eb9820b99c43cc8253c8b29) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161158 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-22tdf#156820 Fix crash in custom color pickerNoel Grandin
which requires (*) keeping ColorPicker alive during the runAsync in ColorPicker::startExecuteModal (*) keeping the PaletteManager alive during the ExecuteAsync in PaletteManager::PopupCOlorPicker Noting that MattK debugged the cause of this. Change-Id: I07efe8e6514f8882b1347c79c6150578c234bb9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161054 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> (cherry picked from commit 78ccae0d42d168f845ddbd7cb694d80dfb04f84d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161161 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-21tdf#158375: adapt UI when DDE is disabled via DisableActiveContentSarper Akdemir
When DisableActiveContent is set, provide now non-functional areas meaningful error messages / popup dialogs. Change-Id: I34bffee10fb0ba5c0194193f3d3d81b93d7dbd26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160923 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins (cherry picked from commit b693fba185df86fba6389ed564a12c0afeb33778) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161095 Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-12-21tdf#158375: disable DDE when DisableActiveContent is setSarper Akdemir
Change-Id: I167f6ea5d740b5a53cd02a9b865e65ff980a8877 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160922 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins (cherry picked from commit 21f8e08c60cde2599f45b9e02c2b7d0cead2f625) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161029 Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-12-21tdf#158375: adapt UI when embedded content is disabled via optionSarper Akdemir
When DisableActiveContent is set, embedded active content is disabled (e.g. OLE). Therefore the existing ui insertion bits don't function either. Disable them with a warning pop-up hinting "Active content is disabled." Change-Id: I14984684f22df6aff81af79d5a15589b5cae75fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161055 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> (cherry picked from commit 7bb50fd2398220c3b162e7242c1cc8d6c4c31463) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161028 Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-12-20tdf#123864 a11y: Handle new checkable state for VCLXAccessibleMenuItemMichael Weghorn
Add reporting for the new CHECKABLE a11y state introduced in commit d6c6472bbe1c90b733a4d69c4c8528f4de3750d3 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Nov 13 15:53:44 2023 +0100 tdf#123864 a11y: Add new AccessibleStateType::CHECKABLE for `VCLXAccessibleMenuItem`. `MenuItemData::HasCheck` looks like it already provides what's needed to say whether an item is checkable, therefore add a `Menu::IsItemCheckable` that makes use of this and and a `VCLXAccessibleMenuItem::IsCheckable` that makes use of that in turn. Extend `VCLXAccessibleMenuItem::FillAccessibleStateSet` to use the latter to report the CHECKABLE state accordingly. Change-Id: Id23196ef2527a71a338102a5143a8bd6fd41db84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160902 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161037
2023-12-20Related: tdf#76115 Also pass RepairPackage to FilterDetectMike Kaganski
And drop the default argument value from ZipStorage ctor. Always pass it explicitly. Change-Id: I8bcf78dc4db7763567f9d6873841d75c328ede7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160760 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160782 Tested-by: Jenkins
2023-12-19tdf#158703: return updated position from FnAddNonBrkSpaceMike Kaganski
The paragraph text may become shorter after the function succeeds, because it may remove arbitrary number of preceding spaces; since the position may then be used to access data in the string in the caller, we need to update it, to avoid use of old position (which may point beyond the string, and produce a crash; or it may point to a wrong position in it). Change-Id: Ib1b4b63cbd7150e0f69c97032e3410db7dadd4dc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160924 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 1325d66a7f8657aaf9951a0664fbf14cca86905b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160934 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-19tdf#158686 sw floattable: fix print preview crashMiklos Vajna
Regression from commit b8521d969ab5be4fc947e467d4afe969f9d3b563 (tdf#157263 sw floattable: prefer join over split after moving fwd, 2023-09-25), enabling Options -> Writer -> Formatting Aids -> Hidden Characters, then opening the bugdoc, finally Toggle Print Preview on the toolbar resulted in a crash. We have a memory corruption here: ==11968==ERROR: AddressSanitizer: heap-use-after-free on address 0x60f0000734e0 at pc 0x7f473822d2ee bp 0x7fffdadd3660 sp 0x7fffdadd3658 READ of size 8 at 0x60f0000734e0 thread T0 #0 0x7f473822d2ed in rtl::Reference<FmXFormShell>::operator->() const /include/rtl/ref.hxx:216:9 #1 0x7f473821feeb in FmFormShell::IsActiveControl() const /svx/source/form/fmshell.cxx:1227:12 #2 0x7f46dad4d52a in SwView::SelectShell() /sw/source/uibase/uiview/view.cxx:296:40 #3 0x7f46dad496a6 in SwView::AttrChangedNotify(LinkParamNone*) /sw/source/uibase/uiview/view.cxx:572:13 ... #32 0x7f4748944cda in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) /sfx2/source/view/viewfrm.cxx:2552:32 #33 0x7f47488f4e3b in SfxViewFrame::ExecView_Impl(SfxRequest&) /sfx2/source/view/viewfrm.cxx:2637:29 freed by thread T0 here: #0 0x5568ff2f9a7b in operator delete(void*, unsigned long) /home/abuild/rpmbuild/BUILD/llvm-15.0.7.src/build/../projects/compiler-rt/lib/asan/asan_new_delete.cpp:164:3 #1 0x7f4738214346 in FmFormShell::~FmFormShell() /svx/source/form/fmshell.cxx:181:1 #2 0x7f4746b04b9d in SfxDispatcher::FlushImpl() /sfx2/source/control/dispatch.cxx:1412:13 #3 0x7f4746aff767 in SfxDispatcher::Flush() /sfx2/source/control/dispatch.cxx:157:26 #4 0x7f47489100dc in SfxViewFrame::PopShellAndSubShells_Impl(SfxViewShell&) /sfx2/source/view/viewfrm.cxx:1100:24 #5 0x7f47489441a3 in SfxViewFrame::SwitchToViewShell_Impl(unsigned short, bool) /sfx2/source/view/viewfrm.cxx:2538:13 #6 0x7f47488f4e3b in SfxViewFrame::ExecView_Impl(SfxRequest&) /sfx2/source/view/viewfrm.cxx:2637:29 I.e. a new SwPagePreview replaces the old SwView, but the order is that SfxViewFrame::SwitchToViewShell_Impl() starts with deleting the SfxShells of the old SwView in PopShellAndSubShells_Impl(), then it creates the new shell, finally deletes the old shell. Given that the new shell hides hidden characters and the old shell did not, this triggers a size notification for the half-deleted old shell and we crash. Seeing that SwView::AttrChangedNotify() already had code to delay the selection of an SfxShell in the old SwView, fix the problem by introducing a new flag that allows not selecting an SfxShell at all if the old view is known to be deleted in the near future anyway. An alternative would be to make sure that all relevant pointers are maintained using an SfxBroadcaster / SfxListener protocol, but after fixing some 4 of them and that's still not enough, probably it's better to handle this at a higher level. It's also a bit unclear how this "worked" in the past; looks like the old view didn't get the size change notification by accident. Change-Id: I423ff946f8235848cc3a870bc52fcf88a721fd2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160925 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins (cherry picked from commit 164fb25f7b2db7d833d6d0f28e49c5cac68426b3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160935
2023-12-18tdf#157569: FormulaImExportBase::getFormulaSize should return mm/100Mike Kaganski
Similar to commit 798d21e2a1b8bc48b6bb5e1b3cf0cba0e5882a59 (tdf#157965: UNO methods are expected to return sizes in mm/100, 2023-10-29); this was an omission from commit 9e92a17cb6e03beedeeca40bfc8524c2623d31eb (starmath: Improve glyph positioning, 2023-09-19). The method is called in DomainMapper_Impl::appendStarMath(), and the returned value is used to define object size using UNO methods. Change-Id: I37cc4d5dd18641915495b97f0d99fa10a805e18c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160827 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit 80b67e776ae26d60e0935fcc57a8ff6c983bdd15) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160852 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-12-15Turn onlineupdate into external/onlineupdateStephan Bergmann
...and update to latest Mozilla sources. Originally, this was a non-external onlineupdate module (plus correspsonding top-level include/onlineupdate/ directory) that apparently contained sources originally copied from Mozilla and subsequently modified in-place (plus, mixed in, presumably some sources that were not copied from Mozilla but were our own inventions). To clean up this mess, this has been turned into a proper external/onlineupdate module with a tarball containing the pristine external Mozilla sources. The sources for the onlineupdate-c003be8b9727672e7d30972983b375f4c200233f.tar.xz tarball are taken, somewhat arbitrarily, from a recent <https://github.com/mozilla/gecko-dev/commit/c003be8b9727672e7d30972983b375f4c200233f> ("Bug 1867784 - Force reflow all kids in the last column balancing reflow. r=layout-reviewers,dholbert") trunk state, by running `external/onlineupdate/generate-sources.sh ~/github.com/mozilla/gecko-dev` on a Fedora 39 machine. The layout of the tarball still mostly follows the old onlineupdate/ layout, even if that deviates heavily from the actual source layout at <https://github.com/mozilla/gecko-dev/>. (And some files, which apparently are not needed, anyway, lacked sources, see the "Missing source for" in external/onlineupdate/generate-sources.sh. And win_dirent.h/.cpp has meanwhile been superseded by updateutils_win.h/.cpp.) Merely newly included source files are laid out in the tarball according to the actual source layout. Any LO-specific modifications are made via patch files (rather than modifying the sources inline, as was done in the past): external/onlineupdate/lo.patch contains whatever modifications are needed to adapt the functionality, while external/onlineupdate/gtk3deprecated.patch fixes > workdir/UnpackedTarball/onlineupdate/onlineupdate/source/update/updater/progressui_gtk.cpp:97:21: error: use of undeclared identifier 'gtk_vbox_new'; did you mean 'gtk_box_new'? > 97 | GtkWidget* vbox = gtk_vbox_new(TRUE, 6); > | ^~~~~~~~~~~~ > | gtk_box_new to not use the deprecated gtk_vbox_new, which is hidden because we include -DGTK_DISABLE_DEPRECATED in our GTK3_CFLAGS as per our configure.ac. On Windows, the definition of __BYTE_ORDER__ etc. is needed because workdir/UnpackedTarball/onlineupdate/include/mozilla/ says "Our supported compilers provide architecture-independent macros for this", but MSVC doesn't actually, so define here what would implicitly be defined by GCC. Similarly, on Windows -U_WIN32_WINNT is needed to undo -D_WIN32_WINNT=0x0601 in solenv/gbuild/platform/windows.mk, which would cause > workdir\UnpackedTarball\onlineupdate\include\mozilla/WinHeaderOnlyUtils.h(537): error C2065: 'FILE_ID_INFO': undeclared identifier etc., despite the #include <windws.h> there. Curiously, the original gb_CustomTarget_CustomTarget,onlineupdate/generated from onlineupdate/CustomTarget_generated.mk had to be renamed to gb_CustomTarget_CustomTarget,external/onlineupdate/generated when the file was moved to external/onlineupdate/CustomTarget_generated.mk, as otherwise a top-level `make CustomTarget_onlineupdate/generated` would have failed with "No rule to make target..." Also, as there is no gb_CustomTarget_use_unpacked, its effect has been poorly mimicked for now in external/onlineupdate/CustomTarget_generated.mk. Similarly, as there is no gb_WinResTarget_use_unpacked, its effect has been poorly mimicked for now in external/onlineupdate/WinResTarget_updater.mk. The original onlineupdate/workben/test_dialog.cxx, which is actually code written by us, has been moved to external/onlineupdate/workben/test_dialog.cxx. The original onlineupdate/qa/ sources (which were apparently not used during the build) have been preserved for now as external/onlineupdate/qa/, for documentation purposes. The original onlineupdate/astyle.options (which was apparently not used during the build) has been removed. Change-Id: I5ea606202e7837269e7b128e45af2f0b8c277f9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160492 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> (cherry picked from commit 90255d8931af23e3b81a0d921699632bf323af29) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160804
2023-12-12tdf#158320 restore Live Preview for font hoveringCaolán McNamara
a) announce Preview when a 'selected' font preview is requested b) move EndPreview to when the dropdown popups down, rather than listen to ESC Change-Id: I68916769150c23c0ec18aae084cdf3cafb7352a4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160609 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> (cherry picked from commit 30d3a5743961274d360e683eccd2756257ed5e7a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160588 Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
2023-12-12tdf#105844 offapi,package,sfx2,xmlsecurity: add AEAD w/ AES GCMMichael Stahl
... and use it in the new experimental ODF encryption mode. https://www.w3.org/TR/xmlenc-core1/#sec-AES-GCM Unfortunately it turned out that NSS PK11_CipherOp() does not work with CKM_AES_GCM because it is initialized with "context->multi = PR_FALSE" in sftk_CryptInit(), so the one-step functions PK11_Encrypt() and PK11_Decrypt() have to be used. NSS 3.52 also changed a parameter struct definition - see https://fedoraproject.org/wiki/Changes/NssGCMParams - which is not a problem for RHEL or SUSE system NSS since those are rebased, but it is likely a problem for less well maintained Ubuntu LTS, so use the old struct definition which evidently still works with NSS 3.94. NSS 3.52 also added a new PK11_AEADOp() API but it looks like this doesn't support incremental encryption either. Change-Id: Ibd4a672db74b65b1218926ba35ff8d2f70444c7e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160505 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> (cherry picked from commit f0fda7ad2236f478fea396a23d4f982e5fc37e68) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160581
2023-12-11Fix build --with-system-openssl but --without-system-curlEike Rathke
Change-Id: I60e2e995a159ebbbdc0991204d765b5654d5a4fc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160510 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Jenkins (cherry picked from commit 7b2166c8217cb32f2f7951f074e33d9fe890bb9b) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160489 Tested-by: Eike Rathke <erack@redhat.com>
2023-12-08cid#1545617 COPY_INSTEAD_OF_MOVECaolán McNamara
and cid#1545748 COPY_INSTEAD_OF_MOVE cid#1545741 COPY_INSTEAD_OF_MOVE cid#1545698 COPY_INSTEAD_OF_MOVE cid#1545594 COPY_INSTEAD_OF_MOVE cid#1545588 COPY_INSTEAD_OF_MOVE cid#1545558 COPY_INSTEAD_OF_MOVE cid#1545545 COPY_INSTEAD_OF_MOVE Change-Id: I5dfec77a68959b9384fc71a2fc0908c5d1b42869 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160448 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-07xmlsecurity: check for errors in OCipherContext::Create()Michael Stahl
If this function returns null, storing a document will proceed without reporting an error to the user, and lose all the data. Change-Id: I0f9fd53702321e7997b28e12eb5bed3349bbcc13 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160435 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-12-07[API CHANGE] Drop unused SnapGrid/[X,Y]Axis config groupsGabor Kelemen
from Impress/Draw last mention of them was removed in 2006 by: commit deef3fdfd9148ce1987b35a224998d63bb6b9d56 removing a commented out caller that was already commented out by "initial import" time Change-Id: I50fefe42a92c752727dfbf3b9d7c645492d034da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160190 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-07simplify and modernise ScopedBitmapAccessNoel Grandin
(*) Make all of it use a "Scoped" paradigm (*) pass by value, no need to allocate on heap (*) make all of the construction go via the *Access constructors, instead of it being some via the constructors and some via the Acquire*Access methods. (*) take the Bitmap& by const& in the constructor, so we can avoid doing const_cast in random places. Change-Id: Ie03a9145c0965980ee8df9a89b8714a425e18f74 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160293 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-12-07tdf#105844 package,sfx2: wholesome ODF package wrapping encryptionMichael Stahl
Redo the ODF encryption by storing an ODF package and wrapping it as a stream "encrypted-package" in another ODF package, such that there is only one encrypted stream - this requires only one KDF computation. * This is only enabled in Experimental mode for now. * Avoid storing unencrypted data in the pTempFile of SfxMedium, as it is usually created in the same directory as the target file, which may be on a network share or similar less trusted location. * SfxMedium::SetEncryptionDataToStorage_Impl() should just set an error status if it fails (how can it fail anyway) * when loading a document, SfxDocPasswordVerifier extracts an encrypted inner package (by calling SfxMedium::TryEncryptedInnerPackage()) * SfxMedium::GetStorage() automatically decrypts an encrypted inner storage and sets it as the SfxMedium's xStorage * when storing a document, SfxObjectShell::SaveTo_Impl() creates the wrapped storages * One challenge is to keep the macro/scripting signature working; this can only be put in the inner storage, whereas the document signature should continue to be on the outer storage; also it must use a Zip storage, to see the "META-INF" directory. This needs a new SfxMedium::GetScriptingStorageToSign_Impl() and changes in SfxMedium::SignContents_Impl(). Change-Id: Ibfee36ce3a9cd030f2aa2ce1484b6d001cba2389 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160401 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-12-06tdf#148986 Support XF86Forward / XF86Back key eventsGabor Kelemen
Multimedia keys found on certain presentation clicker devices. Not added to the Customize dialog, as that was not yet asked for. As I have no access to a MAC, did not add support for that in vcl. Inspiration for code taken from commit ca74511985981444dbd72ade7244484c131e36a7 Change-Id: I417e6ba7e79c5f6e774a56ba747803a156d5f50f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160255 Tested-by: Thorsten Behrens <thorsten.behrens@allotropia.de> Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-12-06make AlphaMask separate from BitmapNoel Grandin
Having it subclass Bitmap encourages confusion in passing it around, and I need the extra type-safety for my work on merged-alpha Change-Id: I35819f9b8ee609cbdaf865563c78531e397b529b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160235 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>