basic/source/inc/runtime.hxx                                               |   
 1 
 basic/source/runtime/runtime.cxx                                           |   
11 -
 configure.ac                                                               |   
 2 
 cui/uiconfig/ui/widgettestdialog.ui                                        |   
 2 
 external/skia/Library_skia.mk                                              |   
 1 
 external/skia/UnpackedTarball_skia.mk                                      |   
 1 
 external/skia/missing-include.patch.0                                      |   
10 +
 external/skia/tdf147342.patch.0                                            |   
95 ++++++++++
 hwpfilter/source/hbox.cxx                                                  |   
 7 
 include/rtl/string.hxx                                                     |   
 2 
 oox/qa/unit/data/tdf153260_VML_trim_export.odt                             
|binary
 oox/qa/unit/vml.cxx                                                        |   
23 ++
 oox/source/crypto/AgileEngine.cxx                                          |   
 4 
 oox/source/export/shapes.cxx                                               |   
64 ++++--
 oox/source/export/vmlexport.cxx                                            |   
 6 
 sc/source/core/tool/interpr3.cxx                                           |   
 7 
 sc/source/core/tool/scmatrix.cxx                                           |   
45 ++--
 sc/source/ui/dbgui/csvgrid.cxx                                             |   
18 -
 sd/qa/unit/data/odp/linked_ole.odp                                         
|binary
 sd/qa/unit/export-tests-ooxml3.cxx                                         |   
18 +
 svx/source/sdr/contact/objectcontactofpageview.cxx                         |   
36 ++-
 sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx                              |   
 2 
 sw/qa/uitest/sidebar/stylesSidebar.py                                      |   
15 -
 sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py           |   
87 ++++-----
 sw/source/core/crsr/swcrsr.cxx                                             |   
 7 
 sw/source/filter/ww8/ww8atr.cxx                                            |   
 6 
 sysui/desktop/debian/postinst                                              |   
 2 
 sysui/desktop/freedesktop/freedesktop-menus.spec                           |   
 4 
 sysui/desktop/macosx/Info.plist.in                                         |   
 2 
 sysui/desktop/menus/base.desktop                                           |   
 2 
 sysui/desktop/solaris/mailcap                                              |   
 2 
 vcl/Library_vcl.mk                                                         |   
 4 
 vcl/inc/headless/svpframe.hxx                                              |   
 1 
 vcl/inc/ios/iosinst.hxx                                                    |   
15 +
 vcl/inc/osx/salframeview.h                                                 |   
 1 
 vcl/inc/quartz/salgdi.h                                                    |   
10 -
 vcl/inc/salbmp.hxx                                                         |   
16 -
 vcl/inc/skia/gdiimpl.hxx                                                   |   
 3 
 vcl/inc/skia/osx/gdiimpl.hxx                                               |   
 1 
 vcl/inc/unx/gendata.hxx                                                    |   
15 +
 vcl/ios/clipboard.cxx                                                      |   
 1 
 vcl/ios/dummies.cxx                                                        |   
 3 
 vcl/ios/iosinst.cxx                                                        |   
11 -
 vcl/ios/salios.cxx                                                         |   
 1 
 vcl/osx/salframe.cxx                                                       |   
 2 
 vcl/osx/salframeview.mm                                                    |   
21 ++
 vcl/osx/salgdiutils.cxx                                                    |   
27 ++
 vcl/quartz/AquaGraphicsBackend.cxx                                         |   
 2 
 vcl/quartz/cgutils.mm                                                      |   
 4 
 vcl/quartz/salbmp.cxx                                                      |   
 2 
 vcl/quartz/salgdi.cxx                                                      |   
 8 
 vcl/quartz/salvd.cxx                                                       |   
 1 
 vcl/skia/gdiimpl.cxx                                                       |   
13 +
 vcl/skia/osx/gdiimpl.cxx                                                   |   
 2 
 vcl/source/uitest/uno/uiobject_uno.cxx                                     |   
 2 
 vcl/unx/generic/app/gendata.cxx                                            |   
15 +
 vcl/win/gdi/salnativewidgets-luna.cxx                                      |   
27 ++
 vcl/win/window/salframe.cxx                                                |   
 7 
 writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx                |   
18 +
 writerfilter/qa/cppunittests/dmapper/data/tdf152884_Char_Transparency.docx 
|binary
 writerfilter/source/dmapper/TextEffectsHandler.cxx                         |   
 4 
 61 files changed, 538 insertions(+), 181 deletions(-)

New commits:
commit cee266b09fa7e33d594fff585ccfaa704c123912
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Feb 1 15:23:10 2023 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:09 2023 +0100

    tdf#148085 get a more readable hyperlink color under windows dark mode
    
    Change-Id: I392206eb9fcff7fca39c6efee747486f4dfa925e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146405
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx
index e1333b4a6c67..6a7eecdb71b1 100644
--- a/vcl/win/window/salframe.cxx
+++ b/vcl/win/window/salframe.cxx
@@ -2683,6 +2683,13 @@ void WinSalFrame::UpdateSettings( AllSettings& rSettings 
)
         aStyleSettings.SetInactiveTabColor( ImplWinColorToSal( color ) );
         CloseThemeData(hTheme);
 
+        if (hTheme = OpenThemeData(mhWnd, L"Textstyle"))
+        {
+            GetThemeColor(hTheme, TEXT_HYPERLINKTEXT, TS_HYPERLINK_NORMAL, 
TMT_TEXTCOLOR, &color);
+            aStyleSettings.SetLinkColor(ImplWinColorToSal(color));
+            CloseThemeData(hTheme);
+        }
+
         // tdf#148448 pick a warning color more likely to be readable as a
         // background in a dark theme
         aStyleSettings.SetWarningColor(Color(0xf5, 0x79, 0x00));
commit 02e178448e472169ace21e0ab8e4e1d7d9261d83
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Wed Feb 1 11:29:14 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:09 2023 +0100

    Let executeAction always ProcessEventsToIdle
    
    An ASan UITest_writer_tests7
    UITEST_TEST_NAME=tdf135938.tdf135938.test_tdf135938_cross_reference_update
    occasionally failed for me with
    
    > ==1994973==ERROR: AddressSanitizer: heap-use-after-free on address 
0x60f00014d718 at pc 0x7f95f4946ffa bp 0x7f95907fd720 sp 0x7f95907fd718
    > READ of size 8 at 0x60f00014d718 thread T33
    >  #0 in std::__cxx1998::vector<std::unique_ptr<SvLBoxItem, 
std::default_delete<SvLBoxItem>>, std::allocator<std::unique_ptr<SvLBoxItem, 
std::default_delete<SvLBoxItem>>>>::size() const at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:988:40
    >  #1 in SvTreeListEntry::ItemCount() const at 
vcl/source/treelist/treelistentry.cxx:110:20
    >  #2 in SvTabListBox::GetEntryText(SvTreeListEntry const*, unsigned short) 
at vcl/source/treelist/svtabbx.cxx:289:37
    >  #3 in SvTabListBox::GetEntryText(SvTreeListEntry*) const at 
vcl/source/treelist/svtabbx.cxx:280:12
    >  #4 in TreeListEntryUIObject::get_state() at 
vcl/source/treelist/uiobject.cxx:119:32
    >  #5 in UIObjectUnoObj::getState() at 
vcl/source/uitest/uno/uiobject_uno.cxx:164:29
    >  #6 in non-virtual thunk to UIObjectUnoObj::getState() at 
vcl/source/uitest/uno/uiobject_uno.cxx
    >  #7 in gcc3::callVirtualMethod(void*, unsigned int, void*, 
_typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, 
unsigned long*, double*) at 
bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:77:5
    >  #8 in cpp_call(bridges::cpp_uno::shared::UnoInterfaceProxy*, 
bridges::cpp_uno::shared::VtableSlot, _typelib_TypeDescriptionReference*, int, 
_typelib_MethodParameter*, void*, void**, _uno_Any**) at 
bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:233:13
    >  #9 in unoInterfaceProxyDispatch at 
bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:413:13
    >  #10 in binaryurp::IncomingRequest::execute_throw(binaryurp::BinaryAny*, 
std::__debug::vector<binaryurp::BinaryAny, 
std::allocator<binaryurp::BinaryAny>>*) const at 
binaryurp/source/incomingrequest.cxx:236:13
    >  #11 in binaryurp::IncomingRequest::execute() const at 
binaryurp/source/incomingrequest.cxx:79:26
    >  #12 in request at binaryurp/source/reader.cxx:86:9
    >  #13 in cppu_threadpool::JobQueue::enter(void const*, bool) at 
cppu/source/threadpool/jobqueue.cxx:100:17
    >  #14 in cppu_threadpool::ORequestThread::run() at 
cppu/source/threadpool/thread.cxx:165:31
    >
    > 0x60f00014d718 is located 120 bytes inside of 168-byte region 
[0x60f00014d6a0,0x60f00014d748)
    > freed by thread T0 here:
    >  #0 in operator delete(void*, unsigned long) at 
~/github.com/llvm/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:164:3
    >  #1 in SvTreeListEntry::~SvTreeListEntry() at 
vcl/source/treelist/treelistentry.cxx:62:1
    >  #2 in std::default_delete<SvTreeListEntry>::operator()(SvTreeListEntry*) 
const at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/unique_ptr.h:102:2
    >  #3 in std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>::~unique_ptr() at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/unique_ptr.h:407:4
    >  #4 in void std::destroy_at<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:88:15
    >  #5 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:149:7
    >  #6 in void 
std::_Destroy_aux<false>::__destroy<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*>(std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:163:6
    >  #7 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*>(std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_construct.h:195:7
    >  #8 in void std::_Destroy<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>(std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*, std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>*, 
std::allocator<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>&) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/alloc_traits.h:947:7
    >  #9 in std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>, 
std::allocator<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>>::_M_erase_at_end(std::unique_ptr<SvTreeListEntry,
 std::default_delete<SvTreeListEntry>>*) at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:1932:6
    >  #10 in std::__cxx1998::vector<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>, 
std::allocator<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>>::clear() at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/bits/stl_vector.h:1601:9
    >  #11 in std::__debug::vector<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>, 
std::allocator<std::unique_ptr<SvTreeListEntry, 
std::default_delete<SvTreeListEntry>>>>::clear() at 
~/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/13.0.0/../../../../include/c++/13.0.0/debug/vector:729:9
    >  #12 in SvTreeListEntry::ClearChildren() at 
vcl/source/treelist/treelistentry.cxx:28:16
    >  #13 in SvTreeList::Clear() at vcl/source/treelist/treelist.cxx:123:16
    >  #14 in SvTreeListBox::Clear() at 
vcl/source/treelist/treelistbox.cxx:422:17
    >  #15 in SalInstanceTreeView::clear() at 
vcl/source/app/salvtables.cxx:4240:18
    >  #16 in SwFieldRefPage::Reset(SfxItemSet const*) at 
sw/source/ui/fldui/fldref.cxx:175:16
    >  #17 in SwFieldPage::EditNewField(bool) at 
sw/source/ui/fldui/fldpage.cxx:111:5
    >  #18 in SwFieldDlg::ReInitTabPage(std::basic_string_view<char, 
std::char_traits<char>>, bool) at sw/source/ui/fldui/fldtdlg.cxx:218:16
    >  #19 in SwFieldDlg::Activate() at sw/source/ui/fldui/fldtdlg.cxx:239:9
    >  #20 in SwChildWinWrapper::UpdateHdl(Timer*) at 
sw/source/uibase/fldui/fldwrap.cxx:42:26
    >  #21 in SwChildWinWrapper::LinkStubUpdateHdl(void*, Timer*) at 
sw/source/uibase/fldui/fldwrap.cxx:39:1
    >  #22 in Link<Timer*, void>::Call(Timer*) const at 
include/tools/link.hxx:111:45
    >  #23 in Timer::Invoke() at vcl/source/app/timer.cxx:75:21
    >  #24 in Scheduler::CallbackTaskScheduling() at 
vcl/source/app/scheduler.cxx:481:20
    >  #25 in SalTimer::CallCallback() at vcl/inc/saltimer.hxx:54:13
    >  #26 in SvpSalInstance::CheckTimeout(bool) at 
vcl/headless/svpinst.cxx:161:53
    >  #27 in SvpSalInstance::ImplYield(bool, bool) at 
vcl/headless/svpinst.cxx:399:17
    >  #28 in SvpSalInstance::DoYield(bool, bool) at 
vcl/headless/svpinst.cxx:471:21
    >  #29 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:475:48
    >  #30 in Application::Yield() at vcl/source/app/svapp.cxx:559:5
    >  #31 in Application::Execute() at vcl/source/app/svapp.cxx:453:13
    >  #32 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1604:13
    
    causing
    
    > ERROR: test_tdf135938_cross_reference_update (tdf135938.tdf135938)
    > ----------------------------------------------------------------------
    > Traceback (most recent call last):
    >   File "uitest/uitest/test.py", line 125, in 
execute_dialog_through_command
    >     yield xDialog
    >   File "uitest/uitest/test.py", line 140, in 
execute_modeless_dialog_through_command
    >     yield xDialog
    >   File "sw/qa/uitest/writer_tests7/tdf135938.py", line 40, in 
test_tdf135938_cross_reference_update
    >     self.assertEqual("ABC", 
get_state_as_dict(xSelect.getChild(0))["Text"])
    >   File "uitest/uitest/uihelper/common.py", line 13, in get_state_as_dict
    >     return convert_property_values_to_dict(ui_object.getState())
    > uitest.uihelper.common.com.sun.star.lang.DisposedException: Binary URP 
bridge disposed during call at binaryurp/source/bridge.cxx:613
    
    The issue apparently is that TreeListEntryUIObject UNO objects, introduced 
in
    71f562f8f77f14b76fde4329f7238fe2e7d6a054 "uitest: support tree lists", 
reference
    SvTreeListEntry instances by pointers that can apparently go stale while 
those
    UNO objects are still alive.  I'm not sure there would be an easy fix for 
this,
    short of making those SvTreeListEntry instances ref-counted, or ripping out
    UITest support for those TreeListEntryUIObjects again.
    
    However, that underlying issue would presumably not be of practical concern 
if
    the test_tdf135938_cross_reference_update Python code would have waited for
    processEventsToIdle between its
    
    >                 xInsert.executeAction("CLICK", tuple())
    
    and the following block
    
    >                 self.assertEqual("2", 
get_state_as_dict(xSelect)["Children"])
    >                 self.assertEqual("ABC", 
get_state_as_dict(xSelect.getChild(0))["Text"])
    >                 self.assertEqual("DEF", 
get_state_as_dict(xSelect.getChild(1))["Text"])
    
    That way, there should be no more opportunity for the pointers in the 
passed-out
    TreeListEntryUIObjects to become stale while the Python code accesses them.
    
    And in Python UITest code, having to follow a call to executeAction by a 
call to
    processEventsToIdle appears to be a common and recurring requirement, just 
look
    at the most recent af1ca684bb12ff62e3df995ad44aefdb57a51af7 "another stab at
    making this test reliable", d183daea1abbd7b564d083298874dd7c40d5a5b3
    "tdf#153161: (Ab)use a call to XTextRange::getString to flush edits",
    3cc6b870c48b23418f65d2c3cd6eab72ef0680de "make an effort to fix the
    UITest_inputLine intermittent failure", 
f4668540ff7256bb0ddd382dfaf9f3499e99128a
    "tdf#150443 sw: fix crash of rejecting table row deletion".
    
    So make executeAction always call ProcessEventsToIdle, to simplify this and
    hopefully make UITests more robust.  (Removing any now-redundant calls to
    processEventsToIdle, following calls to executeAction, from Python test 
code is
    left as follow-up clean up for now.)
    
    (I /think/ that the implementation of UIObjectUnoObj::executeAction could be
    simplified now, as waiting for Scheduler::ProcessEventsToIdle() should 
already
    make sure that aIdle has been processed, removing the need for the Notifier.
    But lets leave that as a follow-up TODO for now.)
    
    Change-Id: I41a5d51515dedaae44fb810b0ad3b0264c90abf3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146434
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>
    (cherry picked from commit 51a2e1a3963aae3228c9ddf78d0039c7c063393c)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146404

diff --git a/vcl/source/uitest/uno/uiobject_uno.cxx 
b/vcl/source/uitest/uno/uiobject_uno.cxx
index 042b2fcf5cbb..06ec96a45ab6 100644
--- a/vcl/source/uitest/uno/uiobject_uno.cxx
+++ b/vcl/source/uitest/uno/uiobject_uno.cxx
@@ -19,6 +19,7 @@
 #include <comphelper/propertyvalue.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <tools/link.hxx>
+#include <vcl/scheduler.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/idle.hxx>
 #include <vcl/window.hxx>
@@ -153,6 +154,7 @@ void SAL_CALL UIObjectUnoObj::executeAction(const OUString& 
rAction, const css::
 
     SolarMutexGuard aGuard;
     aIdle.reset();
+    Scheduler::ProcessEventsToIdle();
 }
 
 css::uno::Sequence<css::beans::PropertyValue> UIObjectUnoObj::getState()
commit f0059d33a43ea178de4b12b771a14265584c8de4
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Wed Feb 1 14:24:04 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    sw: restructure tests a bit
    
    Follow-up to 3ac5bfec2f73c55e99c4410f7559db86b875a269
    "uitest: Always change doc info setting back to false"
    it seems it fails sometimes when using .uno:CloseDoc
    Seen in 
https://ci.libreoffice.org/job/gerrit_linux_clang_dbgutil/132728/consoleFull#-45932801048ce9c26-9d0a-43a8-83d8-c44f54920d59
    
    Change-Id: I384e40a31735738c622277ccdbdb75babb185d85
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146448
    Tested-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146457
    Tested-by: Jenkins

diff --git a/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py 
b/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
index 0df0dc504dde..d8d30d0aff74 100644
--- a/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
+++ b/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
@@ -35,10 +35,10 @@ class edit_file_properties_before_saving(UITestCase):
         with TemporaryDirectory() as tempdir:
             xFilePath = os.path.join(tempdir, "tdf117895-temp.odt")
 
-            with self.ui_test.create_doc_in_start_center("writer"):
+            try:
+                self.change_doc_info_setting("true")
 
-                try:
-                    self.change_doc_info_setting("true")
+                with self.ui_test.create_doc_in_start_center("writer"):
 
                     # Save Copy as
                     with 
self.ui_test.execute_dialog_through_command('.uno:SaveAs', close_button="") as 
xDialog:
@@ -52,25 +52,26 @@ class edit_file_properties_before_saving(UITestCase):
                             xReadOnly = xPropertiesDialog.getChild("readonly")
                             xReadOnly.executeAction("CLICK", tuple())
                             self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
-                finally:
-                    # Put this setting back to false, otherwise it might 
affect other tests
-                    self.change_doc_info_setting("false")
 
-            self.ui_test.wait_until_file_is_available(xFilePath)
+                self.ui_test.wait_until_file_is_available(xFilePath)
 
-            with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
-                # Without the fix in place, this test would have failed here
-                self.assertTrue(doc2.isReadonly())
+                with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
+                    # Without the fix in place, this test would have failed 
here
+                    self.assertTrue(doc2.isReadonly())
+
+            finally:
+                # Put this setting back to false, otherwise it might affect 
other tests
+                self.change_doc_info_setting("false")
 
     def test_tdf119206(self):
 
         with TemporaryDirectory() as tempdir:
             xFilePath = os.path.join(tempdir, "tdf119206-temp.odt")
 
-            with self.ui_test.create_doc_in_start_center("writer"):
+            try:
+                self.change_doc_info_setting("true")
 
-                try:
-                    self.change_doc_info_setting("true")
+                with self.ui_test.create_doc_in_start_center("writer"):
 
                     xWriterDoc = self.xUITest.getTopFocusWindow()
                     xWriterEdit = xWriterDoc.getChild("writer_edit")
@@ -92,13 +93,14 @@ class edit_file_properties_before_saving(UITestCase):
                                 xReadOnly = 
xPropertiesDialog.getChild("readonly")
                                 xReadOnly.executeAction("CLICK", tuple())
                                 self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
-                finally:
-                    # Put this setting back to false, otherwise it might 
affect other tests
-                    self.change_doc_info_setting("false")
 
-            self.ui_test.wait_until_file_is_available(xFilePath)
+                self.ui_test.wait_until_file_is_available(xFilePath)
+
+                with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
+                    self.assertTrue(doc2.isReadonly())
 
-            with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
-                self.assertTrue(doc2.isReadonly())
+            finally:
+                # Put this setting back to false, otherwise it might affect 
other tests
+                self.change_doc_info_setting("false")
 
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
commit 905c577d25477604fd36ffd4d80aaf28928c7e13
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Feb 1 11:32:38 2023 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    add missing id-column
    
    Change-Id: Ia6b1a4daa2a3327faa33d60289c4dd4c12deefbc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146442
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/cui/uiconfig/ui/widgettestdialog.ui 
b/cui/uiconfig/ui/widgettestdialog.ui
index 787deda37171..1bf515198a73 100644
--- a/cui/uiconfig/ui/widgettestdialog.ui
+++ b/cui/uiconfig/ui/widgettestdialog.ui
@@ -88,6 +88,7 @@
                 <property name="button-sensitivity">off</property>
                 <property name="has-entry">True</property>
                 <property name="entry-text-column">0</property>
+                <property name="id-column">1</property>
                 <child internal-child="entry">
                   <object class="GtkEntry">
                     <property name="sensitive">False</property>
@@ -264,6 +265,7 @@
                 <property name="model">liststore1</property>
                 <property name="has-entry">True</property>
                 <property name="entry-text-column">0</property>
+                <property name="id-column">1</property>
                 <child internal-child="entry">
                   <object class="GtkEntry">
                     <property name="can-focus">False</property>
commit c62fce489c8a4c67bd67d0abce5d7f55b8d24998
Author:     Regina Henschel <rb.hensc...@t-online.de>
AuthorDate: Mon Jan 30 15:32:54 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    tdf#153260 VML export write trim value true in any case
    
    LO renders Fontwork shapes always so as if trim=true is set. But the
    default value for trim attribute is 'false'. Therefore always write out
    'true'. Otherwise the import will treat it as 'false' and apply the
    shape height reducing workaround.
    
    Change-Id: I626c5a84627f16011198a9a4e35d8fedf1fd1b3e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146361
    Tested-by: Jenkins
    Reviewed-by: Regina Henschel <rb.hensc...@t-online.de>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146436

diff --git a/oox/qa/unit/data/tdf153260_VML_trim_export.odt 
b/oox/qa/unit/data/tdf153260_VML_trim_export.odt
new file mode 100644
index 000000000000..407a27fff254
Binary files /dev/null and b/oox/qa/unit/data/tdf153260_VML_trim_export.odt 
differ
diff --git a/oox/qa/unit/vml.cxx b/oox/qa/unit/vml.cxx
index 6a8eab8098ab..be99a281af04 100644
--- a/oox/qa/unit/vml.cxx
+++ b/oox/qa/unit/vml.cxx
@@ -17,6 +17,7 @@
 #include <com/sun/star/drawing/PointSequenceSequence.hpp>
 #include <com/sun/star/drawing/PolygonKind.hpp>
 #include <com/sun/star/drawing/PolyPolygonBezierCoords.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/drawing/ColorMode.hpp>
@@ -201,6 +202,28 @@ CPPUNIT_TEST_FIXTURE(OoxVmlTest, testWatermark)
     CPPUNIT_ASSERT_EQUAL(drawing::ColorMode_WATERMARK, eMode);
 }
 
+CPPUNIT_TEST_FIXTURE(OoxVmlTest, testWriterFontworkTrimTrue)
+{
+    // The document contains a shape, that will be exported as VML shape to 
docx. Error was that the
+    // attribute trim was not written out and thus import had treated it as 
the default 'false' and
+    // had reduced the shape height.
+    loadFromURL(u"tdf153260_VML_trim_export.odt");
+
+    // FIXME: tdf#153183 validation error in OOXML export: Errors: 1
+    // Attribute 'ID' is not allowed to appear in element 'v:shape'.
+    skipValidation();
+    saveAndReload("Office Open XML Text");
+
+    uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<drawing::XShape> 
xShape(xDrawPageSupplier->getDrawPage()->getByIndex(0),
+                                           uno::UNO_QUERY);
+
+    // Make sure the shape height is not changed.
+    // Without the fix the test would have failed with expected 4999 actual 
1732.
+    awt::Size aSize = xShape->getSize();
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(4999, aSize.Height, 2);
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index 4fa1e6cf7764..0ef1d3a05447 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -960,8 +960,10 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, 
const tools::Rectangle&
                             OUString aSize = OUString::number(nSizeF);
                             aStyle += ";font-size:" + aSize + "pt";
                         }
-                        if (IsWaterMarkShape(m_pSdrObject->GetName()))
-                            pAttrList->add(XML_trim, "t");
+                        // tdf#153260. LO renders all Fontwork shapes as if 
trim="t" is set. Default
+                        // value is "f". So always write out "t", otherwise 
import will reduce the
+                        // shape height as workaround for "f".
+                        pAttrList->add(XML_trim, "t");
 
                         if (!aStyle.isEmpty())
                             pAttrList->add(XML_style, aStyle);
commit aa7618a7761b97c90ea1214f354c7af91fd9e16b
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Thu Jan 26 22:03:42 2023 +0300
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    tdf#153235: Optimize Application::Reschedule calls in SbiRuntime::Step
    
    Setup the "last reschedule time" counter at the first pass,
    to avoid useless immediate reschedule.
    Update the counter when running "when blocked" reschedules.
    
    This seems to avoid the problem with the bugdoc.
    
    Change-Id: Ib5958a1a2b048f5ec654c69ee9e977e8a26de6f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146215
    Tested-by: Mike Kaganski <mike.kagan...@collabora.com>
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146246
    Tested-by: Jenkins

diff --git a/basic/source/inc/runtime.hxx b/basic/source/inc/runtime.hxx
index d0922e6a0e0a..a6e12b50106d 100644
--- a/basic/source/inc/runtime.hxx
+++ b/basic/source/inc/runtime.hxx
@@ -250,7 +250,6 @@ class SbiRuntime
     BasicDebugFlags    nFlags;           // Debugging-Flags
     ErrCode            nError;
     sal_uInt16         nOps;             // opcode counter
-    sal_uInt32         m_nLastTime;
 
     std::vector<SbxVariableRef>  aRefSaved; // #74254 save temporary references
     std::vector<SbiGosub>   pGosubStk;      // GOSUB stack
diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx
index 6a15cb1606e6..23e65805240c 100644
--- a/basic/source/runtime/runtime.cxx
+++ b/basic/source/runtime/runtime.cxx
@@ -599,7 +599,7 @@ SbMethod* SbiInstance::GetCaller( sal_uInt16 nLevel )
 
 SbiRuntime::SbiRuntime( SbModule* pm, SbMethod* pe, sal_uInt32 nStart )
          : rBasic( *static_cast<StarBASIC*>(pm->pParent) ), pInst( 
GetSbData()->pInst ),
-           pMod( pm ), pMeth( pe ), pImg( pMod->pImage.get() ), 
mpExtCaller(nullptr), m_nLastTime(0)
+           pMod( pm ), pMeth( pe ), pImg( pMod->pImage.get() ), 
mpExtCaller(nullptr)
 {
     nFlags    = pe ? pe->GetDebugFlags() : BasicDebugFlags::NONE;
     pIosys    = pInst->GetIoSystem();
@@ -792,23 +792,26 @@ bool SbiRuntime::Step()
 {
     if( bRun )
     {
+        static sal_uInt32 nLastTime = osl_getGlobalTimer();
+
         // in any case check casually!
         if( !( ++nOps & 0xF ) && pInst->IsReschedule() )
         {
             sal_uInt32 nTime = osl_getGlobalTimer();
-            if (nTime - m_nLastTime > 5 ) // 20 ms
+            if (nTime - nLastTime > 5) // 20 ms
             {
+                nLastTime = nTime;
                 Application::Reschedule();
-                m_nLastTime = nTime;
             }
         }
 
         // #i48868 blocked by next call level?
         while( bBlocked )
         {
-            if( pInst->IsReschedule() )
+            if( pInst->IsReschedule() ) // And what if not? Busy loop?
             {
                 Application::Reschedule();
+                nLastTime = osl_getGlobalTimer();
             }
         }
 
commit ef9d11c10457e530c06037a7a363bcb3aa8998f8
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Jan 26 20:55:57 2023 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    crashtesting: crash on forum-mso-en4-719754.xlsx with fPercentile ~== 1
    
    input is fPercentile of near 1 where approxFloor would give nIndex of
    nSize-1 resulting in a non-zero tiny negative fDiff, when the assumption
    is fDiff will be 0 or some positive value.
    
    Change-Id: I8fe5520f2b3c68f3204d435337df527185dcb0d3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146218
    Tested-by: Jenkins
    Tested-by: Caolán McNamara <caol...@redhat.com>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    (cherry picked from commit 1371ba2bcbcce57ba5cbd7a199ae8feceb22d0d0)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146203
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx
index f55fc1636959..12e49de73972 100644
--- a/sc/source/core/tool/interpr3.cxx
+++ b/sc/source/core/tool/interpr3.cxx
@@ -3409,8 +3409,13 @@ double ScInterpreter::GetPercentile( vector<double> & 
rArray, double fPercentile
         OSL_ENSURE(nIndex < nSize, "GetPercentile: wrong index(1)");
         vector<double>::iterator iter = rArray.begin() + nIndex;
         ::std::nth_element( rArray.begin(), iter, rArray.end());
-        if (fDiff == 0.0)
+        if (fDiff <= 0.0)
+        {
+            // Note: neg fDiff seen with forum-mso-en4-719754.xlsx with
+            // fPercentile of near 1 where approxFloor gave nIndex of nSize-1
+            // resulting in a non-zero tiny negative fDiff.
             return *iter;
+        }
         else
         {
             OSL_ENSURE(nIndex < nSize-1, "GetPercentile: wrong index(2)");
commit b1caf3d66f6edff599e376e6ecbb037ca529ef28
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon Jan 30 13:44:49 2023 +0200
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:08 2023 +0100

    tdf#152726 Pasting Selection to Sheet as BMP Image, button test is larger
    
    regression from
    
        commit 720e4258ab5f00287098ff945a184bfb43911841
        Author: Noel Grandin <n...@peralex.com>
        Date:   Fri Aug 20 11:30:35 2021 +0200
    use Primitive2DDecompositionVisitor in ViewObjectContact
    (tdf#105575)
    
    Revert the relevant piece, no idea what the underlying problem is. I
    suspect something is being tricksy and using settings from the current
    OutputDevice even though the point of the drawinglayer
    getPrimitive2DSequenceHierarchy is supposedly to be independant of that.
    
    Change-Id: I3026ff2ba5ce3751a4e4ebdf15954aae548493c6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146352
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    (cherry picked from commit 4fde49387eeecc35d1ead6305b1fe1e30e09cccc)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146322
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/svx/source/sdr/contact/objectcontactofpageview.cxx 
b/svx/source/sdr/contact/objectcontactofpageview.cxx
index e4cec99e5e53..9d47bab76dd2 100644
--- a/svx/source/sdr/contact/objectcontactofpageview.cxx
+++ b/svx/source/sdr/contact/objectcontactofpageview.cxx
@@ -216,25 +216,12 @@ namespace sdr::contact
             aNewViewInformation2D.setViewTime(fCurrentTime);
             updateViewInformation2D(aNewViewInformation2D);
 
-            // if there is something to show, use a primitive processor to 
render it. There
-            // is a choice between VCL and Canvas processors currently. The 
decision is made in
-            // createProcessor2DFromOutputDevice and takes into account things 
like the
-            // Target is a MetaFile, a VDev or something else. The Canvas 
renderer is triggered
-            // currently using the shown boolean. Canvas is not yet the 
default.
-
-            // prepare OutputDevice (historical stuff, maybe soon removed)
-            rDisplayInfo.ClearGhostedDrawMode(); // reset, else the VCL-paint 
with the processor will not do the right thing
-            
pOutDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::Default); // reset, 
default is no BiDi/RTL
-
-            // create renderer
-            std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> 
pProcessor2D(
-                drawinglayer::processor2d::createProcessor2DFromOutputDevice(
-                    rTargetOutDev, getViewInformation2D()));
+            drawinglayer::primitive2d::Primitive2DContainer xPrimitiveSequence;
 
 #if HAVE_FEATURE_DESKTOP || defined( ANDROID )
             // get whole Primitive2DContainer; this will already make use of 
updated ViewInformation2D
             // and may use the MapMode from the Target OutDev in the 
DisplayInfo
-            rDrawPageVOContact.getPrimitive2DSequenceHierarchy(rDisplayInfo, 
*pProcessor2D);
+            rDrawPageVOContact.getPrimitive2DSequenceHierarchy(rDisplayInfo, 
xPrimitiveSequence);
 #else
             // Hmm, !HAVE_FEATURE_DESKTOP && !ANDROID means iOS,
             // right? But does it makes sense to use a different code
@@ -270,9 +257,26 @@ namespace sdr::contact
             if (bGetHierarchy)
                 // get whole Primitive2DContainer; this will already make use 
of updated ViewInformation2D
                 // and may use the MapMode from the Target OutDev in the 
DisplayInfo
-                
rDrawPageVOContact.getPrimitive2DSequenceHierarchy(rDisplayInfo, *pProcessor2D);
+                
rDrawPageVOContact.getPrimitive2DSequenceHierarchy(rDisplayInfo, 
xPrimitiveSequence);
 #endif
 
+            // if there is something to show, use a primitive processor to 
render it. There
+            // is a choice between VCL and Canvas processors currently. The 
decision is made in
+            // createProcessor2DFromOutputDevice and takes into account things 
like the
+            // Target is a MetaFile, a VDev or something else. The Canvas 
renderer is triggered
+            // currently using the shown boolean. Canvas is not yet the 
default.
+            if(!xPrimitiveSequence.empty())
+            {
+                // prepare OutputDevice (historical stuff, maybe soon removed)
+                rDisplayInfo.ClearGhostedDrawMode(); // reset, else the 
VCL-paint with the processor will not do the right thing
+                
pOutDev->SetLayoutMode(vcl::text::ComplexTextLayoutFlags::Default); // reset, 
default is no BiDi/RTL
+                // create renderer
+                std::unique_ptr<drawinglayer::processor2d::BaseProcessor2D> 
pProcessor2D(
+                    
drawinglayer::processor2d::createProcessor2DFromOutputDevice(
+                        rTargetOutDev, getViewInformation2D()));
+                pProcessor2D->process(xPrimitiveSequence);
+            }
+
             // #114359# restore old ClipReghion
             if(bClipRegionPushed)
             {
commit 44eaf53ba0077987b65cc7bc198845ba65eba0d6
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Jan 31 10:22:35 2023 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    tdf#153287 rollover in dark mode with "Explorer" is incongruous
    
    Using "CFD" gives a brighter border with rollover, but no notable
    focus state when focused. Try a combination here to get something
    decent.
    
    Change-Id: If7844cb0f1e88410959aa622b0271c3f3954230e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146395
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/win/gdi/salnativewidgets-luna.cxx 
b/vcl/win/gdi/salnativewidgets-luna.cxx
index 5ab4c6cb4dd6..1cd6245658d6 100644
--- a/vcl/win/gdi/salnativewidgets-luna.cxx
+++ b/vcl/win/gdi/salnativewidgets-luna.cxx
@@ -1189,7 +1189,11 @@ bool WinSalGraphics::drawNativeControl( ControlType 
nType,
             break;
         case ControlType::Combobox:
             if( nPart == ControlPart::Entire )
+            {
+                if (bUseDarkMode && !(nState & ControlState::FOCUSED))
+                    SetWindowTheme(mhWnd, L"CFD", nullptr);
                 hTheme = getThemeHandle(mhWnd, L"Edit", 
mWinSalGraphicsImplBase);
+            }
             else if( nPart == ControlPart::ButtonDown )
             {
                 if (bUseDarkMode)
@@ -1199,7 +1203,11 @@ bool WinSalGraphics::drawNativeControl( ControlType 
nType,
             break;
         case ControlType::Spinbox:
             if( nPart == ControlPart::Entire )
+            {
+                if (bUseDarkMode && !(nState & ControlState::FOCUSED))
+                    SetWindowTheme(mhWnd, L"CFD", nullptr);
                 hTheme = getThemeHandle(mhWnd, L"Edit", 
mWinSalGraphicsImplBase);
+            }
             else
                 hTheme = getThemeHandle(mhWnd, L"Spin", 
mWinSalGraphicsImplBase);
             break;
@@ -1207,6 +1215,10 @@ bool WinSalGraphics::drawNativeControl( ControlType 
nType,
             hTheme = getThemeHandle(mhWnd, L"Spin", mWinSalGraphicsImplBase);
             break;
         case ControlType::Editbox:
+            if (bUseDarkMode && !(nState & ControlState::FOCUSED))
+                SetWindowTheme(mhWnd, L"CFD", nullptr);
+            hTheme = getThemeHandle(mhWnd, L"Edit", mWinSalGraphicsImplBase);
+            break;
         case ControlType::MultilineEditbox:
             hTheme = getThemeHandle(mhWnd, L"Edit", mWinSalGraphicsImplBase);
             break;
commit 1654556e88615dd932875a766bb57eee879db238
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Tue Jan 31 10:49:51 2023 +0000
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    tdf#153273 bodge dark scrollbar into drop downs
    
    Change-Id: I9c53b931feb7f720f86edfbb6ae88ff5ee436cef
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146396
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/vcl/win/gdi/salnativewidgets-luna.cxx 
b/vcl/win/gdi/salnativewidgets-luna.cxx
index 1c177a1b2a97..5ab4c6cb4dd6 100644
--- a/vcl/win/gdi/salnativewidgets-luna.cxx
+++ b/vcl/win/gdi/salnativewidgets-luna.cxx
@@ -1172,7 +1172,20 @@ bool WinSalGraphics::drawNativeControl( ControlType 
nType,
             hTheme = getThemeHandle(mhWnd, L"Button", mWinSalGraphicsImplBase);
             break;
         case ControlType::Scrollbar:
-            hTheme = getThemeHandle(mhWnd, L"Scrollbar", 
mWinSalGraphicsImplBase);
+            if (bUseDarkMode)
+            {
+                // tdf#153273 undo the earlier SetWindowTheme, and use an 
explicit Explorer::Scrollbar
+                // a) with "Scrollbar" and SetWindowTheme(... "Explorer" ...) 
then scrollbars in dialog
+                // and main windows are dark, but dropdowns are light
+                // b) with "Explorer::Scrollbar" and SetWindowTheme(... 
"Explorer" ...) then scrollbars
+                // in dropdowns are dark, but scrollbars in dialogs and main 
windows are sort of "extra
+                // dark"
+                // c) with "Explorer::Scrollbar" and no SetWindowTheme both 
cases are dark
+                SetWindowTheme(mhWnd, nullptr, nullptr);
+                hTheme = getThemeHandle(mhWnd, L"Explorer::Scrollbar", 
mWinSalGraphicsImplBase);
+            }
+            else
+                hTheme = getThemeHandle(mhWnd, L"Scrollbar", 
mWinSalGraphicsImplBase);
             break;
         case ControlType::Combobox:
             if( nPart == ControlPart::Entire )
commit 0e08fc6ebacfded92e3b895d1b576fbcebce03cd
Author:     Patrick Luby <plub...@neooffice.org>
AuthorDate: Tue Jan 24 20:28:22 2023 -0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    tdf#147342 Notify Skia that the window's backing properties changed
    
    Change-Id: I4185a240a2ca6df1c92e86ff9950f86234d4ace8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146142
    Tested-by: Jenkins
    Reviewed-by: Patrick Luby <plub...@neooffice.org>
    (cherry picked from commit a0d825133656c6329c0e7e3b0b6bafbd51e87271)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146210
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk
index c0f91e1a463a..3bb9cc3eed40 100644
--- a/external/skia/Library_skia.mk
+++ b/external/skia/Library_skia.mk
@@ -950,6 +950,7 @@ ifeq ($(SKIA_GPU),METAL)
 $(eval $(call gb_Library_add_generated_objcxxobjects,skia,\
     UnpackedTarball/skia/tools/sk_app/MetalWindowContext \
     UnpackedTarball/skia/tools/sk_app/mac/MetalWindowContext_mac \
+    UnpackedTarball/skia/tools/sk_app/mac/WindowContextFactory_mac \
 ))
 
 # Not used, uses OpenGL - 
UnpackedTarball/skia/tools/sk_app/mac/RasterWindowContext_mac
diff --git a/external/skia/UnpackedTarball_skia.mk 
b/external/skia/UnpackedTarball_skia.mk
index e8a75960658c..f5c199aff4e4 100644
--- a/external/skia/UnpackedTarball_skia.mk
+++ b/external/skia/UnpackedTarball_skia.mk
@@ -40,6 +40,7 @@ skia_patches := \
     tdf148624.patch.1 \
     constexpr-template.patch.0 \
     missing-include.patch.0 \
+    tdf147342.patch.0 \
 
 $(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1))
 
diff --git a/external/skia/tdf147342.patch.0 b/external/skia/tdf147342.patch.0
new file mode 100644
index 000000000000..72ec8adf9a46
--- /dev/null
+++ b/external/skia/tdf147342.patch.0
@@ -0,0 +1,95 @@
+--- tools/sk_app/mac/WindowContextFactory_mac.h        2022-02-16 
06:03:39.000000000 -0500
++++ tools/sk_app/mac/WindowContextFactory_mac.h        2023-01-25 
08:09:00.000000000 -0500
+@@ -19,15 +19,8 @@
+ 
+ struct DisplayParams;
+ 
+-static inline CGFloat GetBackingScaleFactor(NSView* view) {
+-    #ifdef SK_BUILD_FOR_IOS
+-    UIScreen* screen = view.window.screen ?: [UIScreen mainScreen];
+-    return screen.nativeScale;
+-    #else
+-    NSScreen* screen = view.window.screen ?: [NSScreen mainScreen];
+-    return screen.backingScaleFactor;
+-    #endif
+-}
++SK_API CGFloat GetBackingScaleFactor(NSView* view);
++SK_API void ResetBackingScaleFactor();
+ 
+ namespace window_context_factory {
+ 
+--- tools/sk_app/mac/MetalWindowContext_mac.mm 2021-11-25 10:39:27.000000000 
-0500
++++ tools/sk_app/mac/MetalWindowContext_mac.mm 2023-01-25 08:20:32.000000000 
-0500
+@@ -87,6 +91,12 @@
+     fMetalLayer.drawableSize = backingSize;
+     fMetalLayer.contentsScale = backingScaleFactor;
+ 
++    // Related tdf#147342 Copy layer's colorspace to window's colorspace
++    // This method is now called when the window's backing properties have
++    // changed so copy any colorspace changes.
++    NSColorSpace* cs = fMainView.window.colorSpace;
++    fMetalLayer.colorspace = cs.CGColorSpace;
++
+     fWidth = backingSize.width;
+     fHeight = backingSize.height;
+ }
+--- /dev/null  2023-01-25 09:20:55.000000000 -0500
++++ tools/sk_app/mac/WindowContextFactory_mac.mm       2023-01-25 
09:21:22.000000000 -0500
+@@ -0,0 +1,57 @@
++/*
++ * Use of this source code is governed by a BSD-style license that can be
++ * found in the LICENSE file.
++ */
++
++#include "tools/sk_app/mac/WindowContextFactory_mac.h"
++
++namespace sk_app {
++
++static bool  bWindowScaling = false;
++static float fWindowScale = 1.0f;
++
++CGFloat GetBackingScaleFactor(NSView* view) {
++    #ifdef SK_BUILD_FOR_IOS
++    UIScreen* screen = view.window.screen ?: [UIScreen mainScreen];
++    return screen.nativeScale;
++    #else
++    // Related: tdf#147342 This should always be an exact copy of the
++    // sal::aqua::getWindowScaling() function in the following file:
++    // vcl/osx/salgdiutils.cxx
++    (void)view;
++
++    if (!bWindowScaling)
++    {
++        NSArray *aScreens = [NSScreen screens];
++        if (aScreens)
++        {
++            for (NSScreen *aScreen : aScreens)
++            {
++                float fScale = [aScreen backingScaleFactor];
++                if (fScale > fWindowScale)
++                  fWindowScale = fScale;
++            }
++            bWindowScaling = true;
++        }
++        if( const char* env = getenv("SAL_FORCE_HIDPI_SCALING"))
++        {
++            fWindowScale = atof(env);
++            bWindowScaling = true;
++        }
++    }
++    return fWindowScale;
++    #endif
++}
++
++void ResetBackingScaleFactor() {
++    #ifndef SK_BUILD_FOR_IOS
++    // Related: tdf#147342 Force recalculation of the window scaling but keep
++    // the previous window scaling as the minimum so that we don't lose the
++    // resolution in cached images if a HiDPI monitor is disconnected and
++    // then reconnected.
++    bWindowScaling = false;
++    GetBackingScaleFactor(nil);
++    #endif
++}
++
++}  // namespace sk_app
diff --git a/vcl/inc/osx/salframeview.h b/vcl/inc/osx/salframeview.h
index 6242f3d4146a..1282eb10cbee 100644
--- a/vcl/inc/osx/salframeview.h
+++ b/vcl/inc/osx/salframeview.h
@@ -45,6 +45,7 @@ enum class SalEvent;
 -(void)windowDidMiniaturize: (NSNotification*)pNotification;
 -(void)windowDidDeminiaturize: (NSNotification*)pNotification;
 -(BOOL)windowShouldClose: (NSNotification*)pNotification;
+-(void)windowDidChangeBackingProperties:(NSNotification *)pNotification;
 //-(void)willEncodeRestorableState:(NSCoder*)pCoderState;
 //-(void)didDecodeRestorableState:(NSCoder*)pCoderState;
 //-(void)windowWillEnterVersionBrowser:(NSNotification*)pNotification;
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 0a4291d5692d..6d1668c1f913 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -134,6 +134,7 @@ private:
 namespace sal::aqua
 {
 float getWindowScaling();
+void resetWindowScaling();
 }
 
 struct AquaSharedAttributes
@@ -292,6 +293,7 @@ public:
     virtual void drawTextLayout(const GenericSalLayout& layout, bool 
bTextRenderModeForResolutionIndependentLayout) = 0;
     virtual void Flush() {}
     virtual void Flush( const tools::Rectangle& ) {}
+    virtual void WindowBackingPropertiesChanged() {};
 protected:
     AquaGraphicsBackendBase(AquaSharedAttributes& rShared, SalGraphicsImpl * 
impl)
         : mrShared( rShared ), mpImpl(impl)
@@ -487,6 +489,7 @@ public:
 
     void                    Flush();
     void                    Flush( const tools::Rectangle& );
+    void                    WindowBackingPropertiesChanged();
 
     void                    UnsetState();
     // InvalidateContext does an UnsetState and sets mrContext to 0
diff --git a/vcl/inc/skia/gdiimpl.hxx b/vcl/inc/skia/gdiimpl.hxx
index b2814b2a6463..cc515272e9bd 100644
--- a/vcl/inc/skia/gdiimpl.hxx
+++ b/vcl/inc/skia/gdiimpl.hxx
@@ -339,6 +339,8 @@ protected:
         return stream;
     }
 
+    void windowBackingPropertiesChanged();
+
     SalGraphics& mParent;
     /// Pointer to the SalFrame or SalVirtualDevice
     SalGeometryProvider* mProvider;
@@ -370,6 +372,7 @@ protected:
     LastPolyPolygonInfo mLastPolyPolygonInfo;
     inline static int pendingOperationsToFlush = 0;
     int mScaling; // The scale factor for HiDPI screens.
+    bool mInWindowBackingPropertiesChanged;
 };
 
 inline SkPaint SkiaSalGraphicsImpl::makePaintInternal() const
diff --git a/vcl/inc/skia/osx/gdiimpl.hxx b/vcl/inc/skia/osx/gdiimpl.hxx
index 71baf24625fc..b90b576a873f 100644
--- a/vcl/inc/skia/osx/gdiimpl.hxx
+++ b/vcl/inc/skia/osx/gdiimpl.hxx
@@ -43,6 +43,7 @@ public:
 
     virtual void Flush() override;
     virtual void Flush(const tools::Rectangle&) override;
+    virtual void WindowBackingPropertiesChanged() override;
 
 private:
     virtual int getWindowScaling() const override;
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 90dd38704bcd..02a3879648db 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -287,6 +287,8 @@ void AquaSalFrame::screenParametersChanged()
 {
     OSX_SALDATA_RUNINMAIN( screenParametersChanged() )
 
+    sal::aqua::resetWindowScaling();
+
     UpdateFrameGeometry();
 
     if( mpGraphics )
diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm
index 8445a6c40904..b1d44b612e51 100644
--- a/vcl/osx/salframeview.mm
+++ b/vcl/osx/salframeview.mm
@@ -501,6 +501,27 @@ static AquaSalFrame* getMouseContainerFrame()
     (void)pNotification;
 }
 
+-(void)windowDidChangeBackingProperties:(NSNotification *)pNotification
+{
+    (void)pNotification;
+#if HAVE_FEATURE_SKIA
+    SolarMutexGuard aGuard;
+
+    sal::aqua::resetWindowScaling();
+
+    if( mpFrame && AquaSalFrame::isAlive( mpFrame ) )
+    {
+        // tdf#147342 Notify Skia that the window's backing properties changed
+        if ( SkiaHelper::isVCLSkiaEnabled() )
+        {
+            AquaSalGraphics* pGraphics = mpFrame->mpGraphics;
+            if ( pGraphics )
+                pGraphics->WindowBackingPropertiesChanged();
+        }
+    }
+#endif
+}
+
 -(void)dockMenuItemTriggered: (id)sender
 {
     (void)sender;
diff --git a/vcl/osx/salgdiutils.cxx b/vcl/osx/salgdiutils.cxx
index 603a8b612d42..d65897e25a83 100644
--- a/vcl/osx/salgdiutils.cxx
+++ b/vcl/osx/salgdiutils.cxx
@@ -35,6 +35,11 @@
 #include <osx/salframe.h>
 #include <osx/saldata.hxx>
 
+#if HAVE_FEATURE_SKIA
+#include <tools/sk_app/mac/WindowContextFactory_mac.h>
+#include <vcl/skia/SkiaHelper.hxx>
+#endif
+
 // TODO: Scale will be set to 2.0f as default after implementation of full 
scaled display support . This will allow moving of
 // windows between non retina and retina displays without blurry text and 
graphics. Static variables have to be removed thereafter.
 
@@ -50,15 +55,17 @@ namespace sal::aqua
 {
 float getWindowScaling()
 {
+    // Related: tdf#147342 Any changes to this function must be copied to the
+    // sk_app::GetBackingScaleFactor() function in the following file:
+    // workdir/UnpackedTarball/skia/tools/sk_app/mac/WindowContextFactory_mac.h
     if (!bWindowScaling)
     {
         NSArray *aScreens = [NSScreen screens];
         if (aScreens != nullptr)
         {
-            int nScreens = [aScreens count];
-            for (int i = 0; i < nScreens; i++)
+            for (NSScreen *aScreen : aScreens)
             {
-                float fScale = [[aScreens objectAtIndex:i] backingScaleFactor];
+                float fScale = [aScreen backingScaleFactor];
                 if (fScale > fWindowScale)
                   fWindowScale = fScale;
             }
@@ -72,6 +79,20 @@ float getWindowScaling()
     }
     return fWindowScale;
 }
+
+void resetWindowScaling()
+{
+    // Related: tdf#147342 Force recalculation of the window scaling but keep
+    // the previous window scaling as the minimum so that we don't lose the
+    // resolution in cached images if a HiDPI monitor is disconnected and
+    // then reconnected.
+#if HAVE_FEATURE_SKIA
+    if ( SkiaHelper::isVCLSkiaEnabled() )
+        sk_app::ResetBackingScaleFactor();
+#endif
+    bWindowScaling = false;
+    getWindowScaling();
+}
 } // end aqua
 
 void AquaSalGraphics::SetWindowGraphics( AquaSalFrame* pFrame )
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 439612a6a4b2..0793c15dd4ab 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -488,6 +488,11 @@ void AquaSalGraphics::Flush( const tools::Rectangle& rRect 
)
     mpBackend->Flush( rRect );
 }
 
+void AquaSalGraphics::WindowBackingPropertiesChanged()
+{
+    mpBackend->WindowBackingPropertiesChanged();
+}
+
 #ifdef IOS
 
 bool AquaSharedAttributes::checkContext()
diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx
index c218d5d565e1..269c536abc7d 100644
--- a/vcl/skia/gdiimpl.cxx
+++ b/vcl/skia/gdiimpl.cxx
@@ -267,6 +267,7 @@ SkiaSalGraphicsImpl::SkiaSalGraphicsImpl(SalGraphics& 
rParent, SalGeometryProvid
     , mXorMode(XorMode::None)
     , mFlush(new SkiaFlushIdle(this))
     , mScaling(1)
+    , mInWindowBackingPropertiesChanged(false)
 {
 }
 
@@ -485,7 +486,7 @@ void SkiaSalGraphicsImpl::checkSurface()
         SAL_INFO("vcl.skia.trace",
                  "create(" << this << "): " << Size(mSurface->width(), 
mSurface->height()));
     }
-    else if (GetWidth() * mScaling != mSurface->width()
+    else if (mInWindowBackingPropertiesChanged || GetWidth() * mScaling != 
mSurface->width()
              || GetHeight() * mScaling != mSurface->height())
     {
         if (!avoidRecreateByResize())
@@ -2184,4 +2185,14 @@ void SkiaSalGraphicsImpl::dump(const char* file) const
     SkiaHelper::dump(mSurface, file);
 }
 
+void SkiaSalGraphicsImpl::windowBackingPropertiesChanged()
+{
+    if (mInWindowBackingPropertiesChanged || !isGPU())
+        return;
+
+    mInWindowBackingPropertiesChanged = true;
+    performFlush();
+    mInWindowBackingPropertiesChanged = false;
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/skia/osx/gdiimpl.cxx b/vcl/skia/osx/gdiimpl.cxx
index 1c1b7d2955c3..fcb2d2181fc4 100644
--- a/vcl/skia/osx/gdiimpl.cxx
+++ b/vcl/skia/osx/gdiimpl.cxx
@@ -95,6 +95,8 @@ void AquaSkiaSalGraphicsImpl::Flush() { performFlush(); }
 
 void AquaSkiaSalGraphicsImpl::Flush(const tools::Rectangle&) { performFlush(); 
}
 
+void AquaSkiaSalGraphicsImpl::WindowBackingPropertiesChanged() { 
windowBackingPropertiesChanged(); }
+
 void AquaSkiaSalGraphicsImpl::flushSurfaceToWindowContext()
 {
     if (!isGPU())
commit bfe39509676601262acfce217b0392763f738cd5
Author:     PL <pluby@guibomacbookpro.local>
AuthorDate: Fri Jan 27 19:04:23 2023 -0500
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    Fix iOS build errors
    
    Recent code reorganization and macOS changes caused the iOS build to fail. 
This change fixes the build errors and updates the iOS code to use the same 
headless data structures as other headless builds.
    
    Also, the following commits were backported so that the Collabora iOS app 
would build with this branch:
      include/rtl/string.hxx:
        a771945f982a228e9076195bae5bdd0c8aaf60b3
      include/LibreOfficeKit/LibreOfficeKitEnums.h and
      libreofficekit/source/gtk/lokdocview.cxx:
        89f5912ad2eee786508414791653a017206a7c04
    
    Change-Id: I9c5329eb6376120d6789447f991c93eb9839d595
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146265
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <t...@collabora.com>
    Reviewed-by: Patrick Luby <plub...@neooffice.org>
    (cherry picked from commit 5473f185eab53e4389859473f104e697db3ae879)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146324
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/rtl/string.hxx b/include/rtl/string.hxx
index 24c6a64008cf..0a90fc9f04a3 100644
--- a/include/rtl/string.hxx
+++ b/include/rtl/string.hxx
@@ -457,7 +457,7 @@ public:
         rtl_string_release( pData );
     }
 
-#if LIBO_INTERNAL_ONLY
+#if defined LIBO_INTERNAL_ONLY
     /** Provides an OString const & passing a storage pointer of an
         rtl_String * handle.
         It is more convenient to use C++ OString member functions when dealing
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 7b985b13711c..e8e4b116656f 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -684,9 +684,6 @@ $(eval $(call gb_Library_add_cxxflags,vcl,\
 ))
 $(eval $(call gb_Library_add_objcxxobjects,vcl,\
     vcl/quartz/cgutils \
-    $(if $(filter SKIA,$(BUILD_TYPE)), \
-        vcl/skia/quartz/salbmp \
-    ) \
 ))
 $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/ios/iosinst \
@@ -704,6 +701,7 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
     vcl/quartz/utils \
     vcl/quartz/AquaGraphicsBackend \
     $(vcl_headless_code) \
+    vcl/unx/generic/app/gendata \
 ))
 $(eval $(call gb_Library_use_system_darwin_frameworks,vcl,\
     UIKit \
diff --git a/vcl/inc/headless/svpframe.hxx b/vcl/inc/headless/svpframe.hxx
index bb15711aef53..1d8d11926e2f 100644
--- a/vcl/inc/headless/svpframe.hxx
+++ b/vcl/inc/headless/svpframe.hxx
@@ -27,6 +27,7 @@
 #include <vector>
 
 #ifdef IOS
+#include <quartz/salgdi.h>
 #define SvpSalInstance AquaSalInstance
 #define SvpSalGraphics AquaSalGraphics
 #endif
diff --git a/vcl/inc/ios/iosinst.hxx b/vcl/inc/ios/iosinst.hxx
index f1269cabe75e..6ba433eed104 100644
--- a/vcl/inc/ios/iosinst.hxx
+++ b/vcl/inc/ios/iosinst.hxx
@@ -30,6 +30,8 @@
 #include "headless/svpframe.hxx"
 
 class IosSalFrame;
+class SystemFontList;
+
 class IosSalInstance : public SvpSalInstance
 {
 public:
@@ -47,6 +49,19 @@ public:
     SalFrame* CreateChildFrame(SystemParentData* pParent, SalFrameStyleFlags 
nStyle) override;
 };
 
+class SalData
+{
+public:
+    std::unique_ptr<SystemFontList> mpFontList;
+    CGColorSpaceRef mxRGBSpace;
+    CGColorSpaceRef mxGraySpace;
+
+    static void ensureThreadAutoreleasePool(){};
+
+    explicit SalData();
+    virtual ~SalData();
+};
+
 #endif // INCLUDED_VCL_INC_IOS_IOSINST_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h
index 9e070c4215ce..0a4291d5692d 100644
--- a/vcl/inc/quartz/salgdi.h
+++ b/vcl/inc/quartz/salgdi.h
@@ -34,10 +34,15 @@
 #else
 #include <CoreGraphics/CoreGraphics.h>
 #include <CoreText/CoreText.h>
-#include "salgeom.hxx"
 #endif
 #include <postmac.h>
 
+#ifdef IOS
+// iOS defines a different Point class so include salgeom.hxx after postmac.h
+// so that it will use the Point class in tools/gen.hxx
+#include "salgeom.hxx"
+#endif
+
 #include <vcl/fontcapabilities.hxx>
 #include <vcl/metric.hxx>
 
diff --git a/vcl/inc/salbmp.hxx b/vcl/inc/salbmp.hxx
index 6abaa30ea4a7..2ffffb93fb4d 100644
--- a/vcl/inc/salbmp.hxx
+++ b/vcl/inc/salbmp.hxx
@@ -112,13 +112,15 @@ public:
     // almost always makes two copies of the SkiaSalBitmap's bitmap data: the
     // first copy is made in SkiaSalBitmap::AcquireBuffer() and then
     // QuartzSalBitmap makes a copy of the first copy.
-    // By making QuartzSalBitmap's methods that return a CGImageRef pure
-    // virtual, a non-Skia SalGraphics can now create a CGImageRef directly
-    // from a SkiaSalBitmap's Skia bitmap data without copying to any
-    // intermediate buffers.
-    virtual CGImageRef      CreateWithMask( const SalBitmap& rMask, int nX, 
int nY, int nWidth, int nHeight ) const = 0;
-    virtual CGImageRef      CreateColorMask( int nX, int nY, int nWidth, int 
nHeight, Color nMaskColor ) const = 0;
-    virtual CGImageRef      CreateCroppedImage( int nX, int nY, int nWidth, 
int nHeight ) const = 0;
+    // By making QuartzSalBitmap's methods that return a CGImageRef virtual,
+    // a non-Skia SalGraphics can now create a CGImageRef directly from a
+    // SkiaSalBitmap's Skia bitmap data without copying to any intermediate
+    // buffers.
+    // Note: these methods are not pure virtual as the SvpSalBitmap class
+    // extends this class directly.
+    virtual CGImageRef      CreateWithMask( const SalBitmap&, int, int, int, 
int ) const { return nullptr; }
+    virtual CGImageRef      CreateColorMask( int, int, int, int, Color ) const 
{ return nullptr; }
+    virtual CGImageRef      CreateCroppedImage( int, int, int, int ) const { 
return nullptr; }
 #endif
 
     BitmapChecksum GetChecksum() const
diff --git a/vcl/inc/unx/gendata.hxx b/vcl/inc/unx/gendata.hxx
index f276b988fe4a..f0b769da08e7 100644
--- a/vcl/inc/unx/gendata.hxx
+++ b/vcl/inc/unx/gendata.hxx
@@ -16,8 +16,13 @@
 
 #include <memory>
 
+#ifndef IOS
 class FreetypeManager;
+#endif
 class SalGenericDisplay;
+
+#ifndef IOS
+
 namespace psp
 {
 class PrintFontManager;
@@ -38,12 +43,16 @@ public:
     virtual ~SalData();
 };
 
+#endif
+
 // This class is kind of a misnomer. What this class is mainly about is the
 // usage of Freetype and Fontconfig, which happens to match all *nix backends;
 // except that the osx and ios backends are *nix but don't use this.
 class VCL_PLUGIN_PUBLIC GenericUnixSalData : public SalData
 {
+#ifndef IOS
     friend class ::psp::PrinterInfoManager;
+#endif
 
     SalGenericDisplay* m_pDisplay;
     // cached hostname to avoid slow lookup
@@ -51,9 +60,11 @@ class VCL_PLUGIN_PUBLIC GenericUnixSalData : public SalData
     // for transient storage of unicode strings eg. 'u123' by input methods
     OUString m_aUnicodeEntry;
 
+#ifndef IOS
     std::unique_ptr<FreetypeManager> m_pFreetypeManager;
     std::unique_ptr<psp::PrintFontManager> m_pPrintFontManager;
     std::unique_ptr<psp::PrinterInfoManager> m_pPrinterInfoManager;
+#endif
 
     void InitFreetypeManager();
     void InitPrintFontManager();
@@ -75,6 +86,8 @@ public:
 
     OUString& GetUnicodeCommand() { return m_aUnicodeEntry; }
 
+#ifndef IOS
+
     FreetypeManager* GetFreetypeManager()
     {
         if (!m_pFreetypeManager)
@@ -91,6 +104,8 @@ public:
         return m_pPrintFontManager.get();
     }
 
+#endif
+
     // Mostly useful for remote protocol backends
     virtual void ErrorTrapPush() = 0;
     virtual bool ErrorTrapPop(bool bIgnoreError = true) = 0; // true on error
diff --git a/vcl/ios/clipboard.cxx b/vcl/ios/clipboard.cxx
index 46dfa92bfcd7..61530b926e2a 100644
--- a/vcl/ios/clipboard.cxx
+++ b/vcl/ios/clipboard.cxx
@@ -18,6 +18,7 @@
  */
 
 #include "ios/iosinst.hxx"
+#include "quartz/utils.h"
 
 #include "clipboard.hxx"
 
diff --git a/vcl/ios/dummies.cxx b/vcl/ios/dummies.cxx
index 9e03f598f0ff..51fd5c26164a 100644
--- a/vcl/ios/dummies.cxx
+++ b/vcl/ios/dummies.cxx
@@ -17,11 +17,12 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 #include <vcl/svapp.hxx>
+#include "ios/iosinst.hxx"
 #include "salprn.hxx"
 #include "quartz/salgdi.h"
+#include "headless/svpdata.hxx"
 #include "headless/svpinst.hxx"
 #include "unx/fontmanager.hxx"
-#include "unx/gendata.hxx"
 
 std::unique_ptr<SalPrinter> SvpSalInstance::CreatePrinter( SalInfoPrinter* /* 
pInfoPrinter */ )
 {
diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx
index a9fa27e5ea82..533fef269a07 100644
--- a/vcl/ios/iosinst.cxx
+++ b/vcl/ios/iosinst.cxx
@@ -22,8 +22,9 @@
 #include <postmac.h>
 
 #include "ios/iosinst.hxx"
+#include "quartz/salgdi.h"
+#include "headless/svpdata.hxx"
 #include "headless/svpdummies.hxx"
-#include <osx/saldata.hxx>
 #include "quartz/utils.h"
 #include <vcl/layout.hxx>
 #include <vcl/settings.hxx>
@@ -120,7 +121,7 @@ public:
 
 SalFrame *IosSalInstance::CreateChildFrame( SystemParentData* pParent, 
SalFrameStyleFlags nStyle )
 {
-    pParent = NULL;
+    (void)pParent;
     return new IosSalFrame( this, NULL, nStyle );
 }
 
@@ -130,10 +131,10 @@ SalFrame *IosSalInstance::CreateFrame( SalFrame* pParent, 
SalFrameStyleFlags nSt
 }
 
 SalData::SalData() :
-    mpFontList( 0 ),
     mxRGBSpace( CGColorSpaceCreateDeviceRGB() ),
     mxGraySpace( CGColorSpaceCreateDeviceGray() )
 {
+    SetSalData(this);
 }
 
 SalData::~SalData()
@@ -142,12 +143,10 @@ SalData::~SalData()
     CGColorSpaceRelease(mxGraySpace);
 }
 
-void SalData::ensureThreadAutoreleasePool() {}
-
 extern "C" SalInstance *create_SalInstance()
 {
     IosSalInstance* pInstance = new IosSalInstance( 
std::make_unique<SvpSalYieldMutex>() );
-    new SvpSalData(pInstance);
+    new SvpSalData();
     return pInstance;
 }
 
diff --git a/vcl/ios/salios.cxx b/vcl/ios/salios.cxx
index 52e94b109e1c..362fa258ea9c 100644
--- a/vcl/ios/salios.cxx
+++ b/vcl/ios/salios.cxx
@@ -27,6 +27,7 @@
 
 #include <vcl/bitmap.hxx>
 
+#include <ios/iosinst.hxx>
 #include <quartz/salbmp.h>
 #include <quartz/salgdi.h>
 #include <quartz/salvd.h>
diff --git a/vcl/quartz/AquaGraphicsBackend.cxx 
b/vcl/quartz/AquaGraphicsBackend.cxx
index f94c26f062d1..6caa99a28915 100644
--- a/vcl/quartz/AquaGraphicsBackend.cxx
+++ b/vcl/quartz/AquaGraphicsBackend.cxx
@@ -41,7 +41,7 @@
 #endif
 #include <quartz/utils.h>
 #ifdef IOS
-#include <svdata.hxx>
+#include <ios/iosinst.hxx>
 #endif
 
 using namespace vcl;
diff --git a/vcl/quartz/cgutils.mm b/vcl/quartz/cgutils.mm
index 61935acc7fdd..c28391c48395 100644
--- a/vcl/quartz/cgutils.mm
+++ b/vcl/quartz/cgutils.mm
@@ -20,7 +20,11 @@
 #include <quartz/cgutils.h>
 
 #include <salbmp.hxx>
+#ifdef MACOSX
 #include <osx/saldata.hxx>
+#else
+#include <ios/iosinst.hxx>
+#endif
 
 static void CFRTLFree(void* /*info*/, const void* data, size_t /*size*/)
 {
diff --git a/vcl/quartz/salbmp.cxx b/vcl/quartz/salbmp.cxx
index e71c35612cb4..afd65d863370 100644
--- a/vcl/quartz/salbmp.cxx
+++ b/vcl/quartz/salbmp.cxx
@@ -43,7 +43,7 @@
 #ifdef MACOSX
 #include <osx/saldata.hxx>
 #else
-#include <svdata.hxx>
+#include <ios/iosinst.hxx>
 #endif
 
 const unsigned long k32BitRedColorMask   = 0x00ff0000;
diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx
index 571e44f23e71..439612a6a4b2 100644
--- a/vcl/quartz/salgdi.cxx
+++ b/vcl/quartz/salgdi.cxx
@@ -51,7 +51,7 @@
 #endif
 #include <quartz/utils.h>
 #ifdef IOS
-#include <svdata.hxx>
+#include <ios/iosinst.hxx>
 #endif
 #include <sallayout.hxx>
 
@@ -154,6 +154,7 @@ AquaSalGraphics::AquaSalGraphics(bool bPrinter)
     if(!bPrinter && SkiaHelper::isVCLSkiaEnabled())
         mpBackend.reset(new AquaSkiaSalGraphicsImpl(*this, maShared));
 #else
+    (void)bPrinter;
     if(false)
         ;
 #endif
diff --git a/vcl/quartz/salvd.cxx b/vcl/quartz/salvd.cxx
index 7cd82fbcbb96..4e0c295a17f4 100644
--- a/vcl/quartz/salvd.cxx
+++ b/vcl/quartz/salvd.cxx
@@ -28,6 +28,7 @@
 #include <osx/saldata.hxx>
 #include <osx/salframe.h>
 #else
+#include <ios/iosinst.hxx>
 #include "headless/svpframe.hxx"
 #include "headless/svpinst.hxx"
 #include "headless/svpvd.hxx"
diff --git a/vcl/unx/generic/app/gendata.cxx b/vcl/unx/generic/app/gendata.cxx
index 444d653023a7..79175217c89a 100644
--- a/vcl/unx/generic/app/gendata.cxx
+++ b/vcl/unx/generic/app/gendata.cxx
@@ -17,9 +17,16 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#ifdef IOS
+#include <ios/iosinst.hxx>
+#endif
+
 #include <unx/gendata.hxx>
 
 #include <unx/fontmanager.hxx>
+
+#ifndef IOS
+
 #include <unx/glyphcache.hxx>
 #include <printerinfomanager.hxx>
 
@@ -27,6 +34,8 @@ SalData::SalData() { SetSalData(this); }
 
 SalData::~SalData() {}
 
+#endif
+
 GenericUnixSalData::GenericUnixSalData()
     : m_pDisplay(nullptr)
 {
@@ -34,21 +43,27 @@ GenericUnixSalData::GenericUnixSalData()
 
 GenericUnixSalData::~GenericUnixSalData()
 {
+#ifndef IOS
     // at least for InitPrintFontManager the sequence is important
     m_pPrintFontManager.reset();
     m_pFreetypeManager.reset();
     m_pPrinterInfoManager.reset();
+#endif
 }
 
 void GenericUnixSalData::Dispose() {}
 
+#ifndef IOS
 void GenericUnixSalData::InitFreetypeManager() { m_pFreetypeManager.reset(new 
FreetypeManager); }
+#endif
 
 void GenericUnixSalData::InitPrintFontManager()
 {
+#ifndef IOS
     GetFreetypeManager();
     m_pPrintFontManager.reset(new psp::PrintFontManager);
     m_pPrintFontManager->initialize();
+#endif
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit b1be348a7f263e44bd4e1f23a37b7bcfca1aa06e
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Jan 31 11:39:42 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    uitest: Always change doc info setting back to false
    
    otherwise it won't be changed if an exception is raised
    affering other tests as seen in
    
https://gerrit.libreoffice.org/c/core/+/130530/2/sw/qa/uitest/writer_tests6/save_readonly_with_password.py#50
    
    Change-Id: Ife443cc6627025a05a0a33ba1c86140f087dd70c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146333
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py 
b/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
index 746d9a75075c..0df0dc504dde 100644
--- a/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
+++ b/sw/qa/uitest/writer_tests6/edit_file_properties_before_saving.py
@@ -19,7 +19,6 @@ class edit_file_properties_before_saving(UITestCase):
 
     def change_doc_info_setting(self, enabled):
         with 
self.ui_test.execute_dialog_through_command(".uno:OptionsTreeDialog") as 
xDialog:
-
             xPages = xDialog.getChild("pages")
             xLoadSaveEntry = xPages.getChild('1')
             xLoadSaveEntry.executeAction("EXPAND", tuple())
@@ -38,27 +37,28 @@ class edit_file_properties_before_saving(UITestCase):
 
             with self.ui_test.create_doc_in_start_center("writer"):
 
-                self.change_doc_info_setting("true")
+                try:
+                    self.change_doc_info_setting("true")
 
-                # Save Copy as
-                with 
self.ui_test.execute_dialog_through_command('.uno:SaveAs', close_button="") as 
xDialog:
-                    xFileName = xDialog.getChild('file_name')
-                    xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'CTRL+A'}))
-                    xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'BACKSPACE'}))
-                    xFileName.executeAction('TYPE', mkPropertyValues({'TEXT': 
xFilePath}))
+                    # Save Copy as
+                    with 
self.ui_test.execute_dialog_through_command('.uno:SaveAs', close_button="") as 
xDialog:
+                        xFileName = xDialog.getChild('file_name')
+                        xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'CTRL+A'}))
+                        xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'BACKSPACE'}))
+                        xFileName.executeAction('TYPE', 
mkPropertyValues({'TEXT': xFilePath}))
 
-                    xOpen = xDialog.getChild("open")
-                    with self.ui_test.execute_dialog_through_action(xOpen, 
"CLICK") as xPropertiesDialog:
-                        xReadOnly = xPropertiesDialog.getChild("readonly")
-                        xReadOnly.executeAction("CLICK", tuple())
-                        self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
+                        xOpen = xDialog.getChild("open")
+                        with self.ui_test.execute_dialog_through_action(xOpen, 
"CLICK") as xPropertiesDialog:
+                            xReadOnly = xPropertiesDialog.getChild("readonly")
+                            xReadOnly.executeAction("CLICK", tuple())
+                            self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
+                finally:
+                    # Put this setting back to false, otherwise it might 
affect other tests
+                    self.change_doc_info_setting("false")
 
             self.ui_test.wait_until_file_is_available(xFilePath)
 
             with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
-
-                self.change_doc_info_setting("false")
-
                 # Without the fix in place, this test would have failed here
                 self.assertTrue(doc2.isReadonly())
 
@@ -69,35 +69,36 @@ class edit_file_properties_before_saving(UITestCase):
 
             with self.ui_test.create_doc_in_start_center("writer"):
 
-                self.change_doc_info_setting("true")
-
-                xWriterDoc = self.xUITest.getTopFocusWindow()
-                xWriterEdit = xWriterDoc.getChild("writer_edit")
-                type_text(xWriterEdit, "XXXX")
-
-                # Close document and save
-                with 
self.ui_test.execute_dialog_through_command('.uno:CloseDoc', close_button="") 
as xConfirmationDialog:
-                    xSave = xConfirmationDialog.getChild("save")
-
-                    with self.ui_test.execute_dialog_through_action(xSave, 
"CLICK", close_button="") as xDialog:
-                        xFileName = xDialog.getChild('file_name')
-                        xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'CTRL+A'}))
-                        xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'BACKSPACE'}))
-                        xFileName.executeAction('TYPE', 
mkPropertyValues({'TEXT': xFilePath}))
-
-                        xOpen = xDialog.getChild("open")
-                        with self.ui_test.execute_dialog_through_action(xOpen, 
"CLICK") as xPropertiesDialog:
-                            # Without the fix in place, this test would have 
crashed here
-                            xReadOnly = xPropertiesDialog.getChild("readonly")
-                            xReadOnly.executeAction("CLICK", tuple())
-                            self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
+                try:
+                    self.change_doc_info_setting("true")
+
+                    xWriterDoc = self.xUITest.getTopFocusWindow()
+                    xWriterEdit = xWriterDoc.getChild("writer_edit")
+                    type_text(xWriterEdit, "XXXX")
+
+                    # Close document and save
+                    with 
self.ui_test.execute_dialog_through_command('.uno:CloseDoc', close_button="") 
as xConfirmationDialog:
+                        xSave = xConfirmationDialog.getChild("save")
+
+                        with self.ui_test.execute_dialog_through_action(xSave, 
"CLICK", close_button="") as xDialog:
+                            xFileName = xDialog.getChild('file_name')
+                            xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'CTRL+A'}))
+                            xFileName.executeAction('TYPE', 
mkPropertyValues({'KEYCODE':'BACKSPACE'}))
+                            xFileName.executeAction('TYPE', 
mkPropertyValues({'TEXT': xFilePath}))
+
+                            xOpen = xDialog.getChild("open")
+                            with 
self.ui_test.execute_dialog_through_action(xOpen, "CLICK") as xPropertiesDialog:
+                                # Without the fix in place, this test would 
have crashed here
+                                xReadOnly = 
xPropertiesDialog.getChild("readonly")
+                                xReadOnly.executeAction("CLICK", tuple())
+                                self.assertEqual("true", 
get_state_as_dict(xReadOnly)['Selected'])
+                finally:
+                    # Put this setting back to false, otherwise it might 
affect other tests
+                    self.change_doc_info_setting("false")
 
             self.ui_test.wait_until_file_is_available(xFilePath)
 
             with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as 
doc2:
-
-                self.change_doc_info_setting("false")
-
                 self.assertTrue(doc2.isReadonly())
 
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
commit a82600d2a7d4ab692ad53670cb383a140af8bd74
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Thu Jan 26 13:43:28 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    tdf#114973 sw: IsSelOvr() should not leave the text
    
    Jumping from body to header is certainly unexpected, call FindNextCnt()
    which does additional checks to stay in the same text environment.
    
    Change-Id: If54bff62cac420dc0990b6be070b81fa56365c50
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146256
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 5aeee226479427062ac885be407671981d6940ef)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146205
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sw/source/core/crsr/swcrsr.cxx b/sw/source/core/crsr/swcrsr.cxx
index 132bbe644610..e3bb1a02c8d8 100644
--- a/sw/source/core/crsr/swcrsr.cxx
+++ b/sw/source/core/crsr/swcrsr.cxx
@@ -219,7 +219,7 @@ namespace
     }
 }
 
-bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
+bool SwCursor::IsSelOvr(SwCursorSelOverFlags const eFlags)
 {
     SwDoc& rDoc = GetDoc();
     SwNodes& rNds = rDoc.GetNodes();
@@ -341,7 +341,7 @@ bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
             bool bGoNxt = m_vSavePos.back().nNode < rPtPos.GetNodeIndex();
             for (;;)
             {
-                pFrame = bGoNxt ? pFrame->GetNextContentFrame() : 
pFrame->GetPrevContentFrame();
+                pFrame = bGoNxt ? pFrame->FindNextCnt(true) : 
pFrame->FindPrevCnt();
                 if (!pFrame || 0 != pFrame->getFrameArea().Height() )
                     break;
             }
@@ -354,8 +354,7 @@ bool SwCursor::IsSelOvr( SwCursorSelOverFlags eFlags )
                 pFrame = static_cast<const 
SwContentNode*>(pNd)->getLayoutFrame( 
rDoc.getIDocumentLayoutAccess().GetCurrentLayout() );
                 while ( pFrame && 0 == pFrame->getFrameArea().Height() )
                 {
-                    pFrame = bGoNxt ? pFrame->GetNextContentFrame()
-                        :   pFrame->GetPrevContentFrame();
+                    pFrame = bGoNxt ? pFrame->FindNextCnt(true) : 
pFrame->FindPrevCnt();
                 }
             }
 
commit 82b940f5b94967540e4feb6c7eadd89346ba6e3f
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Mon Jan 23 19:44:03 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:07 2023 +0100

    tdf#45854 sysui: replace wrong ODB mime type
    
    https://issues.oasis-open.org/browse/OFFICE-3745 was resolved.
    
    Replace all wrong:
    application/vnd.oasis.opendocument.database
    with:
    application/vnd.oasis.opendocument.base
    
    There is an identifier "org.oasis-open.opendocument.database"
    being used in some MacOSX Info.plist files - there is no indication that
    it needs to "match" the mime-type so leave it as is.
    
    Change-Id: Ic8e0d24e3aa74743801a670846daf2d322c33d70
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146040
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 53fe1f0880bc7e8a467404cddabb27daecfc37cb)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146074
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sysui/desktop/debian/postinst b/sysui/desktop/debian/postinst
index dcb91680cb4e..f3220f311fdf 100755
--- a/sysui/desktop/debian/postinst
+++ b/sysui/desktop/debian/postinst
@@ -166,7 +166,7 @@ application/vnd.sun.xml.draw; %PREFIX -view %s
 application/vnd.sun.xml.draw.template; %PREFIX -view %s
 application/vnd.stardivision.draw; %PREFIX -view %s
 application/x-stardraw; %PREFIX -view %s
-application/vnd.oasis.opendocument.database; %PREFIX -view %s
+application/vnd.oasis.opendocument.base; %PREFIX -view %s
 application/vnd.sun.xml.base; %PREFIX -view %s
 application/vnd.writerperfect; %PREFIX -view %s
 application/wordperfect5.1; %PREFIX -view %s
diff --git a/sysui/desktop/freedesktop/freedesktop-menus.spec 
b/sysui/desktop/freedesktop/freedesktop-menus.spec
index 2452a44b99dc..8ed6793a0de4 100644
--- a/sysui/desktop/freedesktop/freedesktop-menus.spec
+++ b/sysui/desktop/freedesktop/freedesktop-menus.spec
@@ -138,7 +138,7 @@ do
   icon=${link_dir}/%iconprefix-formula.png;                     test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.sun.xml.math.png
   icon=${link_dir}/%iconprefix-master-document.png;             test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.sun.xml.writer.global.png
   icon=${link_dir}/%iconprefix-oasis-database.png;              test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.sun.xml.base.png
-  icon=${link_dir}/%iconprefix-oasis-database.png;              test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.oasis.opendocument.database.png
+  icon=${link_dir}/%iconprefix-oasis-database.png;              test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.oasis.opendocument.base.png
   icon=${link_dir}/%iconprefix-oasis-drawing.png;               test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.oasis.opendocument.graphics.png
   icon=${link_dir}/%iconprefix-oasis-drawing-template.png;      test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.oasis.opendocument.graphics-template.png
   icon=${link_dir}/%iconprefix-oasis-formula.png;               test -f 
${icon} && ln -sf ${icon} 
${link_dir}/gnome-mime-application-vnd.oasis.opendocument.formula.png
@@ -307,7 +307,7 @@ application/vnd.sun.xml.draw; %unixfilename -view %s
 application/vnd.sun.xml.draw.template; %unixfilename -view %s
 application/vnd.stardivision.draw; %unixfilename -view %s
 application/x-stardraw; %unixfilename -view %s
-application/vnd.oasis.opendocument.database; %unixfilename -view %s
+application/vnd.oasis.opendocument.base; %unixfilename -view %s
 application/vnd.sun.xml.base; %unixfilename -view %s
 application/vnd.openofficeorg.extension; %unixfilename %s
 application/vnd.openxmlformats-officedocument.wordprocessingml.document; 
%unixfilename -view %s
diff --git a/sysui/desktop/macosx/Info.plist.in 
b/sysui/desktop/macosx/Info.plist.in
index 23e7794d8c49..91b43b21ec21 100644
--- a/sysui/desktop/macosx/Info.plist.in
+++ b/sysui/desktop/macosx/Info.plist.in
@@ -688,7 +688,7 @@
                 </array>
                 <key>public.mime-type</key>
                 <array>
-                    
<string>application/vnd.oasis.opendocument.database</string>
+                    <string>application/vnd.oasis.opendocument.base</string>
                 </array>
             </dict>
             <key>UTTypeIconFile</key>
diff --git a/sysui/desktop/menus/base.desktop b/sysui/desktop/menus/base.desktop
index c2087120d532..7a678ca6bc18 100644
--- a/sysui/desktop/menus/base.desktop
+++ b/sysui/desktop/menus/base.desktop
@@ -22,7 +22,7 @@ Icon=base
 Type=Application
 Categories=Office;Database;X-Red-Hat-Base;
 Exec=${UNIXBASISROOTNAME} --base %%FILE%%
-MimeType=application/vnd.oasis.opendocument.database;application/vnd.sun.xml.base;
+MimeType=application/vnd.oasis.opendocument.base;application/vnd.sun.xml.base;
 Name=%PRODUCTNAME Base
 GenericName=Database Development
 Comment=Manage databases, create queries and reports to track and manage your 
information.
diff --git a/sysui/desktop/solaris/mailcap b/sysui/desktop/solaris/mailcap
index 910fcbeb89cd..30b15ab90727 100755
--- a/sysui/desktop/solaris/mailcap
+++ b/sysui/desktop/solaris/mailcap
@@ -86,7 +86,7 @@ application/vnd.sun.xml.draw.template; %PREFIX -view %s
 application/vnd.stardivision.draw; %PREFIX -view %s
 application/x-stardraw; %PREFIX -view %s
 application/vnd.sun.xml.base; %PREFIX -view %s
-application/vnd.oasis.opendocument.database; %PREFIX -view %s
+application/vnd.oasis.opendocument.base; %PREFIX -view %s
 application/vnd.writerperfect; %PREFIX -view %s
 application/wordperfect5.1; %PREFIX -view %s
 application/x-wordperfect; %PREFIX -view %s
commit a792d870ec7782caefac28a2bdf821c1680fbbea
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Fri Jan 20 15:09:22 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    sw: Word export: hyperlinks for ToX Figures/Objects/Tables
    
    This was missing, and lcl_IsHyperlinked() has a wrong termination check,
    which is noticable here because these have only 1 level (+ title at 0).
    
    Change-Id: I56a8622ee2c9df2167e26863cb3797b01434553c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145903
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    (cherry picked from commit 97cd92f3dee199d50856f24d51d7d7a236ae7bbe)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145951
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
index 2210231b661b..1073f28dd30f 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlfieldexport.cxx
@@ -165,7 +165,7 @@ CPPUNIT_TEST_FIXTURE(Test, testFDO77715)
     loadAndReload("FDO77715.docx");
     xmlDocUniquePtr pXmlDoc = parseExport("word/document.xml");
 
-    assertXPathContent(pXmlDoc, 
"/w:document/w:body/w:p[3]/w:r[2]/w:instrText[1]", " TOC \\c ");
+    assertXPathContent(pXmlDoc, 
"/w:document/w:body/w:p[3]/w:r[2]/w:instrText[1]", " TOC \\c \\h ");
 }
 
 CPPUNIT_TEST_FIXTURE(Test, testTOCFlag_u)
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx
index 862dbbe70e66..7c3d9e0879b9 100644
--- a/sw/source/filter/ww8/ww8atr.cxx
+++ b/sw/source/filter/ww8/ww8atr.cxx
@@ -2053,7 +2053,7 @@ static int lcl_CheckForm( const SwForm& rForm, sal_uInt8 
nLvl, OUString& rText )
 static bool lcl_IsHyperlinked(const SwForm& rForm, sal_uInt16 nTOXLvl)
 {
     bool bRes = false;
-    for (sal_uInt16 nI = 1; nI < nTOXLvl; ++nI)
+    for (sal_uInt16 nI = 1; nI <= nTOXLvl; ++nI)
     {
         // #i21237#
         SwFormTokens aPattern = rForm.GetPattern(nI);
@@ -2364,6 +2364,10 @@ void AttributeOutputBase::StartTOX( const SwSection& 
rSect )
                         sStr += "\\p \"" + aText + sEntryEnd;
                     }
                 }
+                if (lcl_IsHyperlinked(pTOX->GetTOXForm(), 1))
+                {
+                    sStr += "\\h ";
+                }
                 break;
 
             case TOX_AUTHORITIES:
commit c3facfa5c45fead141f2bb6b4ea17c1be643050e
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Mon Jan 16 08:16:00 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    external/skia: Missing include
    
    > In file included from 
workdir/UnpackedTarball/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.cpp:27:
    > In file included from 
workdir/UnpackedTarball/skia/third_party/vulkanmemoryallocator/GrVulkanMemoryAllocator.h:35:
    > 
workdir/UnpackedTarball/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h:2817:9:
 error: use of undeclared identifier 'snprintf'
    >         snprintf(outStr, strLen, "%u", static_cast<unsigned int>(num));
    >         ^
    
    etc.
    
    Change-Id: I4f13c8a137f23ef62d67c3b4dfa8f1c0ddfc5ec9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145552
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>
    (cherry picked from commit 5877c6b118c99c9ec807a111471bfd67720a5086)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146328
    Reviewed-by: Sam James <s...@gentoo.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/external/skia/missing-include.patch.0 
b/external/skia/missing-include.patch.0
index 6b15e87590b5..5d1d0609b989 100644
--- a/external/skia/missing-include.patch.0
+++ b/external/skia/missing-include.patch.0
@@ -8,3 +8,13 @@
  #include <unordered_map>
  #include <vector>
  #include "include/core/SkSpan.h"
+--- third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
++++ third_party/vulkanmemoryallocator/include/vk_mem_alloc.h
+@@ -2570,6 +2570,7 @@
+ #include <cstring>
+ #include <utility>
+ #include <type_traits>
++#include <stdio.h>
+ 
+ #ifdef _MSC_VER
+     #include <intrin.h> // For functions like __popcnt, _BitScanForward etc.
commit c5eac7b3ccf15d7944055ded77d6627df2283383
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Mon Jan 30 13:05:32 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    sw: blind fix for uitest hang
    
    Seen in 
https://ci.libreoffice.org/job/gerrit_linux_clang_dbgutil/132028/consoleFull#101810144248ce9c26-9d0a-43a8-83d8-c44f54920d59
    
    Change-Id: I67312b3f7e6c6192e14a6bb3236ba4ff959002f5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146353
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit 72f3df889a950218c9e801aa93bb2e755d26f3e1)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146397
    Tested-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sw/qa/uitest/sidebar/stylesSidebar.py 
b/sw/qa/uitest/sidebar/stylesSidebar.py
index ec376a164b1d..ee20ef23d5eb 100644
--- a/sw/qa/uitest/sidebar/stylesSidebar.py
+++ b/sw/qa/uitest/sidebar/stylesSidebar.py
@@ -46,16 +46,17 @@ class StylesSidebar(UITestCase):
             xWriterDoc = self.xUITest.getTopFocusWindow()
             xWriterEdit = xWriterDoc.getChild("writer_edit")
 
-            self.xUITest.executeCommand(".uno:Sidebar")
-            xWriterEdit.executeAction("SIDEBAR", mkPropertyValues({"PANEL": 
"StyleListPanel"}))
-
-            xFilter = xWriterEdit.getChild('filter')
-            select_by_text(xFilter, "Custom Styles")
-
             expectedResults = ["customParagraphStyle", "customCharacterStyle", 
"customFrameStyle",
                     "customPageStyle", "customNumberingStyle"]
 
             for i in range(5):
+
+                self.xUITest.executeCommand(".uno:Sidebar")
+                xWriterEdit.executeAction("SIDEBAR", 
mkPropertyValues({"PANEL": "StyleListPanel"}))
+
+                xFilter = xWriterEdit.getChild('filter')
+                select_by_text(xFilter, "Custom Styles")
+
                 xLeft = xWriterEdit.getChild('left')
 
                 #change to another style type
@@ -69,7 +70,7 @@ class StylesSidebar(UITestCase):
                 self.ui_test.wait_until_property_is_updated(xFlatView, 
"SelectEntryText", expectedResults[i])
                 self.assertEqual(expectedResults[i], 
get_state_as_dict(xFlatView)['SelectEntryText'])
 
-            self.xUITest.executeCommand(".uno:Sidebar")
+                self.xUITest.executeCommand(".uno:Sidebar")
 
 
 # vim: set shiftwidth=4 softtabstop=4 expandtab:
commit fbf2312317fdfd6288b077ec3741fd0399973c5c
Author:     Tünde Tóth <toth.tu...@nisz.hu>
AuthorDate: Tue Jan 24 15:02:09 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    tdf#153185 PPTX: fix export of linked OLE objects
    
    Linked OLE objects were not exported.
    
    Change-Id: If6e8c6e0d0c9917e8ec476ad14dcaa1602c74b29
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146073
    Tested-by: Jenkins
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>
    (cherry picked from commit f589d7e769bee4b82826a944fed3cf2382d84fb2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146319
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx
index 4b41f56d79cd..4ef05ba80cab 100644
--- a/oox/source/export/shapes.cxx
+++ b/oox/source/export/shapes.cxx
@@ -2601,49 +2601,60 @@ ShapeExport& ShapeExport::WriteOLE2Shape( const 
Reference< XShape >& xShape )
     OUString sRelationType;
     OUString sSuffix;
     const char * pProgID(nullptr);
+    OString anotherProgID;
 
     uno::Reference<io::XInputStream> const xInStream =
         oox::GetOLEObjectStream(
             mpFB->getComponentContext(), xObj, progID,
             sMediaType, sRelationType, sSuffix, pProgID);
 
+    OUString sURL;
+    OUString sRelId;
     if (!xInStream.is())
     {
-        return *this;
-    }
+        xPropSet->getPropertyValue("LinkURL") >>= sURL;
+        if (sURL.isEmpty())
+            return *this;
 
-    OString anotherProgID;
-    if (!pProgID && !progID.isEmpty())
-    {
-        anotherProgID = OUStringToOString(progID, RTL_TEXTENCODING_UTF8);
-        pProgID = anotherProgID.getStr();
+        sRelId = mpFB->addRelation(mpFS->getOutputStream(),
+                                   
oox::getRelationship(Relationship::OLEOBJECT), sURL, true);
     }
+    else
+    {
+        if (!pProgID && !progID.isEmpty())
+        {
+            anotherProgID = OUStringToOString(progID, RTL_TEXTENCODING_UTF8);
+            pProgID = anotherProgID.getStr();
+        }
+
+        assert(!sMediaType.isEmpty());
+        assert(!sRelationType.isEmpty());
+        assert(!sSuffix.isEmpty());
 
-    assert(!sMediaType.isEmpty());
-    assert(!sRelationType.isEmpty());
-    assert(!sSuffix.isEmpty());
+        OUString sFileName
+            = "embeddings/oleObject" + OUString::number(++m_nEmbeddedObjects) 
+ "." + sSuffix;
+        uno::Reference<io::XOutputStream> const 
xOutStream(mpFB->openFragmentStream(
+            OUString::createFromAscii(GetComponentDir()) + "/" + sFileName, 
sMediaType));
+        assert(xOutStream.is()); // no reason why that could fail
 
-    OUString sFileName = "embeddings/oleObject" + 
OUString::number(++m_nEmbeddedObjects) + "." + sSuffix;
-    uno::Reference<io::XOutputStream> const xOutStream(
-        mpFB->openFragmentStream(
-            OUString::createFromAscii(GetComponentDir()) + "/" + sFileName,
-            sMediaType));
-    assert(xOutStream.is()); // no reason why that could fail
+        try
+        {
+            ::comphelper::OStorageHelper::CopyInputToOutput(xInStream, 
xOutStream);
+        }
+        catch (uno::Exception const&)
+        {
+            TOOLS_WARN_EXCEPTION("oox.shape", "ShapeExport::WriteOLEObject");
+        }
 
-    try {
-        ::comphelper::OStorageHelper::CopyInputToOutput(xInStream, xOutStream);
-    } catch (uno::Exception const&) {
-        TOOLS_WARN_EXCEPTION("oox.shape", "ShapeExport::WriteOLEObject");
+        sRelId = mpFB->addRelation(
+            mpFS->getOutputStream(), sRelationType,
+            Concat2View(OUString::createFromAscii(GetRelationCompPrefix()) + 
sFileName));
     }
 
     sal_Int64 nAspect;
     bool bShowAsIcon = (xPropSet->getPropertyValue("Aspect") >>= nAspect)
                        && nAspect == embed::Aspects::MSOLE_ICON;
 
-    OUString const sRelId = mpFB->addRelation(
-        mpFS->getOutputStream(), sRelationType,
-        Concat2View(OUString::createFromAscii(GetRelationCompPrefix()) + 
sFileName));
-
     mpFS->startElementNS(mnXmlNamespace, XML_graphicFrame);
 
     mpFS->startElementNS(mnXmlNamespace, XML_nvGraphicFramePr);
@@ -2681,7 +2692,10 @@ ShapeExport& ShapeExport::WriteOLE2Shape( const 
Reference< XShape >& xShape )
                           XML_spid, "" );
     }
 
-    mpFS->singleElementNS( mnXmlNamespace, XML_embed );
+    if (sURL.isEmpty())
+        mpFS->singleElementNS(mnXmlNamespace, XML_embed);
+    else
+        mpFS->singleElementNS(mnXmlNamespace, XML_link, XML_updateAutomatic, 
"1");
 
     // pic element
     SdrObject* pSdrOLE2(SdrObject::getSdrObjectFromXShape(xShape));
diff --git a/sd/qa/unit/data/odp/linked_ole.odp 
b/sd/qa/unit/data/odp/linked_ole.odp
new file mode 100644
index 000000000000..13fb0a845a13
Binary files /dev/null and b/sd/qa/unit/data/odp/linked_ole.odp differ
diff --git a/sd/qa/unit/export-tests-ooxml3.cxx 
b/sd/qa/unit/export-tests-ooxml3.cxx
index db023bef2592..287f35cc3637 100644
--- a/sd/qa/unit/export-tests-ooxml3.cxx
+++ b/sd/qa/unit/export-tests-ooxml3.cxx
@@ -131,6 +131,7 @@ public:
     void testAutofittedTextboxIndent();
     void testTdf151622_oleIcon();
     void testTdf152436();
+    void testLinkedOLE();
 
     CPPUNIT_TEST_SUITE(SdOOXMLExportTest3);
 
@@ -223,6 +224,7 @@ public:
     CPPUNIT_TEST(testAutofittedTextboxIndent);
     CPPUNIT_TEST(testTdf151622_oleIcon);
     CPPUNIT_TEST(testTdf152436);
+    CPPUNIT_TEST(testLinkedOLE);
     CPPUNIT_TEST_SUITE_END();
 
     virtual void registerNamespaces(xmlXPathContextPtr& pXmlXPathCtx) override
@@ -2117,6 +2119,22 @@ void SdOOXMLExportTest3::testTdf152436()
     CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getPage(0)->getCount());
 }
 
+void SdOOXMLExportTest3::testLinkedOLE()
+{
+    createSdImpressDoc("odp/linked_ole.odp");
+
+    save("Impress Office Open XML");
+
+    xmlDocUniquePtr pXml = parseExport("ppt/slides/slide1.xml");
+
+    // Without the accompanying fix in place, this test would have failed with:
+    // - Expected: 1
+    // - Actual  : 0
+    // - In<>, XPath '//p:oleObj' number of nodes is incorrect
+    // i.e. the linked ole object wasn't exported.
+    assertXPath(pXml, "//p:oleObj", 1);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest3);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
commit 3be06fa1591963912600ad46920ff16b51fa5855
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Tue Jan 24 16:15:13 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    tdf#45147 - CSV Import: Remove special handling for mixed script types
    
    In the CSV import dialog, remove the special handling for mixed script 
types. Otherwise, right-to-left words appear in the wrong order.
    
    The special handling of mixed script types was introduced in 
https://bz.apache.org/ooo/show_bug.cgi?id=60296 which is handled in the edit 
engine now.
    
    Change-Id: Ic6dc3f2051ea41f79db5398a8442f78116da52de
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146096
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <er...@redhat.com>
    (cherry picked from commit a362c0145731031834bc3a73c8e3577bf6c12720)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146331
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/ui/dbgui/csvgrid.cxx b/sc/source/ui/dbgui/csvgrid.cxx
index b44cca04dee7..16b7ca61e35f 100644
--- a/sc/source/ui/dbgui/csvgrid.cxx
+++ b/sc/source/ui/dbgui/csvgrid.cxx
@@ -1130,22 +1130,8 @@ void ScCsvGrid::ImplDrawCellText( const Point& rPos, 
const OUString& rText )
     OUString aPlainText = rText.replaceAll( "\t", " " );
     aPlainText = aPlainText.replaceAll( "\n", " " );
     mpEditEngine->SetPaperSize( maEdEngSize );
-
-    /*  #i60296# If string contains mixed script types, the space character
-        U+0020 may be drawn with a wrong width (from non-fixed-width Asian or
-        Complex font). Now we draw every non-space portion separately. */
-    sal_Int32 nCharIxInt {aPlainText.isEmpty() ? -1 : 0};
-    while (nCharIxInt>=0)
-    {
-        sal_Int32 nBeginIx = nCharIxInt;
-        const OUString aToken = aPlainText.getToken( 0, ' ', nCharIxInt );
-        if( !aToken.isEmpty() )
-        {
-            sal_Int32 nX = rPos.X() + GetCharWidth() * nBeginIx;
-            mpEditEngine->SetTextCurrentDefaults( aToken );
-            mpEditEngine->Draw(*mpBackgrDev, Point(nX, rPos.Y()));
-        }
-    }
+    mpEditEngine->SetTextCurrentDefaults(aPlainText);
+    mpEditEngine->Draw(*mpBackgrDev, rPos);
 
     sal_Int32 nCharIx = 0;
     while( (nCharIx = rText.indexOf( '\t', nCharIx )) != -1 )
commit aee42e2fa685cdf24369024e3bab6e2b1b2c752a
Author:     Regina Henschel <rb.hensc...@t-online.de>
AuthorDate: Thu Jan 5 18:33:46 2023 +0100
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Thu Feb 2 09:44:06 2023 +0100

    tdf#152884 import alpha too for schemeClr
    
    Without fix the alpha child element was only read for w14:srgbClr but
    no for w14:schemeClr. Thus character colored by theme color had no
    transparency.
    
    Change-Id: I73c01b7142d3eab83400d2e5eb9dce01ff8d4a19
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145099
    Tested-by: Jenkins
    Reviewed-by: Regina Henschel <rb.hensc...@t-online.de>
    (cherry picked from commit 585f65738270ba8ab2fdc4c49063c3b5663fe768)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146332
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx 
b/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx
index 7788abe1a62b..f31d9862a1ac 100644
--- a/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx
+++ b/writerfilter/qa/cppunittests/dmapper/TextEffectsHandler.cxx
@@ -47,6 +47,24 @@ CPPUNIT_TEST_FIXTURE(Test, testSemiTransparentText)
     // i.e. text was imported as regular text with solid color only.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int16>(74), nCharTransparence);
 }
+
+CPPUNIT_TEST_FIXTURE(Test, testThemeColorTransparency)
+{
+    // Load a document with a single paragraph. It has semi-transparent text 
and the color is
+    // determined by a w14:schemeClr element.
+    loadFromURL(u"tdf152884_Char_Transparency.docx");
+    uno::Reference<text::XTextDocument> xTextDocument(mxComponent, 
uno::UNO_QUERY);
+    uno::Reference<container::XEnumerationAccess> 
xParaEnumAccess(xTextDocument->getText(),
+                                                                  
uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> xParaEnum = 
xParaEnumAccess->createEnumeration();

... etc. - the rest is truncated

Reply via email to