Commit Graph

502543 Commits

Author SHA1 Message Date
Michael Weghorn
ce67331daa tdf#130857 VclBuilder: Store radio button groups in BuilderBase
Move the std::vector<RadioButtonGroupMap> and the method
to extract and add to that map from VclBuilder to its base
class, BuilderBase.

Add a getter, BuilderBase::getRadioButtonGroupMaps instead
of accessing the base class member directly in the VclBuilder subclass.

Change-Id: Ic0d2abbd9faa41760d542ab22a80f2ba23136ccf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178442
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-14 01:03:39 +01:00
Mike Kaganski
ae07889111 Fix GNU C++ version check
It must match the existing GNU C version check (starting at line 4812).
An omission from commit 6ef2d358ac (Adapt
Clang and GCC minimum version checks, 2023-09-23).

Change-Id: Iaaf7d8ba5ab7d731db9f4e84311a37600444cedc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178439
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-12-13 21:53:47 +01:00
Olivier Hallot
49250f85f5 Update git submodules
* Update helpcontent2 from branch 'master'
  to 7407423c52548eeed98be9ebf00f20a823b1ac29
  - Mute L10N in Navigator context help page (II)
    
    Change-Id: I90c53621efef6bdfd47c68a57d285daf3ecb7ba7
    Reviewed-on: https://gerrit.libreoffice.org/c/help/+/178440
    Tested-by: Jenkins
    Reviewed-by: Olivier Hallot <olivier.hallot@libreoffice.org>
2024-12-13 21:09:21 +01:00
Michael Weghorn
9a493013f2 a11y: Port from svtools to vcl clipboard helper
Switch from using svt::OStringTransfer::CopyString
to vcl::unohelper::TextDataObject::CopyStringTo
to copy a string to the clipboard, to avoid
a dependency on the svtools library for this task.

Change-Id: I5226c28b5519d4fc020f45d7967b9ad15aab0dae
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178438
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:53:06 +01:00
Michael Weghorn
42b788d090 a11y: Make TabBar a11y independent of HAVE_FEATURE_SCRIPTING
Build the code for the TabBar a11y classes independent of
whether or not the scripting feature is enabled.

Otherwise, e.g. the tab bar showing sheets in Calc is inaccessible
in a `--disable-scripting` build, i.e. it e.g. doesn't show up
in Accerciser.

It was made conditional on HAVE_FEATURE_SCRIPTING in

    commit fb308c193b
    Date:   Wed May 19 12:16:42 2021 +0200

        Fix --disable-scripting for DESKTOP build

, which doesn't give any explicit reason, so my
assumption is that it had some dependency relying
on that feature being enabled back then.

At least a local `--disable-scripting` build of mine
works fine with this enabled again now, so let's assume
whatever was the problem back then is solved by now.

Change-Id: I6ee2ea6823aaa30bf597678c2b3ee86b42111920
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178437
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:52:04 +01:00
Michael Weghorn
e9fd0df236 a11y: No longer let accessibility module depend on toolkit
In the AccessibleBrowseBox ctor, no longer use the
VCLUnoHelper::GetInterface helper from the toolkit module,
but do the same inline.

(Assigning to AccessibleBrowseBoxBase::m_xFocusWindow
after the AccessibleBrowseBoxBase base class ctor has
been called looks a little odd to me as that one
would add a focus listener for that window if
already set/passed when called - but leave the
logic unchanged for now.)

With this, Library_acc no longer depends on the
toolkit module, so drop the dependency from the
make file.

Change-Id: I8e7759c2d92a344bef51d154df0045c78f0471fe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178435
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:58 +01:00
Michael Weghorn
26c2b0af00 a11y: Move VCLXAccessibleComponent from toolkit to vcl
After

    commit 168512dce7
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Dec 12 18:06:13 2024 +0100

        a11y: Stop using VCLXWindow in vcl a11y classes

and further related commits, VCLXAccessibleComponent
no longer depends on anything in the toolkit module,
so move it from there to vcl.

This way, subclassing VCLXAccessibleComponent (as the
a11y classes for vcl widgets do, currently located in
accessibility/ ) no longer introduces a toolkit
dependency.

Change-Id: I4fd33fb1dc2265d75e8ca9ad87bcc70db61639d3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178434
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:52 +01:00
Michael Weghorn
007d1815a2 a11y: Drop unused toolkit includes
Change-Id: Idc51576e05306cd45aec291e05b8b19a2cd2b2fb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178433
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-13 20:51:44 +01:00
Michael Weghorn
a3e4ee0aa6 a11y: Drop always null BrowseBoxAccessibleElement focus win param
Drop the `_xFocusWindow` param from the BrowseBoxAccessibleElement
ctor. Both subclasses are unconditionally passing nullptr.
Just unconditionally pass nullptr in the base class ctor instead
of forwarding the (always nullptr) param.

Change-Id: I9296ae8dae8ac53c52cec99e143288e70a586ce0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178432
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:38 +01:00
Michael Weghorn
7eefb80563 a11y: Drop always null AccessibleBrowseBoxHeaderCell focus win param
Both callers of AccessibleFactory::createAccessibleCheckBoxCell
(in SvHeaderTabListBox::CreateAccessibleColumnHeader)
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleBrowseBoxHeaderCell ctor, and unconditionally
pass nullptr to the base class ctor.

This is basically the same as for AccessibleBrowseBoxTableCell in previous commit

    Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri Dec 13 12:37:03 2024 +0100

        a11y: Drop always null AccessibleBrowseBoxTableCell focus win param

Change-Id: Ife57d0163f1c99407e08875ba98725ea114597cb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178418
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:32 +01:00
Michael Weghorn
fd50ed4aac a11y: Drop always null AccessibleCheckBoxCell focus win param
Both callers of AccessibleFactory::createAccessibleCheckBoxCell
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleCheckBoxCell ctor, and unconditionally
pass nullptr to the base class ctor.

This is the same as for AccessibleBrowseBoxTableCell in previous commit

    Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Fri Dec 13 12:37:03 2024 +0100

        a11y: Drop always null AccessibleBrowseBoxTableCell focus win param

Change-Id: I76660aed909fc73ab19bc99a3e3bfb54176e7e10
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178417
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-13 20:51:25 +01:00
Michael Weghorn
aa2cad6d86 a11y: Drop always null AccessibleBrowseBoxTableCell focus win param
Both callers of AccessibleFactory::createAccessibleBrowseBoxTableCell
unconditionally pass nullptr for the `_xFocusWindow` param.
Therefore, drop the parameter from that method and the
AccessibleBrowseBoxTableCell ctor, and unconditionally
pass nullptr to the base class ctor.

Change-Id: I22d5cb98332aa5d89fc4c479d0ec29588fe83e4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178416
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:18 +01:00
Michael Weghorn
6bc07b0717 a11y: Use delegating ctor in AccessibleBrowseBoxBase
... and pass the Reference params by const ref, as
suggested by loplugin:passparamsbyref.

Change-Id: I7f0e153d901f451d47d6a9b94255dd41f89c7d0a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178408
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-13 20:51:12 +01:00
Michael Weghorn
c126c209ac a11y: Drop unused includes
Change-Id: I99d087f820cc8195de525889b8d766304ef18396
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178407
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:51:05 +01:00
Michael Weghorn
3794ab3540 a11y: Report font slant (italic) in IDE editor with correct type
Use the existing vcl::unohelper::ConvertFontSlant
helper to convert the FontItalic enum value to the
corresponding FontSlant instead of casting to an integer.

The latter would trigger an assertion when trying to
extract a FontSlant from the Any later, seen e.g.
with the qt6 VCL plugin when navigating to the paragraphs
in the "Tools" > "Macros" > "Edit Macros" dialog in Accerciser,
or when moving navigating through the text while Orca is active.

Backtrace:

    1 __pthread_kill_implementation pthread_kill.c 44 0x7ffff789dc8c
    2 __pthread_kill_internal pthread_kill.c 78 0x7ffff789dcef
    3 __GI_raise raise.c 26 0x7ffff7849c42
    4 __GI_abort abort.c 79 0x7ffff78324f0
    5 ?? 0x7ffff74a1a3d
    6 ?? 0x7ffff74b300a
    7 std::terminate() 0x7ffff74a15e9
    8 __cxa_throw 0x7ffff74b3288
    9 o3tl::doAccess<com::sun::awt::FontSlant> any.hxx 284 0x7fffee23ea99
    10 ConvertUnoToIAccessible2TextAttributes AccessibleTextAttributeHelper.cxx 288 0x7fffee23bd8e
    11 AccessibleTextAttributeHelper::GetIAccessible2TextAttributes AccessibleTextAttributeHelper.cxx 347 0x7fffee23b45e
    12 QtAccessibleWidget::attributes QtAccessibleWidget.cxx 1001 0x7fffe4685866
    13 non-virtual thunk to QtAccessibleWidget::attributes(int, int *, int *) const 0x7fffe4685bca
    14 AtSpiAdaptor::getAttributes atspiadaptor.cpp 2329 0x7fffe2d15b79
    15 AtSpiAdaptor::textInterface atspiadaptor.cpp 1990 0x7fffe2d0c3ed
    16 AtSpiAdaptor::handleMessage atspiadaptor.cpp 1481 0x7fffe2d067f8
    17 QDBusConnectionPrivate::activateObject qdbusintegrator.cpp 1448 0x7fffe046d567
    18 QDBusActivateObjectEvent::placeMetaCall qdbusintegrator.cpp 1604 0x7fffe046e520
    19 QObject::event qobject.cpp 1432 0x7fffe3908d70
    20 QApplicationPrivate::notify_helper qapplication.cpp 3297 0x7fffe17e2d90
    21 QApplication::notify qapplication.cpp 3247 0x7fffe17e6cad
    22 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1122 0x7fffe3845c99
    23 QCoreApplication::sendEvent qcoreapplication.cpp 1564 0x7fffe3846a79
    24 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1920 0x7fffe38483b8
    25 QCoreApplication::sendPostedEvents qcoreapplication.cpp 1751 0x7fffe38468bc
    26 postEventSourceDispatch qeventdispatcher_glib.cpp 246 0x7fffe3e39281
    27 ?? 0x7fffea10b81f
    28 ?? 0x7fffea10da57
    29 g_main_context_iteration 0x7fffea10e1c0
    30 QEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 399 0x7fffe3e3847b
    31 QPAEventDispatcherGlib::processEvents qeventdispatcher_glib.cpp 89 0x7fffe2f67218
    32 QtInstance::ImplYield QtInstance.cxx 464 0x7fffe472d3c2
    33 QtInstance::DoYield QtInstance.cxx 475 0x7fffe4730441
    34 ImplYield svapp.cxx 385 0x7fffeed3c9d6
    35 Application::Yield svapp.cxx 473 0x7fffeed3c36f
    36 Application::Execute svapp.cxx 360 0x7fffeed3c150
    37 desktop::Desktop::Main app.cxx 1679 0x7ffff7b2788b
    38 ImplSVMain svmain.cxx 228 0x7fffeed5e2a6
    39 SVMain svmain.cxx 246 0x7fffeed5fe99
    40 soffice_main sofficemain.cxx 121 0x7ffff7ba11ba
    41 sal_main main.c 51 0x555555555a6d
    42 main main.c 49 0x555555555a47

Change-Id: Id30fc0acf20af5213c025a337765bb638ab6b02c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178404
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:50:59 +01:00
Michael Weghorn
cd76d6caaf a11y: Pass vcl::Window instead of VCLXWindow for TextWindow a11y
As was done for the other a11y classes subclassing
VCLXAccessibleComponent in

    commit 168512dce7
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Dec 12 18:06:13 2024 +0100

        a11y: Stop using VCLXWindow in vcl a11y classes

, also pass the vcl::Window when creating an
XAccessibleContext for a TextView, to get rid of
the UNO/toolkit dependency.

Change-Id: I3c5febd27a53fe17f83cc4e95dd7466f11a7a225
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178403
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-13 20:50:52 +01:00
Michael Weghorn
667823e412 a11y: Get text window doc accessible from Window on demand
Instead of storing a reference to the VCLXWindow (which is
a TextWindowPeer), which is the EditorWindow's accessible
as Document::m_xAccessible member, adjust Document::getAccessible
to get the accessible on demand via vcl::Window::GetAccessible
instead.

This also prepares for no more passing the VCLXWindow
to the ctor in an upcoming commit.

Change-Id: I498f90a456eda453508a4f1ed84983006594ea86
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178402
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-13 20:50:46 +01:00
Caolán McNamara
71a9de600a crashtesting: assert on reimport of docx export of ooo102874-2.doc
#0  SdrObjList::RemoveObjectFromContainer (this=0x1d12e30, nObjectPosition=3) at core/svx/source/svdraw/svdpage.cxx:1093
 #1  0x00007ffff15da0bd in SdrObjList::SetObjectOrdNum (this=0x1d12e30, nOldObjNum=3, nNewObjNum=2) at core/svx/source/svdraw/svdpage.cxx:536
 #2  0x00007ffff14c954c in SdrObject::ensureSortedImmediatelyAfter (this=0x4f56d30, rFirst=...) at core/svx/source/svdraw/svdobj.cxx:897
 #3  0x00007fffcdc4978c in SwTextBoxHelper::DoTextBoxZOrderCorrection (pShape=0x4c3a660, pObj=0x4c3d730) at core/sw/source/core/doc/textboxhelper.cxx:1638
 #4  0x00007fffcdc4bcbc in SwTextBoxHelper::changeAnchor (pShape=0x4c3a660, pObj=0x4c3d730) at core/sw/source/core/doc/textboxhelper.cxx:1247
 #5  0x00007fffcdc4e613 in SwTextBoxHelper::synchronizeGroupTextBoxProperty
     (pFunc=0x7fffcdc4bc10 <SwTextBoxHelper::changeAnchor(SwFrameFormat*, SdrObject*)>, pFormat=0x4c3a660, pObj=0x4c3d730)
     at core/sw/source/core/doc/textboxhelper.cxx:1652
 #6  0x00007fffcdd41a89 in SwDrawContact::Changed_ (this=0x4c55400, rObj=..., eType=SdrUserCallType::ChildMoveOnly, pOldBoundRect=0x7fffffff09d8)
     at core/sw/source/core/draw/dcontact.cxx:1250
 #7  0x00007fffcdd410a7 in SwDrawContact::Changed (this=0x4c55400, rObj=..., eType=SdrUserCallType::ChildMoveOnly, rOldBoundRect=...)
     at core/sw/source/core/draw/dcontact.cxx:1005
 #8  0x00007ffff14c7356 in SdrObject::SendUserCall (this=0x4c3d730, eUserCall=SdrUserCallType::MoveOnly, rBoundRect=...) at core/svx/source/svdraw/svdobj.cxx:2827
 #9  0x00007ffff14b11d8 in SdrObjCustomShape::Move (this=0x4c3d730, rSiz=Size = {...}) at core/svx/source/svdraw/svdoashp.cxx:1499
 #10 0x00007ffff152753b in SdrObjGroup::Move (this=0x1be18e0, rSiz=Size = {...}) at core/svx/source/svdraw/svdogrp.cxx:561
 #11 0x00007fffce8c80b8 in SwViewShellImp::NotifySizeChg
     (unique_ptrI7SdrMarkSt14default_deleteIS2_EESaIS5_EE11_M_allocateEm=<error reading variable: Unhandled DWARF expression opcode 0x0>, hrowE=<error reading variable: Unhandled DWARF expression opcode 0x0>) at core/sw/source/core/view/vdraw.cxx:274
 #12 0x00007fffce032bc1 in AdjustSizeChgNotify (pRoot=0x5e1c7f0) at core/sw/source/core/layout/pagechg.cxx:851
 #13 0x00007fffce03243f in SwRootFrame::CheckViewLayout (this=0x5e1c7f0, pViewOpt=0x0, pVisArea=0x0) at core/sw/source/core/layout/pagechg.cxx:2445
 #14 0x00007fffce032eec in SwPageFrame::Cut (this=0x5f19910) at core/sw/source/core/layout/pagechg.cxx:921
 #15 0x00007fffce037d40 in SwRootFrame::RemovePage (this=0x5e1c7f0, pDelRef=0x7fffffff13c0, eResult=SwRemoveResult::Prev)
     at core/sw/source/core/layout/pagechg.cxx:1518
 #16 0x00007fffce03808e in SwRootFrame::RemoveSuperfluous (this=0x5e1c7f0) at core/sw/source/core/layout/pagechg.cxx:1557
 #17 0x00007fffcdfe8d04 in SwLayAction::InternalAction (this=0x7fffffff1a30, pRenderContext=0x5211510) at core/sw/source/core/layout/layact.cxx:694
 #18 0x00007fffcdfe7cc6 in SwLayAction::Action (this=0x7fffffff1a30, pRenderContext=0x5211510) at core/sw/source/core/layout/layact.cxx:396
 #19 0x00007fffce8d5995 in SwViewShell::CalcLayout (this=0x521c540) at core/sw/source/core/view/viewsh.cxx:1197
 #20 0x00007fffcde1233f in SwEditShell::CalcLayout (this=0x521c540) at core/sw/source/core/edit/edws.cxx:111

Change-Id: I66ffbbfc74e52eea2e24e486d52607e84ffb8fcb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178415
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-12-13 14:44:52 +01:00
Mike Kaganski
7de706483e Avoid a warning shown since bumping Windows baseline
This is shown now, since commit b664c08a6d
(Drop support for Windows versions prior to Windows 10, 2024-12-07):

  Change your target platform to Windows 7 or below if your application
  requires backward compatibility for the ADO interface.

Change-Id: Ic95a0819440b958cc3e01bbc2ffe91d7495bb8fb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178406
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-12-13 13:40:19 +01:00
Justin Luth
6edc10c6b0 tdf#163033 sc: fix crash when copying comment to another ScDocument
Fixes a crash that started with
7.6.0.2 commit eec038b982b4672ac8feb030cb6bae546fa8c901

The crash occurred when comments were copied (without cloning)
to another document and then the source document was closed,
removing access to the (uncloned) comment.

Also took the opportunity to put the (minutely) most expensive
comparison at the end of the if clause.

Change-Id: Ia5c1313aa17550f760d5f870c566f06b7abd598b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178394
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
2024-12-13 13:30:38 +01:00
Balazs Varga
9948c2ed03 tdf#150789 - FILEOPEN PPTX: fix text in SmartArt vertically off
Calculate correctly the textbox area of upArrowCallout and
downArrowCallout shapes in group shapes. In grouped list
text area does not cover the whole shape but just a part of it at the top.

In case of upArrowCallout and downArrowCallout the arrow size of the shape
is not included in the textbox area of the full shape.

Change-Id: If732305747c20da55bbd2896522c0b9c05cc4b4b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178343
Tested-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
Tested-by: Jenkins
2024-12-13 12:56:00 +01:00
Noel Grandin
e7763739ae GetCountOrName returns a UI name
But the caller in SwXStyleFamily::getByIndex was treating the
return value like a programmatic name.

Change-Id: I6b3779be834f713e09a026fdcbf965753a77cc9a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178381
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Tested-by: Jenkins
2024-12-13 12:28:09 +01:00
Ilmari Lauhakangas
dc79662a04 tdf#144694 In direct SQL dialog, activate options 'Run SQL command
directly' and 'Show output of "select" statements' by default.

Change-Id: I7708259ccbe8b81b6c0ef9d6bc10c5c2c9933194
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178405
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-12-13 12:18:30 +01:00
Ariel Darshan
d2080376b3 tdf#163858 sd: Support autorepeating slides in windowed mode
Change-Id: I6b1d78f234699062d6b846989e4d92bfa4b3d85d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176342
Tested-by: Jenkins
Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-12-13 12:15:59 +01:00
Mike Kaganski
982342138e Inline 'submit', and allow separate 'wip'/'private'
Now it's possible to run something like

  ./logerrit submit "" wip

to auto-guess the branch, and make it WIP.

Change-Id: I099a840ad39a1674c7dc5851c0a0c1d3976ee728
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178401
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2024-12-13 11:26:42 +01:00
Caolán McNamara
236244b81a cid#1636690 Dereference after null check
Change-Id: Ie32ffbe6148c2e12aa99068790fa7a1a1c0f27e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178399
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-12-13 11:04:34 +01:00
Mike Kaganski
3abe4b62e5 Deduplicate a bit
Change-Id: I5e0ec4adc79f81ff81d7cfe54e2f1a637b5d7f43
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178397
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2024-12-13 10:45:38 +01:00
Caolán McNamara
6002f2777a Replace workaround of resize to invalidate with an explicit SfxHint
Change-Id: Ic0c8ba5e5f65f7b1e472a667b69e737f4f1d9fbc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178389
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-12-13 09:57:04 +01:00
Caolán McNamara
f1ec7d9d90 Defer broadcast of postit field update from layout
until oTextPara has been applied to the field's associated postit
window.

This became a noticeable problem since:

commit 2fba6df7242586870988b62909156538b42c2bc0
CommitDate: Thu Dec 5 15:31:06 2024 +0100

    LOK: don't recreate the dialogs of an old view when loading new views

In the broken situation the contents of the postit are sent back to kit
as apparently empty, so newly inserted comments appear to be empty.

The broadcast bt of this scenario is:

 #0  sw::annotation::SwAnnotationWin::GetSimpleHtml (this=0x19f38790) at sw/source/uibase/docvw/AnnotationWin.cxx:516
 #1  0x00007f37d246283e in (anonymous namespace)::lcl_CommentNotification (pView=0x267cac40, nType=(anonymous namespace)::CommentNotificationType::Add,
     pItem=0x26baf4e0, nPostItId=0) at sw/source/uibase/docvw/PostItMgr.cxx:176
 #2  0x00007f37d2467fef in SwPostItMgr::LayoutPostIts (this=0x266d7160) at sw/source/uibase/docvw/PostItMgr.cxx:1084
 #3  0x00007f37d209dd1b in SwViewShell::VisPortChgd (this=0x267cce90, rRect=...) at sw/source/core/view/viewsh.cxx:1326
 #4  0x00007f37d119030d in SwCursorShell::VisPortChgd (this=0x267cce90, rRect=...) at sw/source/core/crsr/crsrsh.cxx:1788
 #5  0x00007f37d276478b in SwView::SetVisArea (this=0x267cac40, rRect=..., bUpdateScrollbar=true)
     at sw/source/uibase/uiview/viewport.cxx:249
 #6  0x00007f37d2764cc3 in SwView::SetVisArea (this=0x267cac40, rPt=..., bUpdateScrollbar=true)
     at sw/source/uibase/uiview/viewport.cxx:311
 #7  0x00007f37d2765e2e in SwView::Scroll (this=0x267cac40, rRect=..., nRangeX=65535, nRangeY=65535)
     at sw/source/uibase/uiview/viewport.cxx:495
 #8  0x00007f37d24d7708 in ScrollMDI (pVwSh=0x267cce90, rRect=..., nRangeX=65535, nRangeY=65535)
     at sw/source/uibase/docvw/edtwin3.cxx:41
 #9  0x00007f37d209a896 in SwViewShell::MakeVisible (this=0x267cce90, rRect=...) at sw/source/core/view/viewsh.cxx:665
 #10 0x00007f37d119a238 in SwCursorShell::MakeSelVisible (this=0x267cce90) at sw/source/core/crsr/crsrsh.cxx:3490
 #11 0x00007f37d1837671 in SwFEShell::MakeSelVisible (this=0x267cce90) at sw/source/core/frmedt/feshview.cxx:2677
 #12 0x00007f37d1192fcc in SwCursorShell::UpdateCursor (this=0x267cce90, eFlags=6, bIdleEnd=false)
     at sw/source/core/crsr/crsrsh.cxx:2345
 #13 0x00007f37d11886f9 in SwCursorShell::EndAction (this=0x267cce90, bIdleEnd=false) at sw/source/core/crsr/crsrsh.cxx:280
 #14 0x00007f37d178ed62 in SwEditShell::EndAllAction (this=0x267cce90) at sw/source/core/edit/edws.cxx:102
 #15 0x00007f37d2503daf in SwFieldMgr::InsertField (this=0x7fff88937c00, rData=...) at sw/source/uibase/fldui/fldmgr.cxx:1561
 #16 0x00007f37d292df75 in SwWrtShell::InsertPostIt (this=0x267cce90, rFieldMgr=..., rReq=...)

while in the "working" case IsScrollMDI is false and MakeVisible returns early.

2fba6df7 causes the profile's desire to restore core's SID_SIDEBAR to be
ignored and so the results of IsScrollMDI differ between the two
scenarios.

Which makes it more likely that IsScrollMDI is true when queried by
SwViewShell::MakeVisible, and so LayoutPostIts triggers before
pPostIt->SetTextObject, so the contents of that TextObject, while
applied to the postit, are not broadcast back via the kit.

put a StartAction/EndAction pairing when oTextPara is present to
suppress the update until oTextPara is applied.

Change-Id: Id42ff1be85fec4b1053e5a7726cf6d2ba8d7de84
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178326
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
(cherry picked from commit c29a10b51db8027f90397d1bd9e31bd8a3571bc6)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178390
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-12-13 09:56:32 +01:00
Caolán McNamara
0b9573b77f Hold vcl::Window by VclPtr
suspicious that there is "delete pOLV" after retrieving a bare pointer,
holdinf this by VclPtr looks sensible in any case.

program/libmergedlo.so
	OutputDevice::LogicToPixel(tools::Rectangle const&) const
		/home/collabora/online-buildscripts/staging/builddir/libreoffice/vcl/source/outdev/map.cxx:906
program/libmergedlo.so
	vcl::Window::LogicToPixel(tools::Rectangle const&, MapMode const&) const
		/home/collabora/online-buildscripts/staging/builddir/libreoffice/vcl/source/window/window3.cxx:158
program/libmergedlo.so
	SdrObjEditView::SdrEndTextEdit(bool)
		/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedxv.cxx:1796
program/../program/libsdlo.so
	sd::View::SdrEndTextEdit(bool)
		/home/collabora/online-buildscripts/staging/builddir/libreoffice/sd/source/ui/view/sdview.cxx:780
program/../program/libsdlo.so
	sd::FuText::MouseButtonDown(MouseEvent const&)
		/home/collabora/online-buildscripts/staging/builddir/libreoffice/sd/source/ui/func/futext.cxx:290

Change-Id: Ic9e8c8cf4256acfcb45daa4b9d72b0cb1cea635a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178359
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-12-13 09:56:17 +01:00
Michael Weghorn
33b2abf2cd sw a11y: clang-format SidebarWinAccessible code
Change-Id: I623d7ce9520236dcca7322c808e89328c26cb70c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178387
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:02:45 +01:00
Michael Weghorn
12dd2f6b3c sw a11y: Merge SidebarWinAccessible and SidebarWinAccessibleContext
Instead of having two separate classes to implement
the XAccessible and the XAccessibleContext interfaces,
let SidebarWinAccessible implement both and
merge the corresponding logic from SidebarWinAccessibleContext
into SidebarWinAccessible.

This also reduces duplication.

In SidebarWinAccessible::getAccessibleContext,
simply return a reference to the object itself
(after checking that the object is still alive).

After

    Change-Id: If0894e733273eecad268c6a932ecee7c2e34b4c2
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Dec 12 18:06:13 2024 +0100

        a11y: Stop using VCLXWindow in vcl a11y classes

, there's also no more need for SidebarWinAccessible to
subclass VCLXWindow, so drop that inheritance.

Change-Id: I5688ced4f83a0291de49741dc1b9df8c8f256099
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178386
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 23:02:39 +01:00
Michael Weghorn
168512dce7 a11y: Stop using VCLXWindow in vcl a11y classes
Adjust VCLXAccessibleComponent and subclasses to take
a vcl::Window arg instead of a VCLXWindow in the ctor
and drop the VCLXAccessibleComponent::m_xVCLXWindow member
that used to hold a reference to the VCLXWindow.
(VCLXAccessibleComponent still holds a VclPtr
to the corresponding vcl::Window.)

Instead of passing the UNO/toolkit peer (VCLXWindow
and subclasses) to the AccessibleFactory to create
an XAccessibleContext context for the underlying VCL
widget, pass the underlying vcl widget, which can
now be passed as is to the corresponding ctors
of VCLXAccessibleComponent and specialized subclasses.

This follows earlier commits replacing the use of the
VCLXWindow classes by direct uses of the vcl::Window
subclasses inside VCLXAccessibleComponent and subclasses
and is the next step in reducing the UNO/toolkit
dependency in the accessibility implementation for
vcl widgets.

For now, the logic where those accessible objects
are created remains in VCLXWindow::CreateAccessibleContext
and overrides, but that can change in the future.

`IAccessibleFactory::createAccessibleContext(VCLXMultiLineEdit*)`
is just dropped and doesn't need its own replacement:
The previous VCLXMultiLineEdit variant was
creating a VCLXAccessibleEdit like the variant
taking a VCLXEdit, but VCLXMultiLineEdit doesn't
subclass VCLXEdit.
The vcl MultiLineEdit however subclasses Edit,
so VCLXMultiLineEdit::CreateAccessibleContext can make
use of `IAccessibleFactory::createAccessibleContext(Edit*)`
as well now.

This also implements what was mentioned in earlier
commit

    Change-Id: I67bb7a6a237e57d0c522790c09a595c02ac06325
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Dec 12 17:16:29 2024 +0100

        sw annotation win a11y: Skip VCLXWindow logic

:

> Drop the comment about the code being dodgy from
> SwAnnotationWin::CreateAccessible. This commit partially
> addresses it and switching VCLXAccessibleComponent
> to using the vcl::Window will take care of the rest,
> see upcoming commit
> Change-Id If0894e733273eecad268c6a932ecee7c2e34b4c2
> ("a11y: Stop using VCLXWindow in vcl a11y classes").

Now that the VCLXAccessibleComponent ctor takes a
vcl::Window, the sw::annotation::SwAnnotationWin
can be passed directly.

From a user perspective, no change in behavior is
intended by this commit.

Change-Id: If0894e733273eecad268c6a932ecee7c2e34b4c2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178385
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:02:33 +01:00
Michael Weghorn
5699b04a0c sw annotation win a11y: Skip VCLXWindow logic
Instead of overriding the base class VCLXWindow::CreateAccessibleContext
which gets called by VCLXWindow::getAccessibleContext and
results in the VCLXWindow base class also keeping a
pointer to the XAccessible, override
VCLXWindow::getAccessibleContext right away, and keep
a reference to the SidebarWinAccessibleContext
in SidebarWinAccessible itself.

This simplifies the code, removes the need to cast
the XAccessibleContext retrieved via the base class
methods, and also prepares for making VCLXAccessibleComponent
no more rely on the VCLXWindow, but using a vcl::Window
directly in an upcoming commit.

Drop the comment about the code being dodgy from
SwAnnotationWin::CreateAccessible. This commit partially
addresses it and switching VCLXAccessibleComponent
to using the vcl::Window will take care of the rest,
see upcoming commit
Change-Id If0894e733273eecad268c6a932ecee7c2e34b4c2
("a11y: Stop using VCLXWindow in vcl a11y classes").

Change-Id: I67bb7a6a237e57d0c522790c09a595c02ac06325
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178384
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:02:23 +01:00
Michael Weghorn
e2cd6cd7cb sw a11y: Pass the VCLXWindow to SidebarWinAccessibleContext ctor
SwAnnotationWin::CreateAccessible returns the very
object that is calling the SidebarWinAccessibleContext
ctor.

Make that more obvious by passing it as a param instead
of calling SwAnnotationWin::CreateAccessible and then
dynamic_casting that to a VCLXWindow.

Change-Id: Id2ef80c7e5540276548c635cf550a552302b2fcc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178383
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 23:02:04 +01:00
Michael Weghorn
e9a6ed092d sw a11y: Move SidebarWinAccessibleContext declaration to header
This is in preparation of reworking the
SidebarWinAccessible logic in upcoming commits.

Change-Id: Ia1c9bf6a62d1cefb6147f82891361b0ced251263
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178367
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 23:01:47 +01:00
Michael Weghorn
9486e163b6 a11y: Pass non-const ref to AccessibleListBox ctor
... and to the AccessibleIconView subclass one, too.

This is in preparation of switching the base class VCLXAccessibleComponent
ctor to taking a vcl::Window* instead of a VCLXWindow* in an
upcoming commit.

Change-Id: I10074f4c6716c2c7cb3b800c75bec8200ee6208c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178366
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:01:34 +01:00
Michael Weghorn
843a772dbb a11y: Pass non-const ref in AccessibleIconChoiceCtrl ctor
Pass a non-const SvtIconChoiceCtrl& instead of a const one,
in preparation of switching the base class VCLXAccessibleComponent
ctor to taking a vcl::Window* instead of a VCLXWindow* in an
upcoming commit.

Change-Id: Ib2fd0efeb897c8f375309b00946a89dd2f8fd097
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178365
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 23:00:56 +01:00
Michael Weghorn
dd8c7d0342 a11y: Rename VCLXAccessibleComponent::m_x{EventSource -> Window}
Change-Id: I3724481e81a5f2987567b51424da479879ca78ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178364
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:00:39 +01:00
Michael Weghorn
add40b532e toolkit a11y: Pass the XControl ref right away
Instead of passing/using a Reference<XAccessible>
and querying that one for the XControl interface
in the OAccessibleControlContext ctor and in
OAccessibleControlContext::implGetWindow, pass
(and remember) the control via a Reference<XControl>
right away.

Change-Id: I0a9e15cda37bf42ff06f00ef3f49efacf2992043
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178356
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 23:00:23 +01:00
Michael Weghorn
bbc2823f58 a11y: Move OCommonAccessibleComponent::m_aCreator to subclass
Move this member holding a weak reference to the XAccessible
that created the context to the OAccessibleControlContext
subclass, which is the only one making use of it now after
previous commit

    Change-Id: I29fb7cd42512a02fc1cc56835bb83f847e9ec0fd
    Author: Michael Weghorn <m.weghorn@posteo.de>
    Date:   Thu Dec 12 11:08:54 2024 +0100

        tdf#164294 a11y: Don't rely on "creator" to determine child index

This also removes the need to call OCommonAccessibleComponent::lateInit
in those subclasses that did so previously.

Change-Id: I3edd14810feb6c884b4e67db1f76b40ae003dffa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178355
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 23:00:05 +01:00
Michael Weghorn
6a68b96c6a tdf#164294 a11y: Don't rely on "creator" to determine child index
In OCommonAccessibleComponent::getAccessibleIndexInParent,
no longer rely on OCommonAccessibleComponent::m_aCreator
to have been set to the "creator" (i.e. the XAccessible whose
XAccessible::getAccessibleContext() created this object)
in order to determine the index of the object in its parent.

Instead, call XAccessible::getAccessibleContext on
the parent's child XAccessible objects and compare
that to `this`.

At least for SvxPixelCtlAccessible (and most likely other
child classes), OCommonAccessibleComponent::m_aCreator
isn't set (by a call to OCommonAccessibleComponent::lateInit),
so the logic would fail, and an incorrect index of -1
was returned.

Simplify the logic and no longer depend on
OCommonAccessibleComponent::m_aCreator in that
method. This also prepares for further decoupling
VCLXAccessibleComponent from the VCLXWindow toolkit/UNO class.
(The VCLXAccessibleComponent ctor currently calls
OCommonAccessibleComponent::lateInit with its VCLXWindow,
but overrides VCLXAccessibleComponent::getAccessibleIndexInParent
without making use of the "creator" there.)

Comments suggest that the previous logic was there to
avoid calling XAccessible::getAccessibleContext for
performance reasons.
If that's a concern for a particular subclass, overriding
OCommonAccessibleComponent::getAccessibleIndexInParent
in that subclass (and making use of whatever internal
details help to efficiently implement the method) seems
like a better and more reliable solution to me.

Change-Id: I29fb7cd42512a02fc1cc56835bb83f847e9ec0fd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178354
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
2024-12-12 22:59:35 +01:00
Michael Weghorn
7abcb501e1 a11y: Merge OAccessibleControlContext::Init into ctor
Instead of calling a default ctor without arguments
and then calling OAccessibleControlContext::Init
with the arguments directly afterwards, move
the OAccessibleControlContext::Init logic into
the ctor right away.

There's no need for using such a "late ctor" as the
comment calls it. (No virtual methods involved.)

Change-Id: I815decd44ce94f242ea8c4814b33e2f73b39241f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178353
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12 22:59:03 +01:00
Christian Lohmaier
2976e22f7a update credits
Change-Id: Ic661fad279ad26f8aebc9ca1a2c8b271090e7d62
2024-12-12 22:21:01 +01:00
Patrick Luby
94508506e7 tdf#147067 Jump to clicked spot if left mouse click with Option key
Most macOS applications such as TextEdit and Safari jump to the
clicked spot if the Option key is pressed during a left mouse click.

Change-Id: I56149e42daf1825cfebde8be8cfbb53645b31928
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178369
Tested-by: Jenkins
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
2024-12-12 17:51:55 +01:00
Caolán McNamara
5c24365472 cid#1636677 Uninitialized scalar field
and

cid#1636678 Uninitialized scalar field
cid#1636679 Uninitialized scalar variable
cid#1636680 Uninitialized scalar variable
cid#1636681 Uninitialized scalar variable
cid#1636682 Uninitialized scalar variable
cid#1636683 Uninitialized scalar field

Change-Id: I5f9c2cb0fae83b674d1f9f140ce4e8c91ef589f8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178360
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-12-12 16:08:44 +01:00
Stephan Bergmann
10a5c3162a Include the org.libreoffice.embindtest infrastructure in all Emscripten builds
...not just --enable-dbgutil ones, which gives more flexibility in using that
infrastructure downstream.  (The unotest/source/embindtest/embindtest.js code is
still only included in desktop/Executable_soffice_bin.mk for --enable-dbgutil
builds, though.)

Building unotest/source/embindtest/embindtest.cxx also outside of
--enable-dbgutil, and thus implicitly --enable-assert-always-abort, builds
required moving from assert() to some hand-crafted verify().

Change-Id: I3f0fa00feee25b4ea6e7866c22a5b4a4d40cb3d0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178361
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2024-12-12 16:02:22 +01:00
Hubert Figuière
6fb8d0b7d6 lok: getSlideShowInfo: return the slide names
This allow finding slides by bookmark

Change-Id: Ia951aebdd04b67f4138138f7c0e1404078cc23ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178345
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2024-12-12 15:58:24 +01:00
Christian Lohmaier
1cabb20fad replace a couple manual calls to cygpath with PathFormat
this fixes using the MSM merge modules in the wsl-as-helper case and
avoids "cygpath not found" error lines when doing the compiler tests
when running configure.

Also capture and report the output of failed msidb calls in the
isntaller code and simplify the path-mangling to windows-style

Change-Id: I6877edda72959ab592e686d662b1344487e6313e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177966
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
Tested-by: Jenkins
2024-12-12 15:29:30 +01:00
Mike Kaganski
02c7a9bec7 Use correct object
Fix an error in commit a1b18eba35
(Implement Custom Font Collections on pre-Windows 10 systems, 2024-01-11),
where the wrong object used in the call to CreateFontSetBuilder resulted
in the empty return from the initializer, overwriting the just-created
reference. Before commit 93350f4694 (Drop
pre-Win10 code from WinSkiaSalGraphicsImpl, 2024-12-07), it was checked,
and the pre-Win10 path was used. After the said commit, it results in a
nullptr dereference.

Change-Id: Ia59f6ae6d236d1eb2c474f4330dcee6f38276c66
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178357
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2024-12-12 13:25:14 +01:00