Repository.mk | 4 cui/uiconfig/ui/numberingformatpage.ui | 5 desktop/Module_desktop.mk | 9 sc/common_unoapi_tests.mk | 4 sc/qa/extras/scsolverobj.cxx | 2 sc/qa/uitest/calc_tests4/exportToPDF.py | 10 sc/source/core/data/table2.cxx | 1 sd/qa/uitest/impress_tests/exportToPDF.py | 9 sd/qa/unit/data/pptx/smartart-tdf134221.pptx |binary sd/qa/unit/tiledrendering/tiledrendering.cxx | 44 + static/CustomTarget_emscripten_fs_image.mk | 1 svgio/qa/cppunit/data/tdf160386.svg | 2 sw/CppunitTest_sw_cjk.mk | 77 ++ sw/Module_sw.mk | 1 sw/UIConfig_swriter.mk | 1 sw/inc/swabstdlg.hxx | 1 sw/qa/extras/cjk/cjk.cxx | 121 +++ sw/qa/extras/odfimport/odfimport.cxx | 25 sw/qa/extras/ooxmlexport/ooxmlexport21.cxx | 26 sw/qa/extras/unowriter/unowriter.cxx | 10 sw/qa/extras/ww8export/data/i120158.doc |binary sw/qa/extras/ww8export/data/tdf120629.odt |binary sw/qa/extras/ww8export/ww8export.cxx | 31 sw/qa/extras/ww8export/ww8export4.cxx | 8 sw/qa/uitest/writer_tests4/exportToPDF.py | 5 sw/qa/unit/data/sw-dialogs-test.txt | 1 sw/source/core/edit/eddel.cxx | 2 sw/source/ui/dialog/swdlgfact.cxx | 3 sw/source/ui/index/swuiidxmrk.cxx | 15 sw/source/uibase/inc/DropDownFieldDialog.hxx | 2 sw/source/uibase/inc/wrtsh.hxx | 2 sw/source/uibase/wrtsh/wrtsh2.cxx | 22 sw/uiconfig/swriter/ui/charurlpage.ui | 349 ---------- sw/uiconfig/swriter/ui/insertcaption.ui | 5 vcl/jsdialog/enabled.cxx | 1 vcl/qa/cppunit/BackendTest.cxx | 2 vcl/qa/cppunit/pdfexport/data/tdf124116-hebrew-track-untrack.odt |binary vcl/qa/cppunit/pdfexport/pdfexport.cxx | 15 vcl/unx/generic/fontmanager/fontconfig.cxx | 17 vcl/vcl.common.component.headless | 2 40 files changed, 346 insertions(+), 489 deletions(-)
New commits: commit 228cae732368ef35156a7dd707305d8f4a34fa6c Author: Caolán McNamara <[email protected]> AuthorDate: Wed Dec 10 16:01:24 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:45:47 2026 +0100 add an accessible-name to the preview in the numbering format page Change-Id: I458fccfb7cb0a74faca41852151950075dd92cb0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195390 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/cui/uiconfig/ui/numberingformatpage.ui b/cui/uiconfig/ui/numberingformatpage.ui index a7779057f1bb..9338443ba1ff 100644 --- a/cui/uiconfig/ui/numberingformatpage.ui +++ b/cui/uiconfig/ui/numberingformatpage.ui @@ -671,6 +671,11 @@ <object class="GtkDrawingArea" id="preview"> <property name="visible">True</property> <property name="can_focus">False</property> + <child internal-child="accessible"> + <object class="AtkObject" id="preview-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="numberingformatpage|preview-atkobject">Preview</property> + </object> + </child> </object> </child> </object> commit 1c33323154c495d5562d8187efaf633ef58b8f50 Author: Caolán McNamara <[email protected]> AuthorDate: Tue Dec 16 21:43:32 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:45:31 2026 +0100 tdf#170034: cells don't get drawn on particular autofilter combination - hidden area has to include max doc row. - on fallback return with no visible block for target row, basically return end of previous visible block. Change-Id: Ie91cde71448f02e865484335ede96cf29700955a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195755 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Noel Grandin <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> (cherry picked from commit e134da4a5ab5694faf9871a0e768412e28435a61) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195847 Tested-by: Jenkins diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 1d2455c57deb..cf769e4ca242 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -4482,6 +4482,7 @@ SCROW ScTable::GetRowForHeightPixels(SCROW nStartRow, tools::Long& rStartRowHeig nSumPx += nCommonPixels; nRow = nLastCommon; } + rStartRowHeightPx = nSumPx; return -1; } commit f12051e5f3997462c8b7d8cc0fc78753cfaa1147 Author: Caolán McNamara <[email protected]> AuthorDate: Mon Dec 15 16:59:53 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:45:19 2026 +0100 make simple activate case of DropDownFieldDialog async Change-Id: If3a36540976014774b4cbf84f52e2d3de28b96b6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195679 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx index 48d806486d3c..bac073b696b1 100644 --- a/sw/inc/swabstdlg.hxx +++ b/sw/inc/swabstdlg.hxx @@ -299,6 +299,7 @@ protected: public: virtual bool PrevButtonPressed() const = 0; virtual bool NextButtonPressed() const = 0; + virtual void Apply() = 0; }; class AbstractSwLabDlg : public SfxAbstractTabDialog diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx index a29d8e86a175..6bb52bb5ce39 100644 --- a/sw/source/ui/dialog/swdlgfact.cxx +++ b/sw/source/ui/dialog/swdlgfact.cxx @@ -457,10 +457,11 @@ VclPtr<SfxAbstractTabDialog> SwAbstractDialogFactory_Impl::CreateSwFootNoteOptio namespace { class AbstractDropDownFieldDialog_Impl - : public vcl::AbstractDialogImpl_Sync<AbstractDropDownFieldDialog, sw::DropDownFieldDialog> + : public vcl::AbstractDialogImpl_Async<AbstractDropDownFieldDialog, sw::DropDownFieldDialog> { public: using AbstractDialogImpl_BASE::AbstractDialogImpl_BASE; + void Apply() override { m_pDlg->Apply(); } bool PrevButtonPressed() const override { return m_pDlg->PrevButtonPressed(); } bool NextButtonPressed() const override { return m_pDlg->NextButtonPressed(); } }; diff --git a/sw/source/uibase/inc/DropDownFieldDialog.hxx b/sw/source/uibase/inc/DropDownFieldDialog.hxx index b8b60f20c293..07b9e494d0a6 100644 --- a/sw/source/uibase/inc/DropDownFieldDialog.hxx +++ b/sw/source/uibase/inc/DropDownFieldDialog.hxx @@ -43,7 +43,6 @@ class DropDownFieldDialog final : public weld::GenericDialogController DECL_LINK(EditHdl, weld::Button&, void); DECL_LINK(PrevHdl, weld::Button&, void); DECL_LINK(NextHdl, weld::Button&, void); - void Apply(); DECL_LINK(DoubleClickHdl, weld::TreeView&, bool); public: DropDownFieldDialog(weld::Widget *pParent, SwWrtShell &rSh, @@ -51,6 +50,7 @@ public: virtual ~DropDownFieldDialog() override; bool PrevButtonPressed() const; bool NextButtonPressed() const; + void Apply(); virtual short run() override { short nRet = GenericDialogController::run(); diff --git a/sw/source/uibase/inc/wrtsh.hxx b/sw/source/uibase/inc/wrtsh.hxx index 5e387dd30171..f623299e3ac6 100644 --- a/sw/source/uibase/inc/wrtsh.hxx +++ b/sw/source/uibase/inc/wrtsh.hxx @@ -427,6 +427,8 @@ typedef bool (SwWrtShell::*FNSimpleMove)(); bool StartInputFieldDlg(SwField*, bool bPrevButton, bool bNextButton, weld::Widget* pParentWin, FieldDialogPressedButton* pPressedButton = nullptr); // update DropDown fields bool StartDropDownFieldDlg(SwField*, bool bPrevButton, bool bNextButton, weld::Widget* pParentWin, FieldDialogPressedButton* pPressedButton = nullptr); + // update single DropDown field + void EditDropDownFieldDlg(SwField*, weld::Widget* pParentWin); //"Handler" for changes at DrawView - for controls. virtual void DrawSelChanged( ) override; diff --git a/sw/source/uibase/wrtsh/wrtsh2.cxx b/sw/source/uibase/wrtsh/wrtsh2.cxx index ddf3d5966ec0..3e61f3430702 100644 --- a/sw/source/uibase/wrtsh/wrtsh2.cxx +++ b/sw/source/uibase/wrtsh/wrtsh2.cxx @@ -304,6 +304,26 @@ bool SwWrtShell::StartInputFieldDlg(SwField* pField, bool bPrevButton, bool bNex return bRet; } +void SwWrtShell::EditDropDownFieldDlg(SwField* pField, weld::Widget* pParentWin) +{ + SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); + VclPtr<AbstractDropDownFieldDialog> pDlg(pFact->CreateDropDownFieldDialog(pParentWin, *this, pField, false, false)); + + pDlg->StartExecuteAsync([pDlg, this](sal_Int32 nRet) { + if (nRet == RET_OK) + pDlg->Apply(); + + pDlg->disposeOnce(); + + GetWin()->PaintImmediately(); + + if (nRet == RET_YES) + { + GetView().GetViewFrame().GetDispatcher()->Execute(FN_EDIT_FIELD, SfxCallMode::SYNCHRON); + } + }); +} + bool SwWrtShell::StartDropDownFieldDlg(SwField* pField, bool bPrevButton, bool bNextButton, weld::Widget* pParentWin, SwWrtShell::FieldDialogPressedButton* pPressedButton) { @@ -513,7 +533,7 @@ void SwWrtShell::ClickToField(const SwField& rField, bool bExecHyperlinks) StartInputFieldDlg(const_cast<SwField*>(&rField), false, false, GetView().GetFrameWeld()); break; case SwFieldIds::Dropdown : - StartDropDownFieldDlg(const_cast<SwField*>(&rField), false, false, GetView().GetFrameWeld()); + EditDropDownFieldDlg(const_cast<SwField*>(&rField), GetView().GetFrameWeld()); break; default: SAL_WARN_IF(rField.IsClickable(), "sw", "unhandled clickable field!"); commit 46182e5c3c34c94d8a2c137268f1b51d74d6e2f6 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 11:52:10 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:45:00 2026 +0100 move writer tests using CJK fonts to new target where adding a new cjk font to the bundled fonts triggers an abort from: gb_CppunitTest_set_non_application_font_use,...,abort because the docs require glyph fallback to render, but without a CJK font in the application fonts glyph fallback doesn't actually happen. But once one is added, then the fallback is detected and the check fires. Change-Id: If02a2c1eefd6f5b6e4a19ca46f359cce466662f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195597 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/CppunitTest_sw_cjk.mk b/sw/CppunitTest_sw_cjk.mk new file mode 100644 index 000000000000..2324d58ffc10 --- /dev/null +++ b/sw/CppunitTest_sw_cjk.mk @@ -0,0 +1,77 @@ +# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*- +#************************************************************************* +# +# This file is part of the LibreOffice project. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +#************************************************************************* + +$(eval $(call gb_CppunitTest_CppunitTest,sw_cjk)) + +$(eval $(call gb_CppunitTest_use_common_precompiled_header,sw_cjk)) + +$(eval $(call gb_CppunitTest_add_exception_objects,sw_cjk, \ + sw/qa/extras/cjk/cjk \ +)) + +$(eval $(call gb_CppunitTest_use_libraries,sw_cjk, \ + comphelper \ + editeng \ + cppu \ + cppuhelper \ + sal \ + svt \ + sfx \ + subsequenttest \ + svl \ + sw \ + swqahelper \ + test \ + unotest \ + vcl \ + tl \ + utl \ +)) + +$(eval $(call gb_CppunitTest_use_externals,sw_cjk,\ + boost_headers \ + libxml2 \ +)) + +$(eval $(call gb_CppunitTest_set_include,sw_cjk,\ + -I$(SRCDIR)/sw/inc \ + -I$(SRCDIR)/sw/source/core/inc \ + -I$(SRCDIR)/sw/source/uibase/inc \ + -I$(SRCDIR)/sw/qa/inc \ + $$(INCLUDE) \ +)) + +$(eval $(call gb_CppunitTest_use_system_win32_libs,sw_cjk,\ + ole32 \ +)) + +$(eval $(call gb_CppunitTest_use_api,sw_cjk,\ + udkapi \ + offapi \ + oovbaapi \ +)) + +$(eval $(call gb_CppunitTest_use_ure,sw_cjk)) +$(eval $(call gb_CppunitTest_use_vcl,sw_cjk)) + +$(eval $(call gb_CppunitTest_use_rdb,sw_cjk,services)) + +$(eval $(call gb_CppunitTest_use_configuration,sw_cjk)) + +$(eval $(call gb_CppunitTest_add_arguments,sw_cjk, \ + -env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \ +)) + +$(eval $(call gb_CppunitTest_use_custom_headers,sw_cjk,\ + officecfg/registry \ +)) + +# vim: set noet sw=4 ts=4: diff --git a/sw/Module_sw.mk b/sw/Module_sw.mk index 2d0aa1bdd497..583d9fccee87 100644 --- a/sw/Module_sw.mk +++ b/sw/Module_sw.mk @@ -62,6 +62,7 @@ $(eval $(call gb_Module_add_check_targets,sw,\ $(eval $(call gb_Module_add_slowcheck_targets,sw,\ $(if $(and $(filter $(COM),MSC),$(MERGELIBS)),, \ CppunitTest_sw_uwriter) \ + CppunitTest_sw_cjk \ CppunitTest_sw_rtfexport \ CppunitTest_sw_rtfexport2 \ CppunitTest_sw_rtfexport3 \ diff --git a/sw/qa/extras/cjk/cjk.cxx b/sw/qa/extras/cjk/cjk.cxx new file mode 100644 index 000000000000..21f99af3d570 --- /dev/null +++ b/sw/qa/extras/cjk/cjk.cxx @@ -0,0 +1,121 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <swmodeltestbase.hxx> + +#include <config_features.h> + +namespace +{ +class Test : public SwModelTestBase +{ +public: + Test() + : SwModelTestBase(u"/sw/qa/extras/cjk/data/"_ustr) + { + } +}; + +CPPUNIT_TEST_FIXTURE(Test, testTdf101729) +{ + createSwDoc("tdf101729.odt"); + xmlDocUniquePtr pXmlDoc = parseLayoutDump(); + sal_Int32 l + = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/infos/bounds", "left").toInt32(); + sal_Int32 w + = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/infos/bounds", "width").toInt32(); + sal_Int32 x + = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/txt/infos/bounds", "left").toInt32(); + // Make sure the text does not go outside and verify it is centered roughly + CPPUNIT_ASSERT(l + w / 4 < x); + CPPUNIT_ASSERT(x < l + 3 * w / 4); +} + +CPPUNIT_TEST_FIXTURE(Test, testTdf115079) +{ + createSwDoc("tdf115079.odt"); + // This document caused segfault when layouting +} + +CPPUNIT_TEST_FIXTURE(Test, testMsWordUlTrailSpace) +{ + createSwDoc("UnderlineTrailingSpace.docx"); + { + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xSettings( + xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL(uno::Any(true), + xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr)); + } + + // Test also after save-and-reload: + saveAndReload(TestFilter::DOCX); + { + uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW); + uno::Reference<beans::XPropertySet> xSettings( + xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW); + CPPUNIT_ASSERT_EQUAL(uno::Any(true), + xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr)); + } + + // Check that the compat setting is exported in OOXML + xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml"); + assertXPath(pXmlSettings, "/w:settings/w:compat/w:ulTrailSpace"); +} + +DECLARE_WW8EXPORT_TEST(testWw8Cjklist30, "cjklist30.doc") +{ + sal_Int16 numFormat = getNumberingTypeOfParagraph(1); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::TIAN_GAN_ZH, numFormat); +} + +DECLARE_WW8EXPORT_TEST(testWw8Cjklist31, "cjklist31.doc") +{ + sal_Int16 numFormat = getNumberingTypeOfParagraph(1); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::DI_ZI_ZH, numFormat); +} + +DECLARE_WW8EXPORT_TEST(testWw8Cjklist34, "cjklist34.doc") +{ + sal_Int16 numFormat = getNumberingTypeOfParagraph(1); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_UPPER_ZH_TW, numFormat); +} + +DECLARE_WW8EXPORT_TEST(testWw8Cjklist35, "cjklist35.doc") +{ + sal_Int16 numFormat = getNumberingTypeOfParagraph(1); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_LOWER_ZH, numFormat); +} + +DECLARE_WW8EXPORT_TEST(testTdf118564, "tdf118564.doc") +{ + sal_Int16 numFormat = getNumberingTypeOfParagraph(3); + CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_LOWER_ZH, numFormat); +} + +CPPUNIT_TEST_FIXTURE(Test, testTdf77964) +{ + createSwDoc("tdf77964.doc"); + saveAndReload(TestFilter::DOC); + // both images were loading as AT_PARA instead of AS_CHAR. Image2 visually had text wrapping. + CPPUNIT_ASSERT_EQUAL( + text::TextContentAnchorType_AS_CHARACTER, + getProperty<text::TextContentAnchorType>(getShapeByName(u"Image2"), u"AnchorType"_ustr)); +} + +CPPUNIT_TEST_FIXTURE(Test, tdf167455) +{ + // crashes at import time on macOS + createSwDoc("tdf167455.odt"); + CPPUNIT_ASSERT_EQUAL(1, getPages()); +} + +} // end of anonymous namespace +CPPUNIT_PLUGIN_IMPLEMENT(); +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docx b/sw/qa/extras/cjk/data/UnderlineTrailingSpace.docx similarity index 100% rename from sw/qa/extras/ooxmlexport/data/UnderlineTrailingSpace.docx rename to sw/qa/extras/cjk/data/UnderlineTrailingSpace.docx diff --git a/sw/qa/extras/ww8export/data/cjklist30.doc b/sw/qa/extras/cjk/data/cjklist30.doc similarity index 100% rename from sw/qa/extras/ww8export/data/cjklist30.doc rename to sw/qa/extras/cjk/data/cjklist30.doc diff --git a/sw/qa/extras/ww8export/data/cjklist31.doc b/sw/qa/extras/cjk/data/cjklist31.doc similarity index 100% rename from sw/qa/extras/ww8export/data/cjklist31.doc rename to sw/qa/extras/cjk/data/cjklist31.doc diff --git a/sw/qa/extras/ww8export/data/cjklist34.doc b/sw/qa/extras/cjk/data/cjklist34.doc similarity index 100% rename from sw/qa/extras/ww8export/data/cjklist34.doc rename to sw/qa/extras/cjk/data/cjklist34.doc diff --git a/sw/qa/extras/ww8export/data/cjklist35.doc b/sw/qa/extras/cjk/data/cjklist35.doc similarity index 100% rename from sw/qa/extras/ww8export/data/cjklist35.doc rename to sw/qa/extras/cjk/data/cjklist35.doc diff --git a/sw/qa/extras/odfimport/data/tdf101729.odt b/sw/qa/extras/cjk/data/tdf101729.odt similarity index 100% rename from sw/qa/extras/odfimport/data/tdf101729.odt rename to sw/qa/extras/cjk/data/tdf101729.odt diff --git a/sw/qa/extras/odfimport/data/tdf115079.odt b/sw/qa/extras/cjk/data/tdf115079.odt similarity index 100% rename from sw/qa/extras/odfimport/data/tdf115079.odt rename to sw/qa/extras/cjk/data/tdf115079.odt diff --git a/sw/qa/extras/ww8export/data/tdf118564.doc b/sw/qa/extras/cjk/data/tdf118564.doc similarity index 100% rename from sw/qa/extras/ww8export/data/tdf118564.doc rename to sw/qa/extras/cjk/data/tdf118564.doc diff --git a/sw/qa/extras/odfimport/data/tdf167455.odt b/sw/qa/extras/cjk/data/tdf167455.odt similarity index 100% rename from sw/qa/extras/odfimport/data/tdf167455.odt rename to sw/qa/extras/cjk/data/tdf167455.odt diff --git a/sw/qa/extras/ww8export/data/tdf77964.doc b/sw/qa/extras/cjk/data/tdf77964.doc similarity index 100% rename from sw/qa/extras/ww8export/data/tdf77964.doc rename to sw/qa/extras/cjk/data/tdf77964.doc diff --git a/sw/qa/extras/odfimport/odfimport.cxx b/sw/qa/extras/odfimport/odfimport.cxx index c3fe3e0242bc..05992ca09f55 100644 --- a/sw/qa/extras/odfimport/odfimport.cxx +++ b/sw/qa/extras/odfimport/odfimport.cxx @@ -621,13 +621,6 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf128737) CPPUNIT_ASSERT_EQUAL(8, getShapes()); } -CPPUNIT_TEST_FIXTURE(Test, tdf167455) -{ - // crashes at import time on macOS - createSwDoc("tdf167455.odt"); - CPPUNIT_ASSERT_EQUAL(1, getPages()); -} - CPPUNIT_TEST_FIXTURE(Test, testCalcFootnoteContent) { createSwDoc("ooo32780-1.odt"); @@ -966,18 +959,6 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf75221) CPPUNIT_ASSERT(top.toInt32() > 0); } -CPPUNIT_TEST_FIXTURE(Test, testTdf101729) -{ - createSwDoc("tdf101729.odt"); - xmlDocUniquePtr pXmlDoc = parseLayoutDump(); - sal_Int32 l = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/infos/bounds", "left").toInt32(); - sal_Int32 w = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/infos/bounds", "width").toInt32(); - sal_Int32 x = getXPath(pXmlDoc, "/root/page/body/tab/row/cell[1]/txt/infos/bounds", "left").toInt32(); - // Make sure the text does not go outside and verify it is centered roughly - CPPUNIT_ASSERT( l + w / 4 < x ); - CPPUNIT_ASSERT( x < l + 3 * w / 4); -} - CPPUNIT_TEST_FIXTURE(Test, testTdf107392) { createSwDoc("tdf107392.odt"); @@ -1091,12 +1072,6 @@ CPPUNIT_TEST_FIXTURE(Test, testBlankBeforeFirstPage) ); } -CPPUNIT_TEST_FIXTURE(Test, testTdf115079) -{ - createSwDoc("tdf115079.odt"); - // This document caused segfault when layouting -} - CPPUNIT_TEST_FIXTURE(Test, testTdf108482) { createSwDoc("tdf108482.odt"); diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx index 1c0f9240d9da..681e32251952 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport21.cxx @@ -1342,32 +1342,6 @@ DECLARE_OOXMLEXPORT_TEST(testTdf164176, "tdf164176.docx") CPPUNIT_ASSERT_EQUAL(sal_Int32(-1), sPresentation.indexOf("_x000a_")); } -CPPUNIT_TEST_FIXTURE(Test, testMsWordUlTrailSpace) -{ - createSwDoc("UnderlineTrailingSpace.docx"); - { - uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW); - uno::Reference<beans::XPropertySet> xSettings( - xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW); - CPPUNIT_ASSERT_EQUAL(uno::Any(true), - xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr)); - } - - // Test also after save-and-reload: - saveAndReload(TestFilter::DOCX); - { - uno::Reference<lang::XMultiServiceFactory> xFactory(mxComponent, uno::UNO_QUERY_THROW); - uno::Reference<beans::XPropertySet> xSettings( - xFactory->createInstance(u"com.sun.star.document.Settings"_ustr), uno::UNO_QUERY_THROW); - CPPUNIT_ASSERT_EQUAL(uno::Any(true), - xSettings->getPropertyValue(u"MsWordUlTrailSpace"_ustr)); - } - - // Check that the compat setting is exported in OOXML - xmlDocUniquePtr pXmlSettings = parseExport("word/settings.xml"); - assertXPath(pXmlSettings, "/w:settings/w:compat/w:ulTrailSpace"); -} - CPPUNIT_TEST_FIXTURE(Test, testTdf165059_moveFromTo) { createSwDoc("tdf165059_broken.docx"); diff --git a/sw/qa/extras/ww8export/ww8export.cxx b/sw/qa/extras/ww8export/ww8export.cxx index 0eea4f3ec8da..691f64f8eeac 100644 --- a/sw/qa/extras/ww8export/ww8export.cxx +++ b/sw/qa/extras/ww8export/ww8export.cxx @@ -1273,37 +1273,6 @@ DECLARE_WW8EXPORT_TEST(testBnc636128, "bnc636128.doc") CPPUNIT_ASSERT_EQUAL(sal_uInt16(5), xParameters->getByName(u"MaxLength"_ustr).get<sal_uInt16>()); } - -DECLARE_WW8EXPORT_TEST(testWw8Cjklist30, "cjklist30.doc") -{ - sal_Int16 numFormat = getNumberingTypeOfParagraph(1); - CPPUNIT_ASSERT_EQUAL(style::NumberingType::TIAN_GAN_ZH, numFormat); -} - -DECLARE_WW8EXPORT_TEST(testWw8Cjklist31, "cjklist31.doc") -{ - sal_Int16 numFormat = getNumberingTypeOfParagraph(1); - CPPUNIT_ASSERT_EQUAL(style::NumberingType::DI_ZI_ZH, numFormat); -} - -DECLARE_WW8EXPORT_TEST(testWw8Cjklist34, "cjklist34.doc") -{ - sal_Int16 numFormat = getNumberingTypeOfParagraph(1); - CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_UPPER_ZH_TW, numFormat); -} - -DECLARE_WW8EXPORT_TEST(testWw8Cjklist35, "cjklist35.doc") -{ - sal_Int16 numFormat = getNumberingTypeOfParagraph(1); - CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_LOWER_ZH, numFormat); -} - -DECLARE_WW8EXPORT_TEST(testTdf118564, "tdf118564.doc") -{ - sal_Int16 numFormat = getNumberingTypeOfParagraph(3); - CPPUNIT_ASSERT_EQUAL(style::NumberingType::NUMBER_LOWER_ZH, numFormat); -} - DECLARE_WW8EXPORT_TEST(testTdf92281, "tdf92281.doc") { uno::Reference<beans::XPropertySet> xRun(getRun(getParagraph(1),1), uno::UNO_QUERY); diff --git a/sw/qa/extras/ww8export/ww8export4.cxx b/sw/qa/extras/ww8export/ww8export4.cxx index 5db68c88b8a2..44e1d5301113 100644 --- a/sw/qa/extras/ww8export/ww8export4.cxx +++ b/sw/qa/extras/ww8export/ww8export4.cxx @@ -51,14 +51,6 @@ public: } }; -CPPUNIT_TEST_FIXTURE(Test, testTdf77964) -{ - createSwDoc("tdf77964.doc"); - saveAndReload(TestFilter::DOC); - // both images were loading as AT_PARA instead of AS_CHAR. Image2 visually had text wrapping. - CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AS_CHARACTER, getProperty<text::TextContentAnchorType>(getShapeByName(u"Image2"), u"AnchorType"_ustr)); -} - DECLARE_WW8EXPORT_TEST(testTdf72511_editengLRSpace, "tdf72511_editengLRSpace.doc") { // given a default paragraph style with a left indent of 2 inches, commit aa440c55640219f2cd9a94fb0d26b25405fa029e Author: Caolán McNamara <[email protected]> AuthorDate: Mon Dec 15 12:44:56 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:44:45 2026 +0100 This instance of the readonly info dialog can be async Change-Id: I5a9a7b4aaec504c6adc57e5fe6b8324af2350500 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195667 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/source/core/edit/eddel.cxx b/sw/source/core/edit/eddel.cxx index bcf151df3b37..85ef7cf91fc0 100644 --- a/sw/source/core/edit/eddel.cxx +++ b/sw/source/core/edit/eddel.cxx @@ -180,7 +180,7 @@ bool SwEditShell::Delete(bool const isArtificialSelection, bool goLeft) bRet = RemoveParagraphMetadataFieldAtCursor(); if (!bRet) { - InfoReadOnlyDialog(false); + InfoReadOnlyDialog(true); } } commit 8e268ddb232adcc35748e976b5f6c74f2842a538 Author: Caolán McNamara <[email protected]> AuthorDate: Mon Dec 15 11:39:33 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:44:33 2026 +0100 make SwNewUserIdxDlg async Change-Id: I1198eaed112f0b0083cf7e5347e1a1128a015c91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195663 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/source/ui/index/swuiidxmrk.cxx b/sw/source/ui/index/swuiidxmrk.cxx index ca864b5fbdd4..a2cc5fd280d0 100644 --- a/sw/source/ui/index/swuiidxmrk.cxx +++ b/sw/source/ui/index/swuiidxmrk.cxx @@ -679,13 +679,14 @@ IMPL_LINK( SwNewUserIdxDlg, ModifyHdl, weld::Entry&, rEdit, void) IMPL_LINK_NOARG(SwIndexMarkPane, NewUserIdxHdl, weld::Button&, void) { - SwNewUserIdxDlg aDlg(this, m_xDialog.get()); - if (aDlg.run() == RET_OK) - { - OUString sNewName(aDlg.GetName()); - m_xTypeDCB->append_text(sNewName); - m_xTypeDCB->set_active_text(sNewName); - } + auto xDlg = std::make_shared<SwNewUserIdxDlg>(this, m_xDialog.get()); + weld::GenericDialogController::runAsync(xDlg, [xDlg, this](sal_Int32 nResult){ + if (nResult == RET_OK) { + OUString sNewName(xDlg->GetName()); + m_xTypeDCB->append_text(sNewName); + m_xTypeDCB->set_active_text(sNewName); + } + }); } IMPL_LINK( SwIndexMarkPane, SearchTypeHdl, weld::Toggleable&, rBox, void) commit 04a06963f7f9435743ea1f70cba478af2beb7006 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 14:59:21 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:44:21 2026 +0100 change David CLM to David Libre Change-Id: I5db9be375ef4b27924ee74f44376bea91f48821a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195576 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/vcl/qa/cppunit/pdfexport/data/tdf124116-hebrew-track-untrack.odt b/vcl/qa/cppunit/pdfexport/data/tdf124116-hebrew-track-untrack.odt index e3f3becee3a8..a9761ecded70 100644 Binary files a/vcl/qa/cppunit/pdfexport/data/tdf124116-hebrew-track-untrack.odt and b/vcl/qa/cppunit/pdfexport/data/tdf124116-hebrew-track-untrack.odt differ commit 5322d91c2a83d583d67b84697a711e8f190d1c4f Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 11:41:48 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:44:10 2026 +0100 change David CLM to David Libre Change-Id: Ia880b265c8e1e9816f8476bac77f859f3eab964b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195559 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/qa/extras/ww8export/data/tdf120629.odt b/sw/qa/extras/ww8export/data/tdf120629.odt index 36d7feaa2722..404c20c64b53 100644 Binary files a/sw/qa/extras/ww8export/data/tdf120629.odt and b/sw/qa/extras/ww8export/data/tdf120629.odt differ commit 77d03e7bf04783841d3ba61f82342cb989901e97 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Dec 11 09:47:14 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:43:57 2026 +0100 don't abort in test mode for missing 0x3001 similar to how we allow missing 0xb7 Change-Id: I5206efa4b6d70ec432b8626eff3dd86d933e769e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195596 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Jenkins diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx index bf2a0da22370..b33675cd7b2a 100644 --- a/vcl/unx/generic/fontmanager/fontconfig.cxx +++ b/vcl/unx/generic/fontmanager/fontconfig.cxx @@ -1067,12 +1067,17 @@ void PrintFontManager::Substitute(vcl::font::FontSelectPattern &rPattern, OUStri OString aLangAttrib = mapToFontConfigLangTag(aLangTag); bool bMissingJustBullet = false; + bool bMissingIdeographicComma = false; // Add required Unicode characters, if any if ( !rMissingCodes.isEmpty() ) { FcCharSet *codePoints = FcCharSetCreate(); - bMissingJustBullet = rMissingCodes.getLength() == 1 && rMissingCodes[0] == 0xb7; + if (rMissingCodes.getLength() == 1) + { + bMissingJustBullet = rMissingCodes[0] == 0xb7; + bMissingIdeographicComma = rMissingCodes[0] == 0x3001; + } for( sal_Int32 nStrIndex = 0; nStrIndex < rMissingCodes.getLength(); ) { // also handle unicode surrogates @@ -1262,11 +1267,13 @@ void PrintFontManager::Substitute(vcl::font::FontSelectPattern &rPattern, OUStri }(); if (bAbortOnFontSubstitute && rPattern.maTargetName != rPattern.maSearchName) { - if (bMissingJustBullet) + if (bMissingJustBullet || bMissingIdeographicComma) { - // Some fonts exist in "more_fonts", but have no U+00B7 MIDDLE DOT - // so will always glyph fallback on measuring mnBulletOffset in - // FontMetricData::ImplInitTextLineSize + // Some fonts exist in "more_fonts", but: + // a) have no U+00B7 MIDDLE DOT so will always glyph fallback on + // measuring mnBulletOffset in FontMetricData::ImplInitTextLineSize + // b) have no U+3001 IDEOGRAPHIC COMMA so will always glyph fallback on + // measuring its width in FontMetricData::ImplInitFlags for CJK text return; } if (rPattern.maTargetName == "Linux Libertine G" && rPattern.maSearchName == "Linux Libertine O") commit 0bfcc57961aa3208a124adda490a2ea05efead76 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 10:58:27 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:43:40 2026 +0100 replace CJK text to get consistent fonts used Change-Id: I49c91576d031312542368f16a55f4c08630d2f89 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195595 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/qa/extras/ww8export/data/i120158.doc b/sw/qa/extras/ww8export/data/i120158.doc index eef3154d81f2..fe9e76989afd 100644 Binary files a/sw/qa/extras/ww8export/data/i120158.doc and b/sw/qa/extras/ww8export/data/i120158.doc differ commit 0f4303768507ca891bd336bc137c8673350a2cbb Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 15:12:35 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:43:27 2026 +0100 this test needs lpsolve Change-Id: Ic2abc9dc6724d05b41428091c52027ca66c4e843 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195570 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Jenkins diff --git a/sc/common_unoapi_tests.mk b/sc/common_unoapi_tests.mk index 025639a4de20..7a8fc75a1673 100644 --- a/sc/common_unoapi_tests.mk +++ b/sc/common_unoapi_tests.mk @@ -18,6 +18,10 @@ $(eval $(call gb_CppunitTest_use_external,sc_$(1),boost_headers)) $(eval $(call gb_Library_use_common_precompiled_header,sc_$(1))) +$(eval $(call gb_CppunitTest_add_defs,sc_$(1),\ + $(if $(ENABLE_LPSOLVE), -DENABLE_LPSOLVE) \ +)) + $(eval $(call gb_CppunitTest_add_exception_objects,sc_$(1), \ sc/qa/extras/sc$(1) \ )) diff --git a/sc/qa/extras/scsolverobj.cxx b/sc/qa/extras/scsolverobj.cxx index 2572fcc070c8..b7735a7e8711 100644 --- a/sc/qa/extras/scsolverobj.cxx +++ b/sc/qa/extras/scsolverobj.cxx @@ -74,6 +74,7 @@ void ScSolverSettingsObj::testCellRangeAddress(const uno::Any& rExpected, const // Creates a model using the XSolverSettings API checks if it is accessible via the API void ScSolverSettingsObj::testXSolverSettings() { +#ifdef ENABLE_LPSOLVE uno::Reference<sheet::XSpreadsheetDocument> xDoc(mxComponent, uno::UNO_QUERY_THROW); uno::Reference<container::XIndexAccess> xIndex(xDoc->getSheets(), uno::UNO_QUERY_THROW); uno::Reference<sheet::XSpreadsheet> xSheet(xIndex->getByIndex(0), uno::UNO_QUERY_THROW); @@ -203,6 +204,7 @@ void ScSolverSettingsObj::testXSolverSettings() CPPUNIT_ASSERT_EQUAL(uno::Any(true), aEngProps2[4].Value); CPPUNIT_ASSERT_EQUAL(u"Timeout"_ustr, aEngProps2[5].Name); CPPUNIT_ASSERT_EQUAL(uno::Any(static_cast<sal_Int32>(10)), aEngProps2[5].Value); +#endif } void ScSolverSettingsObj::setUp() commit 593f93d95ec2a5cd2c4b21a4e520a33d18cefb50 Author: Caolán McNamara <[email protected]> AuthorDate: Sat Dec 13 20:06:29 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:43:09 2026 +0100 build soffice launcher regardless of USING_X11 Change-Id: Id705465b3ce55322b157cc5590023671a191d527 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195610 Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Jenkins diff --git a/Repository.mk b/Repository.mk index e9d249b43f4c..8c6d4b2b4089 100644 --- a/Repository.mk +++ b/Repository.mk @@ -1133,9 +1133,7 @@ $(eval $(call gb_Helper_register_packages_for_install,brand,\ $(if $(CUSTOM_BRAND_DIR),desktop_branding_custom) \ $(if $(filter DESKTOP,$(BUILD_TYPE)),desktop_scripts_install) \ $(if $(and $(filter-out EMSCRIPTEN HAIKU MACOSX WNT,$(OS)),$(filter DESKTOP,$(BUILD_TYPE))),\ - $(if $(DISABLE_GUI),, \ - desktop_soffice_sh \ - ) \ + desktop_soffice_sh \ ) \ readlicense_oo_files \ readlicense_oo_license \ diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk index 862662e2acf2..309559c8ef2e 100644 --- a/desktop/Module_desktop.mk +++ b/desktop/Module_desktop.mk @@ -49,7 +49,13 @@ $(eval $(call gb_Module_add_targets,desktop,\ $(if $(filter-out WNT,$(OS)),CustomTarget_soffice) \ )) -ifeq ($(USING_X11),TRUE) +ifneq (,$(filter-out EMSCRIPTEN HAIKU MACOSX WNT,$(OS))) +$(eval $(call gb_Module_add_targets,desktop,\ + Package_soffice_sh \ +)) +endif + +ifeq ($(USING_X11), TRUE) $(eval $(call gb_Module_add_targets,desktop,\ Package_sbase_sh \ Package_scalc_sh \ @@ -57,7 +63,6 @@ $(eval $(call gb_Module_add_targets,desktop,\ Package_simpress_sh \ Package_smath_sh \ Package_swriter_sh \ - Package_soffice_sh \ )) endif endif # DESKTOP commit f23592b2126cebcfa6b88a4ddd798cce80e5ff8d Author: Caolán McNamara <[email protected]> AuthorDate: Sat Dec 13 15:52:30 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:42:53 2026 +0100 This uitest depends on enabled poppler support Change-Id: Id094a869429828f9684a04506e99b69ef6316eb6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195605 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/qa/uitest/writer_tests4/exportToPDF.py b/sw/qa/uitest/writer_tests4/exportToPDF.py index 5dbc136faa28..5d8ed0d91856 100644 --- a/sw/qa/uitest/writer_tests4/exportToPDF.py +++ b/sw/qa/uitest/writer_tests4/exportToPDF.py @@ -13,7 +13,7 @@ from uitest.uihelper.common import type_text from libreoffice.uno.propertyvalue import mkPropertyValues from org.libreoffice.unotest import systemPathToFileUrl from tempfile import TemporaryDirectory -import os.path +import os class exportToPDF(UITestCase): @@ -74,6 +74,7 @@ class exportToPDF(UITestCase): with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as document: - self.assertEqual("Hello World", document.DrawPages[0][0].String) + if os.getenv('ENABLE_POPPLER') == 'TRUE': + self.assertEqual("Hello World", document.DrawPages[0][0].String) # vim: set shiftwidth=4 softtabstop=4 expandtab: commit 377433c5ba00dfa8ceda6d1b1e8b7f66746cfe7a Author: Caolán McNamara <[email protected]> AuthorDate: Sat Dec 13 10:42:40 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:42:39 2026 +0100 This uitest depends on enabled poppler support Change-Id: Ia6df2c450d0f9d66e801f09d72b64bf5bf0a6499 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195594 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sd/qa/uitest/impress_tests/exportToPDF.py b/sd/qa/uitest/impress_tests/exportToPDF.py index 0caf74a6f2b1..72d287079037 100644 --- a/sd/qa/uitest/impress_tests/exportToPDF.py +++ b/sd/qa/uitest/impress_tests/exportToPDF.py @@ -79,9 +79,10 @@ class exportToPDF(UITestCase): with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as document: - self.assertEqual("", document.DrawPages[0][0].String) - self.assertEqual(" ", document.DrawPages[0][1].String) - self.assertEqual(" ", document.DrawPages[0][2].String) - self.assertEqual("Hello World", document.DrawPages[0][3].String) + if os.getenv('ENABLE_POPPLER') == 'TRUE': + self.assertEqual("", document.DrawPages[0][0].String) + self.assertEqual(" ", document.DrawPages[0][1].String) + self.assertEqual(" ", document.DrawPages[0][2].String) + self.assertEqual("Hello World", document.DrawPages[0][3].String) # vim: set shiftwidth=4 softtabstop=4 expandtab: commit b788c5a2e629fc1d2b0913413fbb25bca9a43c42 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 19:43:45 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:42:18 2026 +0100 This uitest depends on enabled poppler support Change-Id: Ia73ad1d98d4286425d1a159115bfceab130c5b98 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195586 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/sc/qa/uitest/calc_tests4/exportToPDF.py b/sc/qa/uitest/calc_tests4/exportToPDF.py index f3a14b48be08..701402612e3b 100644 --- a/sc/qa/uitest/calc_tests4/exportToPDF.py +++ b/sc/qa/uitest/calc_tests4/exportToPDF.py @@ -7,7 +7,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -import os.path +import os from tempfile import TemporaryDirectory from uitest.framework import UITestCase @@ -76,8 +76,10 @@ class exportToPDF(UITestCase): with self.ui_test.load_file(systemPathToFileUrl(xFilePath)) as document: - self.assertEqual("Sheet1", document.DrawPages[0][0].String) - self.assertEqual("Page 1", document.DrawPages[0][1].String) - self.assertEqual("Hello World", document.DrawPages[0][2].String) + # This test depends on the poppler pdf import + if os.getenv('ENABLE_POPPLER') == 'TRUE': + self.assertEqual("Sheet1", document.DrawPages[0][0].String) + self.assertEqual("Page 1", document.DrawPages[0][1].String) + self.assertEqual("Hello World", document.DrawPages[0][2].String) # vim: set shiftwidth=4 softtabstop=4 expandtab: commit bb5c31c9f1cf005cb68ab86a84e1673709360cff Author: Caolán McNamara <[email protected]> AuthorDate: Thu Dec 11 12:26:02 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:42:12 2026 +0100 add parsePDFExportNoAssert for the case of no cups support Change-Id: Iba0288c4ac6b3dfaae0253224a19369974346485 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195453 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index 7766c3aa3e76..98c2f9616c26 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -44,6 +44,17 @@ public: void saveAsPDF(std::u16string_view rFile); void load(std::u16string_view rFile, vcl::filter::PDFDocument& rDocument); + + std::unique_ptr<vcl::pdf::PDFiumDocument> parsePDFExportNoAssert() + { + SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); + maMemory.WriteStream(aFile); + + std::shared_ptr<vcl::pdf::PDFium> pPDFium = vcl::pdf::PDFiumLibrary::get(); + if (!pPDFium) + return nullptr; + return pPDFium->openDocument(maMemory.GetData(), maMemory.GetSize(), OString()); + } }; void PdfExportTest::saveAsPDF(std::u16string_view rFile) @@ -360,7 +371,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf107868) xPrintable->print(aOptions); // Parse the export result with pdfium. - std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport(); + std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExportNoAssert(); if (!pPdfDocument) // Printing to PDF failed in a non-interesting way, e.g. CUPS is not // running, there is no printer defined, etc. @@ -635,7 +646,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testSofthyphenPos) xPrintable->print(aOptions); // Parse the export result with pdfium. - std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExport(); + std::unique_ptr<vcl::pdf::PDFiumDocument> pPdfDocument = parsePDFExportNoAssert(); if (!pPdfDocument) // Printing to PDF failed in a non-interesting way, e.g. CUPS is not // running, there is no printer defined, etc. commit ccb3bf47f380b1465c0469082cc09e118cddb1c1 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 14:56:40 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:42:01 2026 +0100 use 🐱 and DejaVu Sans known to already work in: https://gerrit.libreoffice.org/c/core/+/193497 where Noto Sans in Debian might be problematic Change-Id: I506fc673951e6ff515da9fb2120b748e2c00bd91 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195577 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/sw/qa/extras/unowriter/unowriter.cxx b/sw/qa/extras/unowriter/unowriter.cxx index f36996063808..b475ad4c4349 100644 --- a/sw/qa/extras/unowriter/unowriter.cxx +++ b/sw/qa/extras/unowriter/unowriter.cxx @@ -1369,7 +1369,7 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf160278) { createSwDoc(); uno::Reference<beans::XPropertySet> xParaProps(getParagraph(1), uno::UNO_QUERY); - xParaProps->setPropertyValue(u"CharFontName"_ustr, uno::Any(u"Noto Sans"_ustr)); + xParaProps->setPropertyValue(u"CharFontName"_ustr, uno::Any(u"DejaVu Sans"_ustr)); auto xTextDocument(mxComponent.queryThrow<css::text::XTextDocument>()); auto xText(xTextDocument->getText()); xText->setString(u"123"_ustr); @@ -1377,11 +1377,11 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf160278) auto xCursor = xText->createTextCursorByRange(xText->getEnd()); xCursor->goLeft(1, true); CPPUNIT_ASSERT_EQUAL(u"3"_ustr, xCursor->getString()); - // Insert an SMP character U+1df1e (so it's two UTF-16 code units, 0xd837 0xdf1e): - xCursor->setString(u"𝼞"_ustr); + // Insert an SMP character U+1f431 (so it's two UTF-16 code units, 0xd83d 0xdc31): + xCursor->setString(u"🐱"_ustr); // Without the fix, the replacement would expand the cursor one too many characters to the left, - // and the cursor text would become "2𝼞", failing the next test: - CPPUNIT_ASSERT_EQUAL(u"𝼞"_ustr, xCursor->getString()); + // and the cursor text would become "2🐱", failing the next test: + CPPUNIT_ASSERT_EQUAL(u"🐱"_ustr, xCursor->getString()); xCursor->setString(u"test"_ustr); CPPUNIT_ASSERT_EQUAL(u"test"_ustr, xCursor->getString()); // This test would fail, too; the text would be "1test": commit f37fc8fb0e460af73ff33ab7aab58482e0427e6e Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 09:54:21 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:41:34 2026 +0100 fix test for ENABLE_CAIRO_RGBA Change-Id: I91f472d0a65527a0cb64c350de91c1f4f625d56a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195538 Tested-by: Caolán McNamara <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/sd/qa/unit/tiledrendering/tiledrendering.cxx b/sd/qa/unit/tiledrendering/tiledrendering.cxx index caf90b070016..c0a68aeea3de 100644 --- a/sd/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sd/qa/unit/tiledrendering/tiledrendering.cxx @@ -60,6 +60,8 @@ #include <vcl/filter/PngImageWriter.hxx> #include <sfx2/lokhelper.hxx> +#include <config_cairo_rgba.h> + #include <chrono> #include <cstdlib> #include <string_view> @@ -3130,7 +3132,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering) CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nLeft, nBottom)); // bottom-right corner - CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xd0, 0x40), aBitmapEx.GetPixelColor(nRight, nBottom)); + ::Color nColor = aBitmapEx.GetPixelColor(nRight, nBottom); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xd0, 0x40), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0x40, 0xd0, 0xff), nColor); +#endif boost::property_tree::ptree aTree; readJSON(aTree, aJson); @@ -3155,7 +3162,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering) Bitmap aBitmapEx = vcl::bitmap::CreateFromData(pBuffer.data(), nViewWidth, nViewHeight, nViewWidth * 4, /*nBitsPerPixel*/32, true, true); // top-left corner - CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x50, 0x90), aBitmapEx.GetPixelColor(nLeft, nTop)); + ::Color nColor = aBitmapEx.GetPixelColor(nLeft, nTop); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x50, 0x90), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0x90, 0x50, 0x00), nColor); +#endif // bottom-left corner CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nLeft, nBottom)); @@ -3244,7 +3256,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_WithFie CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nLeft, nTop)); // bottom-left corner - CPPUNIT_ASSERT_EQUAL(Color(0x90, 0x80, 0xff), aBitmapEx.GetPixelColor(nLeft, nBottom)); + ::Color nColor = aBitmapEx.GetPixelColor(nLeft, nBottom); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0x90, 0x80, 0xff), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0xff, 0x80, 0x90), nColor); +#endif // bottom-right corner CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nRight, nBottom)); @@ -3279,7 +3296,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_WithFie CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nRight, nBottom)); // bottom-center - CPPUNIT_ASSERT_EQUAL(Color(0x20, 0xaa, 0x00), aBitmapEx.GetPixelColor(nCenterX, nBottom)); + ::Color nColor = aBitmapEx.GetPixelColor(nCenterX, nBottom); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0x20, 0xaa, 0x00), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0x00, 0xaa, 0x20), nColor); +#endif boost::property_tree::ptree aTree; readJSON(aTree, aJson); @@ -3308,7 +3330,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_WithFie CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nLeft, nBottom)); // bottom-right corner - CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xd0, 0x40), aBitmapEx.GetPixelColor(nRight, nBottom)); + ::Color nColor = aBitmapEx.GetPixelColor(nRight, nBottom); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0xff, 0xd0, 0x40), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0x40, 0xd0, 0xff), nColor); +#endif boost::property_tree::ptree aTree; readJSON(aTree, aJson); @@ -3368,7 +3395,12 @@ CPPUNIT_TEST_FIXTURE(SdTiledRenderingTest, testSlideshowLayeredRendering_WithFie Bitmap aBitmapEx = vcl::bitmap::CreateFromData(pBuffer.data(), nViewWidth, nViewHeight, nViewWidth * 4, /*nBitsPerPixel*/32, true, true); // top-left corner - CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x50, 0x90), aBitmapEx.GetPixelColor(nLeft, nTop)); + ::Color nColor = aBitmapEx.GetPixelColor(nLeft, nTop); +#if !ENABLE_CAIRO_RGBA + CPPUNIT_ASSERT_EQUAL(Color(0x00, 0x50, 0x90), nColor); +#else + CPPUNIT_ASSERT_EQUAL(Color(0x90, 0x50, 0x00), nColor); +#endif // bottom-left corner CPPUNIT_ASSERT_EQUAL(aTransparentColor, aBitmapEx.GetPixelColor(nLeft, nBottom)); commit b7aeb06c8ecd5c9ae803aae65834a3fac8e51a41 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Dec 11 09:05:00 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:41:26 2026 +0100 disable testDrawMask24bpp for --enable-cairo-rgba Change-Id: I84755909a705a23786d1f55948ab1c90c3543395 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195433 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/vcl/qa/cppunit/BackendTest.cxx b/vcl/qa/cppunit/BackendTest.cxx index 690d86cdbab7..60fc689b5f14 100644 --- a/vcl/qa/cppunit/BackendTest.cxx +++ b/vcl/qa/cppunit/BackendTest.cxx @@ -500,6 +500,7 @@ public: void testDrawMask24bpp() { +#if !ENABLE_CAIRO_RGBA if (getDefaultDeviceBitCount() < 24) return; vcl::test::OutputDeviceTestBitmap aOutDevTest; @@ -508,6 +509,7 @@ public: exportImage(u"08-05_mask_test_24bpp.png"_ustr, aBitmap); if (SHOULD_ASSERT) CPPUNIT_ASSERT(eResult != vcl::test::TestResult::Failed); +#endif } void testDrawBlend24bpp() commit cb76e218592f373acf38dda44832b200f0243764 Author: Caolán McNamara <[email protected]> AuthorDate: Fri Dec 12 10:28:37 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:41:16 2026 +0100 use an SMP char that exists in some bundled font: Noto Sans has U+1DF1E Change-Id: Ic2b249fa244cf5d1c0b973b2cb9c7008c9f54918 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195541 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/qa/extras/unowriter/unowriter.cxx b/sw/qa/extras/unowriter/unowriter.cxx index 9161980a6cbe..f36996063808 100644 --- a/sw/qa/extras/unowriter/unowriter.cxx +++ b/sw/qa/extras/unowriter/unowriter.cxx @@ -1368,6 +1368,8 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf141525) CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf160278) { createSwDoc(); + uno::Reference<beans::XPropertySet> xParaProps(getParagraph(1), uno::UNO_QUERY); + xParaProps->setPropertyValue(u"CharFontName"_ustr, uno::Any(u"Noto Sans"_ustr)); auto xTextDocument(mxComponent.queryThrow<css::text::XTextDocument>()); auto xText(xTextDocument->getText()); xText->setString(u"123"_ustr); @@ -1375,11 +1377,11 @@ CPPUNIT_TEST_FIXTURE(SwUnoWriter, testTdf160278) auto xCursor = xText->createTextCursorByRange(xText->getEnd()); xCursor->goLeft(1, true); CPPUNIT_ASSERT_EQUAL(u"3"_ustr, xCursor->getString()); - // Insert an SMP character U+1f702 (so it's two UTF-16 code units, 0xd83d 0xdf02): - xCursor->setString(u"🜂"_ustr); + // Insert an SMP character U+1df1e (so it's two UTF-16 code units, 0xd837 0xdf1e): + xCursor->setString(u"𝼞"_ustr); // Without the fix, the replacement would expand the cursor one too many characters to the left, - // and the cursor text would become "2🜂", failing the next test: - CPPUNIT_ASSERT_EQUAL(u"🜂"_ustr, xCursor->getString()); + // and the cursor text would become "2𝼞", failing the next test: + CPPUNIT_ASSERT_EQUAL(u"𝼞"_ustr, xCursor->getString()); xCursor->setString(u"test"_ustr); CPPUNIT_ASSERT_EQUAL(u"test"_ustr, xCursor->getString()); // This test would fail, too; the text would be "1test": commit ddb5e7660e1756c11daccbd0d1a99c171c8d97f6 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Dec 11 11:35:05 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:41:00 2026 +0100 replace Japanese text to get consistent fonts used Change-Id: I7c9504aa5adc741f773395b9d5bf49286de98885 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195450 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sd/qa/unit/data/pptx/smartart-tdf134221.pptx b/sd/qa/unit/data/pptx/smartart-tdf134221.pptx index 9dba931cd3e3..6d01e02012f4 100644 Binary files a/sd/qa/unit/data/pptx/smartart-tdf134221.pptx and b/sd/qa/unit/data/pptx/smartart-tdf134221.pptx differ commit 57a75efc8d20fef38565654397b3b1cf7066698a Author: Caolán McNamara <[email protected]> AuthorDate: Thu Dec 11 15:02:13 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:39:50 2026 +0100 sw/uiconfig/swriter/ui/charurlpage.ui isn't used anymore since: commit 63315d601296f7c188e920f73b12260d018807d0 Date: Tue Apr 23 17:20:47 2024 +0200 Resolves tdf#132253 - Remove hyperlink tab from character dialog Change-Id: I35d5e1af6dc7cdb1ea8661ea5661bf183becc0ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195474 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/static/CustomTarget_emscripten_fs_image.mk b/static/CustomTarget_emscripten_fs_image.mk index f1f5323eec4e..fe513b81a6bb 100644 --- a/static/CustomTarget_emscripten_fs_image.mk +++ b/static/CustomTarget_emscripten_fs_image.mk @@ -593,7 +593,6 @@ gb_emscripten_fs_image_files += \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/cardmediumpage.ui \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/ccdialog.ui \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/characterproperties.ui \ - $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/charurlpage.ui \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/checkbox.ui \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/columndialog.ui \ $(INSTROOT)/$(LIBO_SHARE_FOLDER)/config/soffice.cfg/modules/swriter/ui/columnpage.ui \ diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk index 8c76e3d9dda3..20bb54773c89 100644 --- a/sw/UIConfig_swriter.mk +++ b/sw/UIConfig_swriter.mk @@ -126,7 +126,6 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\ sw/uiconfig/swriter/ui/cardmediumpage \ sw/uiconfig/swriter/ui/ccdialog \ sw/uiconfig/swriter/ui/characterproperties \ - sw/uiconfig/swriter/ui/charurlpage \ sw/uiconfig/swriter/ui/checkbox \ sw/uiconfig/swriter/ui/columndialog \ sw/uiconfig/swriter/ui/columnpage \ diff --git a/sw/qa/unit/data/sw-dialogs-test.txt b/sw/qa/unit/data/sw-dialogs-test.txt index 2631e279a211..50736fd327d5 100644 --- a/sw/qa/unit/data/sw-dialogs-test.txt +++ b/sw/qa/unit/data/sw-dialogs-test.txt @@ -68,7 +68,6 @@ modules/swriter/ui/captionoptions.ui modules/swriter/ui/cardmediumpage.ui modules/swriter/ui/ccdialog.ui modules/swriter/ui/characterproperties.ui -modules/swriter/ui/charurlpage.ui modules/swriter/ui/columndialog.ui modules/swriter/ui/columnpage.ui modules/swriter/ui/columnwidth.ui diff --git a/sw/uiconfig/swriter/ui/charurlpage.ui b/sw/uiconfig/swriter/ui/charurlpage.ui deleted file mode 100644 index 2cc5e71a3d96..000000000000 --- a/sw/uiconfig/swriter/ui/charurlpage.ui +++ /dev/null @@ -1,349 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.36.0 --> -<interface domain="sw"> - <requires lib="gtk+" version="3.24"/> - <object class="GtkBox" id="CharURLPage"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="border_width">6</property> - <property name="orientation">vertical</property> - <property name="spacing">12</property> - <child> - <object class="GtkFrame" id="frame10"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <!-- n-columns=1 n-rows=1 --> - <object class="GtkGrid" id="grid7"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - <property name="margin-start">12</property> - <property name="margin-top">6</property> - <child> - <object class="GtkLabel" id="label36"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label36">URL:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">urled</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label37"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label37">Name:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">nameed</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="textft"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|textft">Text:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">texted</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label39"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label39">Target frame:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">targetfrmlb</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <object class="GtkButton" id="eventpb"> - <property name="label" translatable="yes" context="charurlpage|eventpb">Events...</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="valign">center</property> - <child internal-child="accessible"> - <object class="AtkObject" id="eventpb-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|eventpb">Specify an event that triggers when you click the hyperlink.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">4</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="urled"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> - <property name="width_chars">32</property> - <property name="truncate-multiline">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="urled-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|urled">Enter a URL for the file that you want to open when you click the hyperlink.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="nameed"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> - <property name="width_chars">32</property> - <property name="truncate-multiline">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="nameed-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|nameed">Enter a name for the hyperlink.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">2</property> - </packing> - </child> - <child> - <object class="GtkEntry" id="texted"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="activates_default">True</property> - <property name="width_chars">32</property> - <property name="truncate-multiline">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="texted-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|texted">Enter the text that you want to display for the hyperlink.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="urlpb"> - <property name="label" translatable="yes" context="charurlpage|urlpb">Browse...</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="valign">center</property> - <child internal-child="accessible"> - <object class="AtkObject" id="urlpb-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|urlpb">Locate the file that you want to link to, and then click Open.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">2</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="targetfrmlb"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="has_entry">True</property> - <child internal-child="entry"> - <object class="GtkEntry" id="comboboxtext-entry"> - <property name="can_focus">True</property> - <property name="truncate-multiline">True</property> - <property name="activates_default">True</property> - </object> - </child> - <child internal-child="accessible"> - <object class="AtkObject" id="targetfrmlb-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|targetfrmlb">Enter the name of the frame that you want the linked file to open in, or select a predefined frame from the list.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">3</property> - </packing> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - <child> - <placeholder/> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label32"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label32">Hyperlink</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="charstyle"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> - <child> - <!-- n-columns=1 n-rows=1 --> - <object class="GtkGrid" id="grid6"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="row_spacing">6</property> - <property name="column_spacing">12</property> - <property name="margin-start">12</property> - <property name="margin-top">6</property> - <child> - <object class="GtkLabel" id="label34"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label34">Visited links:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">visitedlb</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label10"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label10">Unvisited links:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">unvisitedlb</property> - <property name="xalign">0</property> - </object> - <packing> - <property name="left_attach">0</property> - <property name="top_attach">1</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="visitedlb"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child internal-child="accessible"> - <object class="AtkObject" id="visitedlb-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|visitedlb">Select a formatting style to use for visited links from the list. To add or modify a style in this list, close this dialog, and click the Styles icon on the Formatting toolbar.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">0</property> - </packing> - </child> - <child> - <object class="GtkComboBoxText" id="unvisitedlb"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child internal-child="accessible"> - <object class="AtkObject" id="unvisitedlb-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|unvisitedlb">Select a formatting style to use for unvisited links from the list. To add or modify a style in this list, close this dialog, and click the Styles icon on the Formatting toolbar.</property> - </object> - </child> - </object> - <packing> - <property name="left_attach">1</property> - <property name="top_attach">1</property> - </packing> - </child> - </object> - </child> - <child type="label"> - <object class="GtkLabel" id="label33"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes" context="charurlpage|label33">Character Styles</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child internal-child="accessible"> - <object class="AtkObject" id="CharURLPage-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="charurlpage|extended_tip|CharURLPage">Assigns a new hyperlink or edits the selected hyperlink.</property> - </object> - </child> - </object> - <object class="GtkSizeGroup" id="sizegroup1"> - <property name="ignore_hidden">True</property> - <widgets> - <widget name="label36"/> - <widget name="label37"/> - <widget name="textft"/> - <widget name="label39"/> - <widget name="label34"/> - <widget name="label10"/> - </widgets> - </object> - <object class="GtkSizeGroup" id="sizegroup2"> - <property name="ignore_hidden">True</property> - <widgets> - <widget name="urled"/> - <widget name="nameed"/> - <widget name="texted"/> - <widget name="targetfrmlb"/> - <widget name="visitedlb"/> - <widget name="unvisitedlb"/> - </widgets> - </object> -</interface> diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx index 661c782840a8..2e296279c1d2 100644 --- a/vcl/jsdialog/enabled.cxx +++ b/vcl/jsdialog/enabled.cxx @@ -215,7 +215,6 @@ constexpr auto SwriterDialogList { u"modules/swriter/ui/bulletsandnumbering.ui" }, { u"modules/swriter/ui/captionoptions.ui" }, { u"modules/swriter/ui/characterproperties.ui" }, - { u"modules/swriter/ui/charurlpage.ui" }, { u"modules/swriter/ui/columndialog.ui" }, { u"modules/swriter/ui/columnpage.ui" }, { u"modules/swriter/ui/contentcontroldlg.ui" }, commit f7b6e94ba43f55728ddf96cef40a759668f51e60 Author: Caolán McNamara <[email protected]> AuthorDate: Wed Dec 10 15:03:30 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:39:21 2026 +0100 add an accessible-name to the preview in the caption dialog similar to what we do in sw/uiconfig/swriter/ui/envformatpage.ui Change-Id: I0d7150909835f26aba8893f3fc4edb029ec65ac1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195385 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/sw/uiconfig/swriter/ui/insertcaption.ui b/sw/uiconfig/swriter/ui/insertcaption.ui index d11aa3f17c02..48ef6c1a2bf8 100644 --- a/sw/uiconfig/swriter/ui/insertcaption.ui +++ b/sw/uiconfig/swriter/ui/insertcaption.ui @@ -366,6 +366,11 @@ <object class="GtkDrawingArea" id="preview"> <property name="visible">True</property> <property name="can_focus">False</property> + <child internal-child="accessible"> + <object class="AtkObject" id="preview-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="insertcaption|preview-atkobject">Preview</property> + </object> + </child> </object> </child> </object> commit efa34f054752f7ad4808ee2ae962ae6216d6340e Author: Caolán McNamara <[email protected]> AuthorDate: Wed Dec 10 20:03:45 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:39:09 2026 +0100 drop CJK text from systemLanguage switch example because we run this test with set_non_application_font_use=abort so we don't expect any glyph substitution, and the default setup is without any bundled Japanese font. Change-Id: I2e7ead7404fbacb768c06502a52cde629c1a1116 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195407 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/svgio/qa/cppunit/data/tdf160386.svg b/svgio/qa/cppunit/data/tdf160386.svg index 1644b0d15514..188aa4c34e54 100644 --- a/svgio/qa/cppunit/data/tdf160386.svg +++ b/svgio/qa/cppunit/data/tdf160386.svg @@ -8,9 +8,7 @@ <text systemLanguage="en">Hello!</text> <text systemLanguage="es">Hola!</text> <text systemLanguage="fr">Bonjour!</text> - <text systemLanguage="ja">こんにちは</text> <text systemLanguage="ru">Привет!</text> <text>☺</text> </switch> </svg> - commit 89df859d7449a5c4d1c893c03411d21b1ae6f4b9 Author: Caolán McNamara <[email protected]> AuthorDate: Wed Dec 10 21:09:40 2025 +0000 Commit: Andras Timar <[email protected]> CommitDate: Sat Jan 10 11:38:49 2026 +0100 include VCLGenericClipboard for headless-only tests make CppunitTest_starmath_qa_cppunit CPPUNIT_TEST_NAME="Test::testCopyPaste" fails on --disable-gui build Change-Id: I811487dd57f1474ae93131bf57b5cd04470cdaa5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195409 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> diff --git a/vcl/vcl.common.component.headless b/vcl/vcl.common.component.headless index 4300832e94b2..e92b54e7ca1b 100644 --- a/vcl/vcl.common.component.headless +++ b/vcl/vcl.common.component.headless @@ -3,6 +3,6 @@ # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. - +com.sun.star.datatransfer.VCLGenericClipboard com.sun.star.frame.VCLSessionManagerClient vcl::FontIdentificator
