Following
Change-Id: I54e578098684a027c9bf2f192a5af3fecb4e65d7
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Sep 18 15:44:17 2026 +0200
toolkit: Rename TableControl_Impl to TableControl
, also rename the header and source file to match
with the new class name.
(See that commit's commit message for more background.)
Change-Id: I5d7c4251902689718b9b2f3217671cad5b071201
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211163
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
As mentioned in previous commit
Change-Id: I82c89866e90f4d29964626d483872e0eafbc4dbe
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Sep 18 15:30:10 2026 +0200
toolkit: Merge TableControl into TableControl_Impl
, rename TableControl_Impl to simply TableControl,
now that the two classes were merged.
The header and source
file will also be renamed accordingly.
Do it as a separate step to keep the diff of the
single commits clearer.
Change-Id: I54e578098684a027c9bf2f192a5af3fecb4e65d7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211162
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
So far, most of the logic for the TableControl
widget was implemented in the TableControl_Impl
implementation class that was held by the
TableControl via a std::shared_ptr
(TableControl::m_pImpl member).
However, other classes were also using the
TableControl_Impl directly.
Stop that separation and simplify code by merging
TableControl into TableControl_Impl. As mentioned,
the latter already implemented most of the logic,
so it is easier to merge the remaining logic into
that class than the other way around.
Move the remaining TableControl logic into
TableControl_Impl, in particular make TableControl_Impl
a Control subclass and move the vcl::Window/Control
overrides to TableControl_Impl.
Now that TableControl_Impl is a vcl::Window subclass,
VclPtr is the appropriate way for handling shared
ownership and no longer std::shared_ptr.
Therefore, switch to using VclPtr instead of shared_ptr
in the corresponding ITableModel methods
(ITableModel::addTableModelListener and
ITableModel::removeTableModelListener) and corresponding
data structures used in the subclasses.
See also commit message of previous commit
Change-Id: I74b9b29f03d03571709d1c8a7b416b0a6a12319a
Author: Michael Weghorn <m.weghorn@posteo.de>
Date: Fri Sep 18 11:07:29 2026 +0200
toolkit: Use TableControl_Impl directly instead of ITableModelListener
that was already preparing for that change.
No change in behavior intended.
Now that there is no more TableControl that owns it,
it makes sense to rename TableControl_Impl to TableControl.
That will happen in a separate upcoming commit, to keep
the diff clearer/more manageable.
Change-Id: I82c89866e90f4d29964626d483872e0eafbc4dbe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211161
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Expose font variation axis info to scripting and extensions via a new
com.sun.star.awt.FontVariations service. From Basic:
oInfo = createUnoService("com.sun.star.awt.FontVariations")
aAxes = oInfo.getFontVariationAxes("Reem Kufi")
The intent is to allow extensions to build a UI for setting font
variations, by querying the axes for an arbitrary font family and then
setting CharFontVariations property.
Change-Id: I4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205070
Reviewed-by: Khaled Hosny <khaled@libreoffice.org>
Tested-by: Jenkins
this was skipped in previous runs, since it contains some code behind #if
After inspecting these, it seems like the removals should not cause trouble.
Change-Id: If1e3e3c7c0fc14ed6e8b51174a0e7f1220fdbc8b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197496
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
these were skipped in previous runs, since they contain some code behind #if
After inspecting these, it seems like the removals should not cause trouble.
This also shaves off some 140M input
Change-Id: Ie1f57174dd6fec3ba5b0b91eb0688acdc1a8143d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197494
Tested-by: Jenkins
Reviewed-by: Gabor Kelemen <gabor.kelemen@collabora.com>
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
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>
This is the ComboBox equivalent of
Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b
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: I8ae7a8a53fa04088ab9130d0905498eb45ad46ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185687
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
This is the ScrollBar equivalent of
Change-Id: If6fa82008f3347c4f95538ab181eaa50c7d9636b
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: I0d8759b699fea20ccf8bea9ec897879f6e3e07b1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185686
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>