After recent commit 851fb75779
recheck these directories in include/ again
to test drive the new --headersfwd mode of bin/find-unneeded-includes
Change-Id: I0ede437c4f9958cd98210ed1760a5b98ea8bd1ad
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192377
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
The two places in cellvalueconversion.cxx using the null date were
introduced in commit a7e949673c
(gridfixes: #i117265# use a NumberFormatter for converting cell
values to text., 2012-09-14); they are used together, so that the
code in lcl_convertDateToDays uses the same epoch as defined in
the respective number formatter, and the obtained number value is
only ever used inside convertToString in a call to the formatter's
convertNumberToString. The old value was arbitrary; and the new
value has some optimizations in the code (see Date::DateToDays and
comphelper::date::convertDateToDaysNormalizing called from it).
Change-Id: I9c050d26ace1cf3fccde579d0d91c00f26bb3fd8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190788
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
The normalizers are owned and used only internally; their lifetime
can be controlled using unique_ptr, and getValueNormalizer can
return a bare pointer, instead of a boolean plus an out parameter.
Change-Id: I3e4dca8dec00196a1558d6215316552efde7b906
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190786
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
The bool return value is unused.
Drop it and use a string return value instead of an out
param.
Change-Id: Icd13b882cbeec25029d571988cc722e396361aab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189658
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
and
cid#1660225 Variable copied when it could be moved
cid#1660211 Variable copied when it could be moved
cid#1660185 Variable copied when it could be moved
cid#1660173 Variable copied when it could be moved
cid#1660168 Variable copied when it could be moved
cid#1660166 Variable copied when it could be moved
cid#1660165 Variable copied when it could be moved
cid#1660163 Variable copied when it could be moved
cid#1660152 Variable copied when it could be moved
cid#1660149 Variable copied when it could be moved
cid#1660147 Variable copied when it could be moved
cid#1660145 Variable copied when it could be moved
cid#1660142 Variable copied when it could be moved
cid#1660140 Variable copied when it could be moved
cid#1660137 Variable copied when it could be moved
cid#1660136 Variable copied when it could be moved
cid#1660135 Variable copied when it could be moved
cid#1660128 Variable copied when it could be moved
cid#1660124 Variable copied when it could be moved
cid#1660122 Variable copied when it could be moved
cid#1660117 Variable copied when it could be moved
cid#1660114 Variable copied when it could be moved
cid#1660110 Variable copied when it could be moved
cid#1660109 Variable copied when it could be moved
cid#1660105 Variable copied when it could be moved
cid#1660104 Variable copied when it could be moved
cid#1660102 Variable copied when it could be moved
cid#1660100 Variable copied when it could be moved
cid#1660098 Variable copied when it could be moved
cid#1660080 Variable copied when it could be moved
cid#1660079 Variable copied when it could be moved
cid#1660078 Variable copied when it could be moved
cid#1660075 Variable copied when it could be moved
cid#1660071 Variable copied when it could be moved
cid#1660070 Variable copied when it could be moved
cid#1660064 Variable copied when it could be moved
cid#1660063 Variable copied when it could be moved
cid#1660060 Variable copied when it could be moved
cid#1660058 Variable copied when it could be moved
cid#1660053 Variable copied when it could be moved
cid#1660050 Variable copied when it could be moved
cid#1660049 Variable copied when it could be moved
cid#1660046 Variable copied when it could be moved
cid#1660042 Variable copied when it could be moved
cid#1660028 Variable copied when it could be moved
cid#1660023 Variable copied when it could be moved
cid#1660022 Variable copied when it could be moved
cid#1660021 Variable copied when it could be moved
cid#1660020 Variable copied when it could be moved
cid#1660017 Variable copied when it could be moved
cid#1660013 Variable copied when it could be moved
cid#1660005 Variable copied when it could be moved
cid#1660003 Variable copied when it could be moved
cid#1659999 Variable copied when it could be moved
cid#1659998 Variable copied when it could be moved
cid#1659995 Variable copied when it could be moved
cid#1659993 Variable copied when it could be moved
cid#1659989 Variable copied when it could be moved
cid#1659988 Variable copied when it could be moved
Change-Id: I2a30c8a2ac8785050d49b98635b0b406535b185a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189056
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
as part of the project of removing BitmapEx in favour of Bitmap, now that we can store RGBA data in Bitmap.
This mostly just moves the Bitmap->BitmapEx from inside OutputDevice to the various call sites,
from where I can make further improvements.
Change-Id: Id5366c1eb5ebca98fee7c974737552f4a09a5c2f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188341
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Return a reference to the concrete DNDListenerContainer
instance instead of one to the abstract
css::datatransfer::dnd::XDropTarget interface in
Window::GetDropTarget.
This allows to drop Window::GetDragGestureRecognizer
which was returning a reference to the
css::datatransfer::dnd::XDragGestureRecognizer interface
for the exact same object, so can now use
Window::GetDropTarget directly instead, which drops the
need to query for the other interface.
DNDEventDispatcher was already assuming that a
DNDListenerContainer object was returned and
casting to that, which is no longer needed now.
Change-Id: Ib7ea7cdb0650ba2410b112774f475b4799901538
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188271
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
By now, the accessible is known to always be an OAccessible,
so return that more specific type instead of a Reference to
the abstract XAccessible interface.
Change-Id: I60f6b2d6465abfcb04d4ee7d3a26bce69fccded3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188182
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
By now, the accessible is known to always be an OAccessible,
so return that more specific type instead of a Reference to
the abstract XAccessible interface.
Change-Id: Ie8f5318fb35d2fdeb59ac97452e2e27971c6b5a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188180
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The helper class used to implement less functionality
in the past and was used less than it is now.
But by now it is the central helper/base class used
by most a11y classes.
Since
commit 22049f633b
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 26 12:24:52 2025 +0200
vcl a11y: Let OAccessibleComponentHelper implement XAccessible
it also implements the XAccessible interface.
That will allow to switch parameters and class members
from the abstract XAccessible interface to using this
more concrete C++ base class in various places.
Rename the class to OAccessible to account for the
new responsibilities, and adjust its doc accordingly.
Renaming source and header file will be done in a
separate commit to simplify (git) keeping track.
Change-Id: I33210b47cda5f71820a3c0fa657e4c3548d45732
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186952
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
By now, in particular after
Change-Id: I62da0040e6c98636681c4f05dbd0b796dae5b928
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 26 09:35:07 2025 +0200
vcl a11y: Let VCLXAccessibleComponent implement XAccessible
, all OAccessibleComponentHelper subclasses are
implementing the XAccessible interface and returning
`this` in their XAccessible::getAccessibleContext implementation.
Unify and deduplicate that by moving the implementation to the
OAccessibleComponentHelper base class.
Locking specifics (whether a mutex was locked and which one)
and whether a check whether the accessible hadn't been
disposed yet was done varied across the different implementations.
The new OAccessibleComponentHelper::getAccessibleContext
unifies this to use OExternalLockGuard, i.e. it both locks
the mutex and throws an exception if the instance is no
longer alive.
Should this commit result in any issues, it's likely because
there is a preexisting locking issue/inconsistency or an object
has already been disposed and that needs to be addressed.
(The easiest approach in case of a disposed object would be
to simply catch + ignore the exception in the caller, but
a more thorough investigation would likely be helpful.)
Change-Id: Ib56a9ddb1c36356943c2dfd7a5705351ee43e9d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185849
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
While accessibility logic for vcl::Window and subclasses
was previously split between vcl::Window and
VCLXWindow, vcl::Window now takes care of everything
to create an XAccessible without involving VCLXWindow
now after
Change-Id: I25de1ab0f8b47b12346abd01bad05cb54fb75f52
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 26 09:45:11 2025 +0200
vcl a11y: Let vcl::Window create accessible directly, drop a11y factory
(and previous changes for vcl::Window subclasses).
Therefore, drop the remaining a11y logic from
VCLXWindow.
No longer let it implement the XAccessible and
XEventListener interfaces.
The latter was only implemented to clear the
reference to the accessible context in
VCLXWindow::disposing, but VCLXWindow now no longer
holds such a reference with this commit in place.
Drop calls to (the now nonexistent) VCLXWindow::disposing
in subclasses (and drop overrides now only calling
base class methods from another subclass).
vcl::Window::dispose already takes care of disposing the
window's XAccessible, so disposing the XAccessibleContext
in VCLXWindow::dispose is no more needed.
(VCLXAccessibleComponent implements both, the XAccessible
and XAccessibleContext interfaces.)
Change-Id: Ided896abdc84cfbbf883621020169699a37cf6df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185844
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
This is basically the vcl::Window base class equivalent of
commit f82aac71ed
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 12:30:12 2025 +0200
vcl a11y: Let PushButton create its accessible directly
, see that commit's message for more background and tips on
what to do if this commit causes any issues.
Now that Window::CreateAccessible and all overrides in
subclasses no longer make use of the VCLXWindow for
the XAccessible, VCLXWindow::CreateAccessibleContext
should no longer be called. Add an assert that would
trigger if that method was still called somehow.
Drop the now unused AccessibleFactory.
Further cleanup will be done in separate commits.
Java a11y tests that were previously relying on the
implementation detail that the XAccessible for many
vcl::Window subclasses was their VCLXWindow have been
adjusted in previous commit
Change-Id: Id96a2104d87c998b0bdcbce36451499484d81272
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Wed Jun 18 17:49:48 2025 +0200
java a11y tests: Don't rely on XWindow being XAccessible
Change-Id: I25de1ab0f8b47b12346abd01bad05cb54fb75f52
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185843
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
In order to retrieve the XAccessible associated with
a window in AccessibilityTools.getAccessibleObject,
no longer directly query the XWindow for the XAccessible
interface, but instead (temporarily) introduce and use a
new "XAccessible" property for the deprecated XVclWindowPeer
interface (which "gives access to the VCL window implementation")
in VCLXWindow to get the XAccessible for the underlying
vcl::Window.
This ensures this will continue to work when the VCLXWindow
no longer is the accessible for its associated vcl::Window,
s. upcoming commit
Change-Id: I25de1ab0f8b47b12346abd01bad05cb54fb75f52
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 26 09:45:11 2025 +0200
vcl a11y: Let vcl::Window create accessible directly, drop a11y factory
Once all Java a11y tests have been ported to C++, this
property will no longer be needed, because direct access to
the vcl::Window will be possible then, see e.g.
commit d3262b72f6
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Mon May 26 09:23:29 2025 +0200
a11y tests: Don't rely on XWindow being window's XAccessible
, but Java tests rely on the information being available
somehow via UNO API.
Change-Id: Id96a2104d87c998b0bdcbce36451499484d81272
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186680
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Return early in case GetWindow() returns null, which
allows to drop one indentation level.
Change-Id: Idfd4cc96f2a1c25d2f266f1f4ed20f23147609e4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186614
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
This reverts commit 4c15b15a20.
Reason for revert: Various code apparently relies on letting the AsyncCallback object destruct before the callback is handled.
Change-Id: I11b2ad872a7672199350d2333f8c9bbc7e78c9d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186611
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(1) remove the callback if the object destructs.
(2) assert if addCallback() is not going to do anything, so
we dont get subtle failure modes
Change-Id: Ibc4a8634c237858eb6add5e1db8ac1ca982590f2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186510
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This is the equivalent of
commit f82aac71ed
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 12:30:12 2025 +0200
vcl a11y: Let PushButton create its accessible directly
for Edit subclasses, see that commit's message for more background.
Since all of DateField, TimeField, MultiLineEdit and VclMultiLineEdit
are (not necessarily direct) subclasses of Edit and none of their
subclasses further up the class hierarchy than Edit override
Edit::CreateAccessible, there is no need for them to do so either,
but they can use the Edit implementation. Therefore, just drop the
corresponding methods of their VCLXWindow subclasses that were
calling `AccessibleFactory::createAccessibleContext(Edit* pEdit)`
explicitly.
(Before
Change-Id: Ifb7452de3e011a73aa798d1ea0302bbbc74ed7d2
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 20:13:09 2025 +0200
vcl a11y: Set DateField/TimeField window type in ctor
, two of them had some additional extra logic that might
have required them to override the base class implementation.)
Since VCLXAccessibleEdit implements the XAccessible interface
now, its SVTXAccessibleNumericField subclass no longer needs
to implement that directly.
Change-Id: I5fe96a9061afb9f51e494cdd41a27636d0aa4d74
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185838
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
So far, a DateField (or subclass) would be created
with WindowType::SPINFIELD due to its SpinField
base class (and not passing any explicit type to
the base class ctor).
However, when an accessible context would later be
retrieved, VCLXDateField::CreateAccessibleContext
would set WindowType::DATEFIELD on the control
before creating an XAccessibleContext via the
AccessibleFactory.
Changing the window type later that way seems odd,
and implies that the window type would be different
depending on whether or not accessibility is active.
Change that to set the DATEFIELD window type in the
ctor already.
The same applies for the TimeField and
WindowType::TIMEFIELD.
Should that have any unwanted side-effect, then
it might be that some code path currently only handling
the WindowType::SPINFIELD type might need to be
adjusted to handle WindowType::DATEFIELD and/or
WindowType::TIMEFIELD the same way.
Change-Id: Ifb7452de3e011a73aa798d1ea0302bbbc74ed7d2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185837
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This is the FormattedField equivalent of
commit f82aac71ed
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 12:30:12 2025 +0200
vcl a11y: Let PushButton create its accessible directly
, see that commit's message for more background.
Change-Id: I81e196680cc976b73ab029e595713e616ea90bee
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185692
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Since
Change-Id: I26249401d9bcde81908553cc01521ac0ead338dd
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 19:37:35 2025 +0200
vcl a11y: Let HeaderBar create its accessible directly
, the class doesn't add any functionality to its VCLXWindow
base class, so drop it altogether and just use plain
VCLXWindow instead.
Change-Id: I288103d2681a81c3828e311c9b12b7aee1ec1f85
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185691
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This is basically the HeaderBar equivalent of
commit f82aac71ed
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 12:30:12 2025 +0200
vcl a11y: Let PushButton create its accessible directly
, see that commit's message for more background.
In this case of HeaderBar, there is already an existing
HeaderBar::CreateAccessible method that was handling
the case where a custom function to create the XAccessible
was set and the default vcl::Window logic going via the
VCLXWindow/AccessibleFactory was only triggered otherwise.
Handle that case also directly in there instead.
Change-Id: I26249401d9bcde81908553cc01521ac0ead338dd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185690
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Since
Change-Id: Ib6a6746f7fcbcacddc4cc05a00cf63fe04407f80
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 19:21:33 2025 +0200
vcl a11y: Let ToolBox create its accessible directly
, the class doesn't add any functionality to its VCLXWindow
base class, so drop it altogether and just use plain
VCLXWindow instead.
Change-Id: I2ef8efa06dc04e5e9b18dc743575666d41ce5648
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185689
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
This is the ToolBox equivalent of
commit f82aac71ed
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Thu May 22 12:30:12 2025 +0200
vcl a11y: Let PushButton create its accessible directly
, see that commit's message for more background.
Change-Id: Ib6a6746f7fcbcacddc4cc05a00cf63fe04407f80
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185688
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>