...at least for now, as long as it is not needed in any published UNO include
files
Change-Id: I25a1697e1b9ffa5afce0e29cc64be66bf2ebbc57
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170637
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
in the end, it doesn't make sense to allow either of these to be 0
Change-Id: Ie07620c9a168876abd7532a6f52bc7ebd12b83c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170638
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
And a demo implementation for these features as a taskbar window
will become red once LO is displaying any error message.
Change-Id: Ifc04026c699059da2e457de2c69e7363e756109c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166740
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
ScUndoWrapper::ForgetWrappedUndo resets the std::unique_ptr
and deletes the owned pointer, that's not what we want to happen here.
looks to have gone wrong in:
commit 9767537e22
AuthorDate: Tue Jan 17 10:11:31 2017 +0200
new loplugin: useuniqueptr: sc part 2
Change-Id: Ib4a7d615bc2e354f76b044b5b5e5d2f17dbebf0f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170632
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
using a constexpr sal_uInt16 for the eMax limit, and dropping
o3tl::narrowing might be enough to clear this bogus warning
Change-Id: I6f7fd468333b39d597eccacf37e6a64926dfc015
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170635
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
The functions are moved to o3tl as inline functions.
Change-Id: Ief7d7e292ef15e055ad04ab5707e5e6a2a05b916
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170636
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Similar to commit 1f24d35033 (cppunittester:
use a dedicated desktop on Windows, 2023-07-09), this change allows to run
UI tests on Windows without them interferring with what you are doing.
The code testing LIBO_TEST_DEFAULT_DESKTOP environment variable to avoid
the separate desktop, and creating it, is extracted to a new function in
systools.
Change-Id: I6df3cb4ae581ae289e49b47d3135d01f632fbd95
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170615
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Previously, Writer counted characters for all CJK languages, rather than
words. This is the correct behavior for Chinese and Japanese, which make
extensive use of ideographs. However, it is not correct for Korean.
This change adjusts the Writer word count algorithm to count Korean
words, rather than Korean characters.
Change-Id: I6e77136867baca1a7b51248886ee5fd7073ad364
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170621
Tested-by: Jenkins
Reviewed-by: Jonathan Clark <jonathan@libreoffice.org>
If the parent changed, we have no idea how many properties might
be involved. Therefore, there is no way that anything could
legitimately say that we haven't actually changed/don't need to notify.
This is a No Functional Change.
bContinue was never set to false when bNewParent.
bNewParent and pNewChgSet are mutually exclusive,
and the only other time bContinue was changed was if pNewChgSet.
So this patch is just a simplification.
It more clearly shows that the notify should always happen,
and is helpful to demonstrate logic changes in the following patches.
Change-Id: Iabef5ba305c80d68655a0c880301ab32ffc90792
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169896
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
In various places, the code checks if we are running as a unit test or a
UI test. This code grew organically, and is most re-using environment
variables that were designed for narrower purposes.
Rather than being clever, just add two new explicit and simple
environment variables in the natural place (the command that runs them),
and check for those variables in the code.
Change-Id: Icce0997914fa0be30a5ac1f29bd870bdb5893a8b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170618
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
gtk_assistant_unmap ...
{
...
priv->current_page = NULL;
...
}
gtk_assistant_map
{
page_num = 0;
...
set_current_page (assistant, page_num)
...
}
It doesn't automatically restore itself to the page it was on
when it was hidden, so do that explicitly.
Change-Id: If23b255193c4a65b286e036c8796d9d8a2ffcb5e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170611
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
This patch updates the ColumnValueSet and some other parts of the
drawing code to use the Push/Pop functions of RenderContext.
Change-Id: I3fbdee9afa167facb45242bc8bad9a35758b3c0c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165587
Reviewed-by: Hossein <hossein@libreoffice.org>
Tested-by: Jenkins
while testing the document attached to this bug I get a repeatable
skia crash (only skia is in native mode, not software rendering).
This reveals that there a couple of data structures that need to
be cleaned up while holding the SolarMutex.
Change-Id: I3ff460a4febf1ffcb27ad904224e1594ead4aa3d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170612
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Port from deprecated Gradle API that is planned to
be removed in Gradle 9.0, as was warned about in the
build output previously:
> Configure project :
Script '/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle': line 22
The org.gradle.api.plugins.BasePluginConvention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.7/userguide/upgrading_version_8.html#base_convention_deprecation
at liboSettings_bbauwf0uak693a4tmdwwty192$_run_closure3.doCall$original(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:22)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
at liboSettings_bbauwf0uak693a4tmdwwty192.run(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:20)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
Script '/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle': line 22
The BasePluginExtension.archivesBaseName property has been deprecated. This is scheduled to be removed in Gradle 9.0. Please use the archivesName property instead. For more information, please refer to https://docs.gradle.org/8.7/dsl/org.gradle.api.plugins.BasePluginExtension.html#org.gradle.api.plugins.BasePluginExtension:archivesName in the Gradle documentation.
at liboSettings_bbauwf0uak693a4tmdwwty192$_run_closure3.doCall$original(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:22)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
As described in the upgrading guide [1], use the "base"
configuration block in build.gradle instead.
[1] https://docs.gradle.org/8.7/userguide/upgrading_version_8.html#base_convention_deprecation
Change-Id: I358569a72b508efd31d2872d5009ac4f060398d4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170610
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Set the gradle property to show individual warnings during the
build. Without this, the build output showed:
> Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
>
> You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
>
> For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
Now, it shows the individual issues that need to be addressed:
> > Configure project :
> Script '/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle': line 22
> The org.gradle.api.plugins.BasePluginConvention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.7/userguide/upgrading_version_8.html#base_convention_deprecation
> at liboSettings_bbauwf0uak693a4tmdwwty192$_run_closure3.doCall$original(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:22)
> (Run with --stacktrace to get the full stack trace of this deprecation warning.)
> at liboSettings_bbauwf0uak693a4tmdwwty192.run(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:20)
> (Run with --stacktrace to get the full stack trace of this deprecation warning.)
> Script '/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle': line 22
> The BasePluginExtension.archivesBaseName property has been deprecated. This is scheduled to be removed in Gradle 9.0. Please use the archivesName property instead. For more information, please refer to https://docs.gradle.org/8.7/dsl/org.gradle.api.plugins.BasePluginExtension.html#org.gradle.api.plugins.BasePluginExtension:archivesName in the Gradle documentation.
> at liboSettings_bbauwf0uak693a4tmdwwty192$_run_closure3.doCall$original(/home/michi/development/git/libreoffice-WORKTREE-android/android/source/liboSettings.gradle:22)
> (Run with --stacktrace to get the full stack trace of this deprecation warning.)
Actually addressing them still needs to be done separately.
Change-Id: Ib749e9e21d3d5f5893c348a5070a1e994a395c6f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170609
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Addresses this warning shown in Android Studio:
> Do not use assignment with the minSdkVersion property (remove the '=')
Change-Id: I2d9e7037f7fb6e4d1625a8625a1b3820fb6e205f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170607
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
In Android Viewer, forward the left/right/up/down keys
as such by adding the corresponding mapping to
`LOKitTileProvider#getKeyCode`.
This allows navigating through the document using those
keys e.g. on a hardware keyboard.
This addresses this comment from a Google Play Review:
> Editing, the cursor doesn't respond to the cursor keys
Change-Id: I688e5d0cc1db4f9315f9c9cb2139c22117a210e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170605
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
... and gradle to 8.7, as suggested by Android Studio.
Change-Id: I572c1e0d62a477278fd63e613610d8d422d14a05
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170601
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Open the bugdoc, navigate to the last para of the first page, enable
bullets for that paragraph, paste a one-liner plain text string, observe
a 274 ms hang.
Commit dc3e022866 (cool#9504 sw: don't
invalidate num rules when pasting into a non-num paragraph, 2024-07-15)
already fixed a not needed invalidation when pasting plain text at a
non-list paragraph, but here the insert point is part of a list, so we
still invalidate.
Improve this further to also not invalidate when we paste a paragraph
which is part of a list, but the numbering type is a bullet, which again
doesn't need an invalidation.
If the invalidation still happens, then the LOK case still calcs the
entire layout in one go, that's not yet fixed here.
Change-Id: I97c92aebb67ba8ca66b5820943dc1550d62bb467
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170606
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
...which went unnoticed for this Emscripten-only library due to the static
nature of the Emscripten build, but is probably better to do properly anyway
Change-Id: Ie0e0b463057fbc60e17741f362a129f784f7154d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170603
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
inserting a ContentControl, now generate a unique ID for it...
search the lowest possible non used (non negative) number
added a GetType() function for SwXContentControl that get it from
SwContentControl, and used it for extract and transform.
Added some support for all other types.. some are not really usable
yet.
Fixed a problem when setting checkbox check, did not changed its
content.
If content is set to “”. It now set as placeholder,
and reset its content to the initial placeholder value, like:
“Choose an item” or “Click here to enter text”
(work for checkbox, and picture CntentControl.)
Change-Id: I0fc696f73734bdfb9ac5b8fdc6891168b8d4ed5a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170600
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Set the GtkBuilder ID (the ID set in the .ui file)
as the accessible ID of the GtkWidget for welded
widgets in the gtk3 VCL plugin.
For non-welded widgets, that would happen
in `atk_object_wrapper_new`, similar to how
Change-Id: I2281d15c38a229410469c29a14fdc4221aeb3e1e
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Tue Jul 16 13:57:41 2024 +0200
tdf#155447 qt a11y: Report accessible ID
implements it for the qt6 VCL plugin.
However, since native widgets are now used
almost everywhere for the gtk3 VCL plugin,
the implementation in `atk_object_wrapper_new`
does not take effect for most of the UI, including the
spell checking dialog mentioned in tdf#155447.
This commit makes sure an accessible ID is set for
such cases as well.
Using the GtkBuilder ID is also mentioned
in the `atk_object_set_accessible_id` doc [1]:
> Sets the accessible ID of the accessible. This is not meant to be
> presented to the user, but to be an ID which is stable over application
> development. Typically, this is the gtkbuilder ID. Such an ID will be
> available for instance to identify a given well-known accessible object
> for tailored screen reading, or for automatic regression testing.
GTK 4 currently doesn't have API to set an accessible ID.
[1] https://docs.gtk.org/atk/method.Object.set_accessible_id.html
Change-Id: I6061888f38aa40a0d3c4e680b7daa1649d5954e0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170586
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
For Qt >= 6.8, report the accessible ID provided by
`XAccessibleContext2::getAccessibleId` when
`QtAccessibleWidget::text` gets called with param
`QAccessible::Identifier`, as introduced in
qtbase commit [1]:
commit 9ec1de2528b871099d416d15592fcc5ef9242a64
Author: Jens Trillmann <jens.trillmann@governikus.de>
Date: Wed Mar 13 14:00:38 2024 +0100
Add Identifier role to QAccessible and use it in OS interfaces
* Unify the default identifier creation for QAccessibleInterface on
all platforms to be the same as the previous identifier on Linux.
This may change some identifiers on Windows.
[ChangeLog][QAccessible][QAccessibleInterface] Add possibility to
add unique identifier to QAccessibleInterface to give a11y elements
consistent identifiers.
Task-number: QTBUG-123361
Change-Id: I8c42956a4c497e71909d71dcb27bc87433937b69
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
`VCLXAccessibleComponent::getAccessibleId` returns the ID
of the corresponding `vcl::Window` which equals to the GtkBuilder ID
set in the .ui file, e.g. "SpellingDialog" for the spelling dialog
(see `cui/uiconfig/ui/spellingdialog.ui`).
This could be used for reliable identification by ATs, e.g.
to identify the spelling dialog and specific widgets in it
(see tdf#155447) or for automated tests.
[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=9ec1de2528b871099d416d15592fcc5ef9242a64
Change-Id: I2281d15c38a229410469c29a14fdc4221aeb3e1e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170583
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Return an empty string instead of "Unknown" for
unsupported properties/text types in
`QtAccessibleWidget::text`. Explicitly returning
a non-empty string can be misleading, and e.g.
also prevents the default calculation of an
accessible ID that Qt does internally when an
empty string is returned for `QAccessible::Identifier`
which was introduced into qtbase in [1]
commit 9ec1de2528b871099d416d15592fcc5ef9242a64
Author: Jens Trillmann <jens.trillmann@governikus.de>
Date: Wed Mar 13 14:00:38 2024 +0100
Add Identifier role to QAccessible and use it in OS interfaces
* Unify the default identifier creation for QAccessibleInterface on
all platforms to be the same as the previous identifier on Linux.
This may change some identifiers on Windows.
[ChangeLog][QAccessible][QAccessibleInterface] Add possibility to
add unique identifier to QAccessibleInterface to give a11y elements
consistent identifiers.
Task-number: QTBUG-123361
Change-Id: I8c42956a4c497e71909d71dcb27bc87433937b69
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
[1] https://code.qt.io/cgit/qt/qtbase.git/commit/?id=9ec1de2528b871099d416d15592fcc5ef9242a64
Change-Id: I5eb5bd7adbc998a74a25f3c6c9ef373bd8faf1c4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170582
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This step wil now use the new primitive
PolyPolygonRGBAGradientPrimitive2D inside the
CairoSDPR/CairoPixelProcessor2D to directly
render gradients as RGBA, without painting
RGB (content) and A (alpha) separate and mixing
the results.
Note that this is only possible for gradients
which use the same graphical definition, see the
method 'sameDefinitionThanAlpha' and it's usages
in the code.
Change-Id: I6c46a211ea26d3e4b7bb39c7f2aaff09ec38dec5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170584
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>
Tested-by: Jenkins
Improve the hit-test machinery so we don't need to rerender the graphic
when moving the mouse over it
Change-Id: Ide088296aa9c2be1348b8908194f47378454ae40
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170587
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Jenkins
Commit a9f3c11375 (tdf#162002 DOCX import:
ignore subsetted embedded fonts for editing, 2024-07-12) decided to
ignore all subsetted fonts for editing, improve this a little so we only
ignore subsetted fonts when they can't even provide an English alphabet
in any form (lowercase, uppercase).
This avoids the possible problem that a font is marked as subsetted but
it's good enough in practice and we would still throw it away for
editing.
Change-Id: I0bc0e14ffc0c039f029220991bd16d9e3254f059
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170570
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
rather than the system clipboard, which makes no sense, since then the
tests interfere with each other
Change-Id: I911e88f5547dfc4f3558b9ed3ef670cef4903420
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170574
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Check it contains same as central directory header, also check data
descriptor if available. Also check there are no gaps or overlaps.
This causes 3 fuzzer generated test documents to fail to load; adapt
tests.
Change-Id: If5813652f3bd03e90fdf95eb97e1e1523455b2b8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170571
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
This reverts commit 25.2 358ac0da827f908ce312c6d392a3d9102f36428e.
which was backported to 24.8
Although this patch made the situation "better than it was"
for most cases, it will inevitably make some documents worse.
Ultimately, this approach is wrong.
See tdf#158977's 158977_linkNonEmptyFirst.docx.
We can't only copy from the styles that "express" a H/F
(and UNO doesn't let us copy from styles that hide it).
A COPY appropach would need to ALWAYS import every header/footer
into a dedicated "header/footer repository" page style,
and every page style would need to copy its "expressed"
headers/footers from the repository to its page style.
That would mean our copy procedure would need to be very robust,
and all of this is way too big for a bug-fixer like me to consider.
I don't want to be the one on the hook expected to fix it properly.
Change-Id: I2af4a03a219daabf186473839ba444ff9797ec2f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170530
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
Detect where created when a RGBA gradient could be
used directly and create a primitive representing
that, a PolyPolygonRGBAGradientPrimitive2D.
That primitive decomposes to what was created before,
so no primitive renderer has to be touched, all will
work as before.
NOTE: That helper primitive just holds references to
what would be created anyways, so one depth step
added but not really any additional data.
This is the 1st step for direct support, the 2nd is
to then detect and use that primitive in SDPR
implementations directly.
Change-Id: I4f247636ce58a8a1fd1e0df32dabed0d6cc10d0e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170527
Tested-by: Jenkins
Reviewed-by: Armin Le Grand <Armin.Le.Grand@me.com>