summaryrefslogtreecommitdiff
path: root/vcl
AgeCommit message (Collapse)Author
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-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 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-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-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-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-06tdf#157518: vcl: add native macOS rendering support for LevelBar controlSarper Akdemir
Uses NSLevelIndicator to render LevelBar control on macOS. Closely follows the existing implementation for ControlType::Progress Change-Id: Ibd38e172b8b6297e6322cfe9d5a1b0a6ef0f0656 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158504 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-11-06tdf#43157 vcl: remove DBG_ASSERT() from BreakLinesWithIterator()Chris Sherlock
Change-Id: I2ab54966c8a8b5e5a15f78481330365725b6ef30 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158073 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-11-06vcl: flatten TextLayoutHelper::GetNewsEllipsisString()Chris Sherlock
Change-Id: Ie94ce7c75ab96b8f7186f9f0c455dfa3a9f1683f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158072 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-11-06vcl: split out functions from TextLayoutCommon::GetEllipsisString()Chris Sherlock
Change-Id: Ifced331b65e27a02d9a3b3e220e22c279c6fc496 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158071 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2023-11-03tdf#155266 flush when scrolling or draggingPatrick Luby
Delaying flushing until the dispatch level returns to zero causes scrolling via the scrollwheel or mouse drag to appear laggy and jerky. Change-Id: Ib70e7766435baa765dd0d1d704ba2fac87f7fccc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158853 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-11-03tdf#158014 make image immutable after using Skia to invertPatrick Luby
I can't explain why inverting using Skia causes this bug on macOS but not other platforms. My guess is that Skia on macOS is sharing some data when different SkiaSalBitmap instances are created from the same OutputDevice. So, mark this SkiaSalBitmap instance's image as immutable so that successive inversions are done with buffered bitmap data instead of Skia. Change-Id: I8acf90561c48edba14a5f43d16f375f15f25820c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158880 Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2023-11-03tdf#158047 allow the tdf#157635 fix for palettes with 64 entriesPatrick Luby
Change-Id: Ib4e4deb5f7e332a7ef3a9231e993231068c21c4f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158885 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-11-03tdf#157028 vcl: PDF export: inline OBJR dictionariesMichael Stahl
There seems to be no reason why SE child OBJR dictionaries are separate objects, they could just be inline. Change-Id: I9e4fcdf56d9b7454325f9d3ef7ba55bdc090f948 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158838 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
2023-11-03macOS a11y: Drop obsolete TODO to implement spelling error attrMichael Weghorn
Handling for `NSAccessibilityMisspelledTextAttribute` and the newer `NSAccessibilityMarkedMisspelledTextAttribute` [1] has been added in commit db0fa92637a1b2edf26da9917c9dce050ebc8a78 Author: Boris Dušek <me@dusek.me> Date: Sun Aug 11 16:37:48 2013 +0200 fdo#67980 - VoiceOver does not inform about misspelled text and VoiceOver announces misspelled Writer text as such, so drop the obsolete TODO. [1] https://developer.apple.com/documentation/appkit/nsaccessibilitymarkedmisspelledtextattribute Change-Id: Id8ae1ee660e87c06ac7f559b5cdf1b31e22aef90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158840 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-03tdf#156478 Remove unused default values for MediaBox and UserUnitTobias Kokolakis
Change-Id: Ica75be2fa238fdf2a40e274f1175710923b281e5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156468 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-11-02tdf#157939 drop duplicates from the FontConfig SetCaolán McNamara
when we drop them from our own font list, that way we don't get suggestions for glyph fallback which we can't satisfy Also prefer our application fonts to system fonts when they share the same version number where they should be the same, but more than once we have a system-side font with oddities. Change-Id: I90bd3311e0f37bacd60d20e1c1a6769b551b8b76 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158841 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-02tdf#157816 sw: PDF export: filter out links on empty space, INetAttrsMichael Stahl
Several problems here: * As with fields, there may be selection rectangles with no text * SwRootFrame::CalcFrameRects() adds flys that are anchored in the selection to the selection * A fly text portion causes Link annotations to split, but not Link SE * If a fly only partially overlaps a line vertically, then CalcFrameRects() produces a full-width half-height rectangle and another 2 half-width half-height rectangles on both sides. This is useless, the rectangles must be full line height. Add some code in CalcFrameRects() to use the fly portions in the SwParaPortion instead of the fly frame areas. Change-Id: I93f0c12a5e5a3d5f51fcc4b33052a112e9174863 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158576 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-02tdf#157816 sw: PDF export: filter out links on empty space, fieldsMichael Stahl
If there is a fly overlapping a paragraph, it may happen (depending on wrap settings and position) that there's an empty space on one side of the fly; the cursor selection region has the flys removed, and this region is used here for the PDF export. So there is a rectangle on the text on one side of the fly, turned into the desired Link annotation, and another rectangle on the other side of the fly, turned into another undesired Link annotation that isn't connected to any SE because without text there is no SE. This is a tricky problem, and the only idea to fix it is to try to see if there is text in the rectangle by first GetModelPositionForViewPoint() resulting in a SwPosition and a SwSpecialPos with an index inside the field; then see if GetCharRect() for this position returns a cursor rectangle that intersects the original selection rectangle. Change-Id: I6918eac16690e7194208a828108bfa968d28d12a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158571 Tested-by: Michael Stahl <michael.stahl@allotropia.de> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
2023-11-02vcl: removed redundant checkVasily Melenchuk
Change-Id: Iec2c344df9eb1fa61bb04355c3eee38499edcdac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158422 Tested-by: Jenkins Reviewed-by: Vasily Melenchuk <vasily.melenchuk@cib.de>
2023-11-01macOS a11y: Don't report (non-)expanded state when not expandableMichael Weghorn
When the a11y object is not expandable, also don't report a true/false value for the expanded state on macOS. Otherwise, the CrossOver screen reader on macOS will explicitly announce "collapsed" for these objects, e.g. when moving focus between paragraphs in Writer (as reported on the a11y mailing list [1]) or between toolbar butons, since `isAccessibilityExpanded` gets called and returns false, so it is assumed that this is an expandable item that is currently not expanded, i.e. it is collapsed. Quoting from the NSAccessibilityProtocol doc [2]: > You can control which accessor methods the assistive app can > use by overriding isAccessibilitySelectorAllowed(_:). > Return true if the assistive app can call the selector; > otherwise, return false." [1] https://listarchives.libreoffice.org/global/accessibility/msg01068.html [2] https://developer.apple.com/documentation/appkit/nsaccessibilityprotocol: Change-Id: Iac9027a598e5793d6bd0da79212d7b07448a4c34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158733 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org> Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-11-01new loplugin:fieldcanbelocalNoel Grandin
Change-Id: I33fe8afcbba1d461bee98c92507c878e4e5d41d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158756 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-31tdf#157679: vcl_pdfexport: Add unittestXisco Fauli
Change-Id: I31aa7f683e8d9f9a227ba88c58e7fdba94c83bb5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158725 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-10-31CppunitTest_vcl_pdfexport: split into twoXisco Fauli
It already has 109 tests Change-Id: Ic16c5ee68f020c2ee1662354786fb82aada62e0b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158667 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2023-10-31ofz#63741 Unknown ReadCaolán McNamara
this went wrong in commit d97e0458914991214e3d396273862855aff66234 Date: Mon Oct 1 03:09:35 2018 +0200 vcl: no raw pointers where rJobData.SetDriverDataLen() was dropped in favour of using using nDriverDataLen, but missed replacing an interleaved GetDriverDataLen() with nDriverDataLen Change-Id: Iebc9145865fa4ec985bc2feed754c775d77011b2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158671 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-30Fix typoAndrea Gelmini
Change-Id: I63c8d4f30a1558e3f1cee72cc5d4ba1426409912 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158635 Reviewed-by: Julien Nabet <serval2412@yahoo.fr> Tested-by: Jenkins
2023-10-30tdf#157518: vcl: Introduce vcl control LevelBarSarper Akdemir
Introduces LevelBar that shares implementation with Progress(Bar). LevelBar is to be as a level indicator, e.g. password strength level. Currently with native backends for gtk and Windows. Currently, except on gtk - the colors of the bar at different levels are hardcoded and not dependent on any kind of themeing. On Windows it follows the styling of progress bar of type "Meter" according to the uxguide: https://learn.microsoft.com/en-us/windows/win32/uxguide/progress-bars#meters Change-Id: Id772cda23615e9582463bf589e4674fd4588c864 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157826 Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
2023-10-29CppunitTest_vcl_animate: use CPPUNIT_TEST_FIXTUREofftkp
CPPUNIT_TEST_FIXTURE is easier to write tests for and separate if needed Change-Id: I2c478205847e4d15c0f8d65d498dd8d82079fa5d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158616 Tested-by: Jenkins Reviewed-by: Paris Oplopoios <parisoplop@gmail.com>
2023-10-29vcl: no raw pointersThorsten Behrens
For ImplJobSetup. Also, check memcmp mem size more properly Change-Id: Idcf20bf1b51bc2508f3d37e018efd18e591a6099 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/26648 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2023-10-29tdf#155887 WMF Fix displaying images with size of EOF other that 3Bartosz Kosiorek
The size of W_META_EOF (record indicates the end of the WMF metafile) could be different than 3 (e.g. 6). The MS Office is allowing different sizes of EOF, and just properly finalizine parsing WMF file, and display its content. Original bug report: https://bz.apache.org/ooo/show_bug.cgi?id=42090 Change-Id: I21b72615c7f45fdca145e6240c6451d7d264d238 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153204 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2023-10-29simplify calculation in AlphaMask::BlendWithNoel Grandin
spotted by mkaganski Change-Id: If009be48a10ee5c7066a19b969212d10b9f6a83c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158607 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-29ofz#63518 don't allow short read with PHOTOMETRIC_YCBCR formatCaolán McNamara
which the old parser didn't support Change-Id: I63e426f57e893b13dd800f4af1ed4b50751dbb2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158600 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-10-28use more TempFileFast in BinaryDataContainer::ImplNoel Grandin
Change-Id: Iea16260cd152e1c495e7713ada812265dbb5b702 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158598 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-28Fix testDelayedScaleAlphaImage unit testPatrick Luby
Do not return the alpha mask if it is awaiting pending scaling. Pending scaling has not yet been done at this point since the scaling is done in the code following this block. Change-Id: I995d7f7eca4190f0a8b2094928bd92f718f1d5bc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158599 Tested-by: Jenkins Reviewed-by: Patrick Luby <plubius@neooffice.org>
2023-10-28tdf#155887 Add individual WMF records validationBartosz Kosiorek
In previous implementation, there was no proper validation of the records, by it's size. This commit adds validation of the WMF records. It would allow to interrupt reading, if wrong record found and play only records until it it correct. It will allow to mimic the behaviour of MS Office: If the wrong record is detected, the image is displayed till the wrong record. Currently in LibreOffice, if wrong record is found whole read is interrupted. Change-Id: I0c82deabcec7a416ca44540e693822f1986437eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153351 Tested-by: Jenkins Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
2023-10-28Simplify calculationMike Kaganski
... after commit 9b5a00d2281bebaac5fccfde17de6ca5134fc229. It passes a sanity check: for (sal_uInt16 nGrey1 = 0; nGrey1 < 256; ++nGrey1) { for (sal_uInt16 nGrey2 = 0; nGrey2 < 256; ++nGrey2) { const sal_uInt8 n1 = static_cast<sal_uInt8>( 255 - ((255 - nGrey1) + (255 - nGrey2) - (255 - nGrey1) * (255 - nGrey2) / 255)); const sal_uInt8 n2 = static_cast<sal_uInt8>(nGrey1 * nGrey2 / 255); CPPUNIT_ASSERT_EQUAL(n1, n2); } } Change-Id: Ib4b4e700a50027fb502767d72843b271f993f9c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158582 Tested-by: Mike Kaganski <mike.kaganski@collabora.com> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-10-28tdf#135586 a11y: Add a new BLOCK_QUOTE a11y roleMichael Weghorn
A block quote role exists in all of WAI-ARIA 1.3 (role "blockquote", [1]), IAccessible2 (`IA2_ROLE_BLOCK_QUOTE`, [2]) and AT-SPI (`ROLE_BLOCK_QUOTE`, [3]). Take over the definition that is the same in WAI-ARIA and IAccessible2: > A section of content that is quoted from another source. The intended use for now is for a Writer paragraph using the "Block Quotation" paragraph style, similar to how the HEADING role is used for paragraphs using a corresponding paragraph style. For gtk3 (ATK) and winaccessibility (IAccessible2), map the new role to the equivalant roles. For macOS and the gtk4 as well as the Qt-based VCL plugins on Linux which currently don't have an equivalent role, fall back to the same role that the PARAGRAPH role is mapped to. This way, the behavior there will remain unchanged once the BLOCK_QUOTE role is used for Writer paragraphs with the corresponding style. In general, treat BLOCK_QUOTE like PARAGRAPH in code applying special handling for the PARAGRAPH role. [1] https://w3c.github.io/aria/#blockquote [2] https://github.com/LinuxA11y/IAccessible2/blob/3d8c7f0b833453f761ded6b12d8be431507bfe0b/api/AccessibleRole.idl#L318 [3] https://gitlab.gnome.org/GNOME/at-spi2-core/-/blob/7cc4cee53ddbd22631fd110f0e5ce045dec2e411/xml/Accessible.xml#L615-616 Change-Id: I248c183a2e7ec5d6f0a89bf3cb4829bbd8588c77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158573 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-10-28gtk4 a11y: Map more a11y roles to gtk equivalentsMichael Weghorn
Most of these have a direct match in Gtk, the others are fairly similar. Helpful: https: //w3c.github.io/core-aam/#mapping_role Change-Id: I1575943dc44b6c41a54d35eaef0e8afdf64d1bc3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158566 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-10-27Various -Werror,-Wvla-cxx-extensionStephan Bergmann
...as enabled by default now in recent Clang 18 trunk Change-Id: I59f9bbdf2ce064f170df01e6d7ec2341884ab5e3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158563 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-27tdf#152571 speedup slow draw file saveNoel Grandin
with lots of images, we seem to spend lots of time calculating CRC. Replace the vcl checksum/CRC with rtl_crc32 in sal/, which forwards to the zlib implementation, which has all kinds of nice SIMD code for performance. Change-Id: I295e2ee91b3450fa558b06e67aac0fbb20b85f52 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158529 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-27fix erase logic in SkiaSalBmp::BlendWithNoel Grandin
regression from commit 81994cb2b8b32453a92bcb011830fcb884f22ff3 Author: Noel Grandin <noelgrandin@gmail.com> Date: Fri Apr 16 20:33:10 2021 +0200 Convert internal vcl bitmap formats transparency->alpha (II) Change-Id: I5cefa51c96d412f43f73277b590fd861397eb1a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158526 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-27gtk4 a11y: Implement GtkAccessibleRange ifaceMichael Weghorn
Implement the `GtkAccessibleRange` range interface [1] added in gtk 4.10, which is bridged to the AT-SPI Value interface on Linux inside gtk. Also set the related properties to their values retrieved from the `XAccessibleValue` interface. (Those already existed before gtk 4.10.) The GType handling for implementing the interface only if the `XAccessibleContext` of the underlying LO a11y object implements `XAccessibleValue` is mostly copied over from the gtk3 a11y implementation (in vcl/unx/gtk3/a11y/atkwrapper.cxx) and adapted a bit. Let `lo_accessible_range_set_current_value` always return true independent of whether the given value was actually set, since LibreOffice (together with Accerciser) otherwise crashes due to no proper DBus reply being sent, when trying to set a new value via AT-SPI API, s.a. [2] and [3]. When setting a new value, take the type of the current value into account, as done for gtk3 in commit a0b7b47e3ec843d8012a7526c1e8e72d67cc41b1 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Tue Oct 24 12:29:54 2023 +0200 gtk3 a11y: Take current type into account when setting new value With this change in place, the AT-SPI Value interface is now shown as available for a checkbox form control in a Writer doc when selecting the corresponding a11y object in Accerciser's tree view of the LO a11y hierarchy. When changing the value via Accerciser, the checkbox in LibreOffice gets (un)checked as expected. (Setting the value to 1.0 causes the checkbox to be checked, 0.0 to become unchecked.). The initial values (current value, min and max value) are set properly. However, when querying the current value after changing it, the initial value is still returned. This likely needs to be addressed by bridging the corresponding `AccessibleEventId::VALUE_CHANGED` event to Gtk/AT-SPI by calling `gtk_accessible_update_property` with the new value. However, there's currently no implementation for handling a11y events in the gtk4 VCL plugin yet, so leave that for later. More interfaces to expose more functionality to the a11y layer will likely be implemented in upcoming gtk versions (like an interface for Text [4]) and bridging those should presumably be possible in a similar way. [1] https://docs.gtk.org/gtk4/iface.AccessibleRange.html [2] https://gitlab.gnome.org/GNOME/gtk/-/issues/6150 [3] https://gitlab.gnome.org/GNOME/gtk/-/commit/0dbd2bd09eff8c9233e45338a05daf2a835529ab [4] https://gitlab.gnome.org/GNOME/gtk/-/issues/5912 Change-Id: I84136fd80361d21cf4f79ab17118bb14079ab785 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158556 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2023-10-27remove unused vcl_get_crc64_tableNoel Grandin
Change-Id: I8ebc2473884ad991a704c7e0955f262bccbf6dec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158528 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-10-27jsdialog: send smaller messages for comboboxSzymon Kłos
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com> Change-Id: Ib514607ad56b965c33439ad548ec90d516acfcf0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158345 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Gökay ŞATIR <gokaysatir@collabora.com> (cherry picked from commit 9e2da48ec3dbe541ff52f6d69f98afb57afaac3e) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158443 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>