configure.ac | 4 +- external/skia/Library_skia.mk | 5 ++ pyuno/source/module/pyuno.cxx | 3 + pyuno/source/module/pyuno_callable.cxx | 3 + pyuno/source/module/pyuno_iterator.cxx | 6 +++ pyuno/source/module/pyuno_runtime.cxx | 3 + pyuno/source/module/pyuno_struct.cxx | 3 + sc/source/ui/miscdlgs/solveroptions.cxx | 2 - sd/source/core/drawdoc2.cxx | 6 ++- sd/source/core/sdpage.cxx | 3 + sw/source/core/layout/tabfrm.cxx | 2 - sw/source/filter/ww8/wrtw8nds.cxx | 41 +++++++++++----------- vcl/qa/cppunit/pdfexport/data/tdf142133.docx |binary vcl/qa/cppunit/pdfexport/pdfexport.cxx | 35 ++++++++++++++++++ vcl/qt5/QtInstance.cxx | 5 ++ vcl/win/window/salframe.cxx | 2 - writerfilter/source/dmapper/DomainMapper_Impl.cxx | 23 +++++++----- writerfilter/source/dmapper/DomainMapper_Impl.hxx | 3 + 18 files changed, 115 insertions(+), 34 deletions(-)
New commits: commit ae2fa89cf241942e5a80e4f3b08182bcdab138da Author: Rafael Lima <rafael.palma.l...@gmail.com> AuthorDate: Wed Mar 13 23:30:17 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 tdf#160122 Increase height of the Solver Options dialog Currently the Solver Options dialog (Tools - Solver and then click the Options button) has a height of 6 rows, which is good for the Linear and Swarm non-linear solvers, since they have 4-5 options. However, the SCO and DEPS engines have 12 and 19 options, respectively, so it is very unconfortable to view and scroll through these options with such a small dialog. This patch raises the height of the dialog to 12, so that scrolling is minimized, making it more confortable to navigate through the solver options. Change-Id: I51c1c6880613818dd91c6bb8494775c863e8b406 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164749 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org> Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> (cherry picked from commit 58f565cb2dcf6e7b7eb2eb269776993516a29bf0) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164875 diff --git a/sc/source/ui/miscdlgs/solveroptions.cxx b/sc/source/ui/miscdlgs/solveroptions.cxx index 3d5b2b47c178..81f5c8b7b4ce 100644 --- a/sc/source/ui/miscdlgs/solveroptions.cxx +++ b/sc/source/ui/miscdlgs/solveroptions.cxx @@ -69,7 +69,7 @@ ScSolverOptionsDialog::ScSolverOptionsDialog(weld::Window* pParent, , m_xBtnEdit(m_xBuilder->weld_button("edit")) { m_xLbSettings->set_size_request(m_xLbSettings->get_approximate_digit_width() * 32, - m_xLbSettings->get_height_rows(6)); + m_xLbSettings->get_height_rows(12)); m_xLbSettings->enable_toggle_buttons(weld::ColumnToggleType::Check); commit 4756c7e6632f41ae48648f13ac463e6413f3315d Author: Patrick Luby <guibmac...@gmail.com> AuthorDate: Sat Mar 16 14:46:29 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 tdf#160036 Enable SKSL when using Skia/Raster Starting with the upgrade of Skia from m111 to m116, SKSL is disabled by default for Skia/Raster so define SK_RASTER_PIPELINE_OPS_ALL to enable it. Change-Id: Ibd10efa0540f1e87123c341b529c8e3931e1a8fb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164933 Tested-by: Jenkins Reviewed-by: Patrick Luby <guibomac...@gmail.com> (cherry picked from commit 22dbaf45fb378107ad7daa0d7894939d6e0c7ee3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164876 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk index c2163d299327..55af14cd2daf 100644 --- a/external/skia/Library_skia.mk +++ b/external/skia/Library_skia.mk @@ -23,6 +23,7 @@ $(eval $(call gb_Library_add_defs,skia,\ -DSK_USER_CONFIG_HEADER="<$(BUILDDIR)/config_host/config_skia.h>" \ $(if $(filter INTEL,$(CPUNAME)),$(if $(filter WNT,$(OS)),-DSK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE1,-DSK_CPU_SSE_LEVEL=0)) \ $(if $(filter X86_64,$(CPUNAME)),-DSK_CPU_SSE_LEVEL=SK_CPU_SSE_LEVEL_SSE2) \ + -DSK_ENABLE_SKSL_IN_RASTER_PIPELINE \ )) # SK_DEBUG controls runtime checks and is controlled by config_skia.h and depends on DBG_UTIL. @@ -565,6 +566,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,skia,\ UnpackedTarball/skia/src/sksl/analysis/SkSLReturnsInputAlpha \ UnpackedTarball/skia/src/sksl/analysis/SkSLSymbolTableStackBuilder \ UnpackedTarball/skia/src/sksl/analysis/SkSLSwitchCaseContainsExit \ + UnpackedTarball/skia/src/sksl/analysis/SkSLGetLoopControlFlowInfo \ + UnpackedTarball/skia/src/sksl/analysis/SkSLIsDynamicallyUniformExpression \ UnpackedTarball/skia/src/sksl/codegen/SkSLGLSLCodeGenerator \ UnpackedTarball/skia/src/sksl/codegen/SkSLMetalCodeGenerator \ UnpackedTarball/skia/src/sksl/codegen/SkSLPipelineStageCodeGenerator \ @@ -572,6 +575,8 @@ $(eval $(call gb_Library_add_generated_exception_objects,skia,\ UnpackedTarball/skia/src/sksl/codegen/SkSLSPIRVtoHLSL \ UnpackedTarball/skia/src/sksl/codegen/SkSLVMCodeGenerator \ UnpackedTarball/skia/src/sksl/codegen/SkSLWGSLCodeGenerator \ + UnpackedTarball/skia/src/sksl/codegen/SkSLRasterPipelineBuilder \ + UnpackedTarball/skia/src/sksl/codegen/SkSLRasterPipelineCodeGenerator \ UnpackedTarball/skia/src/sksl/transform/SkSLAddConstToVarModifiers \ UnpackedTarball/skia/src/sksl/transform/SkSLEliminateDeadFunctions \ UnpackedTarball/skia/src/sksl/transform/SkSLEliminateDeadGlobalVariables \ commit 4fa5c7400572f46ac88007a7d712a36e7bf53277 Author: Miklos Vajna <vmik...@collabora.com> AuthorDate: Wed Mar 13 14:07:50 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 sw: fix fieldmark crash in MSWordExportBase::OutputTextNode() Crashreport signature: program/libmswordlo.so MSWordExportBase::OutputTextNode(SwTextNode&) sw/source/filter/ww8/wrtw8nds.cxx:2547 program/libmswordlo.so MSWordExportBase::WriteText() sw/source/filter/ww8/wrtww8.cxx:2936 program/libmswordlo.so DocxExport::WriteMainText() /opt/rh/devtoolset-10/root/usr/include/c++/10/bits/stl_tree.h:1261 program/libmswordlo.so DocxExport::ExportDocument_Impl() sw/source/filter/ww8/docxexport.cxx:541 Keep the assert, because ideally it should not happen that we have no fieldmark at CH_TXT_ATR_FIELDEND, but crashing in non-debug builds goes a bit too far. Change-Id: I428f46821771802a0ea2beaaf86463487e561aff Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164844 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmik...@collabora.com> (cherry picked from commit 27a41c7e4ec0e82e2ed0ca2577574f5295a16057) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164825 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sw/source/filter/ww8/wrtw8nds.cxx b/sw/source/filter/ww8/wrtw8nds.cxx index 68437c9529b3..e33e8708f453 100644 --- a/sw/source/filter/ww8/wrtw8nds.cxx +++ b/sw/source/filter/ww8/wrtw8nds.cxx @@ -2658,33 +2658,36 @@ void MSWordExportBase::OutputTextNode( SwTextNode& rNode ) assert(pFieldmark); - if (pFieldmark->GetFieldname() == ODF_FORMDATE) + if (pFieldmark) { - if(GetExportFormat() == MSWordExportBase::ExportFormat::DOCX) // supported by DOCX only + if (pFieldmark->GetFieldname() == ODF_FORMDATE) { - OutputField( nullptr, ww::eFORMDATE, OUString(), FieldFlags::Close ); + if(GetExportFormat() == MSWordExportBase::ExportFormat::DOCX) // supported by DOCX only + { + OutputField( nullptr, ww::eFORMDATE, OUString(), FieldFlags::Close ); + } } - } - else - { - ww::eField eFieldId = lcl_getFieldId( pFieldmark ); - if (pFieldmark->GetFieldname() == ODF_UNHANDLED) + else { - IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find( ODF_ID_PARAM ); - if ( it != pFieldmark->GetParameters()->end() ) + ww::eField eFieldId = lcl_getFieldId( pFieldmark ); + if (pFieldmark->GetFieldname() == ODF_UNHANDLED) { - OUString sFieldId; - it->second >>= sFieldId; - eFieldId = static_cast<ww::eField>(sFieldId.toInt32()); + IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find( ODF_ID_PARAM ); + if ( it != pFieldmark->GetParameters()->end() ) + { + OUString sFieldId; + it->second >>= sFieldId; + eFieldId = static_cast<ww::eField>(sFieldId.toInt32()); + } } - } - OutputField( nullptr, eFieldId, OUString(), FieldFlags::Close ); + OutputField( nullptr, eFieldId, OUString(), FieldFlags::Close ); - if (pFieldmark->GetFieldname() == ODF_FORMTEXT - && GetExportFormat() != MSWordExportBase::ExportFormat::DOCX ) - { - AppendBookmark( pFieldmark->GetName() ); + if (pFieldmark->GetFieldname() == ODF_FORMTEXT + && GetExportFormat() != MSWordExportBase::ExportFormat::DOCX ) + { + AppendBookmark( pFieldmark->GetName() ); + } } } } commit 34e29a5c3bfe852c74db8c2949c4cd419c8e50d2 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Fri Mar 15 05:06:37 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 Re-enable Alt key handling Regression after commit 772da0f1aa6891a0b31d45d99a5978c65ed24e34 (tdf#156443, tdf#159079, tdf#158112: support Windows Alt codes >=256, 2024-01-10). In master, it was later fixed in commit a2dd71feb75d93adf0f0daac899e7476f961ec34 (tdf#54169: implement auto-accelerator feature on Windows, 2024-02-10). This is a selective fix for 24.2. Change-Id: Ic203b78de561ca9afaf589e242ff95c0481ffc15 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164824 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/win/window/salframe.cxx b/vcl/win/window/salframe.cxx index 1eed596e6c3d..bd93ad6bf432 100644 --- a/vcl/win/window/salframe.cxx +++ b/vcl/win/window/salframe.cxx @@ -3589,7 +3589,7 @@ static bool HandleAltNumPadCode(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lPar if (!(keyFlags & KF_REPEAT)) state.clear(); state.started = true; - return true; + return false; // This must be processed further - e.g., to show accelerators } if (!state.started) commit d7ba3bf5b3f1584d7eb132397c928d734097825d Author: Hossein <hoss...@libreoffice.org> AuthorDate: Tue Mar 12 16:32:09 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 tdf#160162 Fix hyperlink update in Draw Changing the links to keep them up-to-date was previously done only when the name "Slide" was used for the pages, just like Impress, as Draw and Impress share code. Now, the term "Page" is used instead of "Slide" since 942d1d2ea59bf4605f2c464a6b29c967fa9f8de8 in Draw. This change, fixes the above issue by also using the correct string consntant. The patch is tested for Draw and Impress to make sure both are working correctly now. Change-Id: I55b4f56bd499d05f87f475d4c6cb3423247bf8d7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164716 Tested-by: Jenkins Reviewed-by: Stéphane Guillou <stephane.guil...@libreoffice.org> Reviewed-by: Hossein <hoss...@libreoffice.org> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164760 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx index de82a8b95306..8f7c9f3328e6 100644 --- a/sd/source/core/drawdoc2.cxx +++ b/sd/source/core/drawdoc2.cxx @@ -324,7 +324,11 @@ void SdDrawDocument::UpdatePageRelativeURLs(SdPage const * pPage, sal_uInt16 nPo if (!aURL.isEmpty() && (aURL[0] == 35)) { - OUString aHashSlide = "#" + SdResId(STR_PAGE); + OUString aHashSlide; + if (meDocType == DocumentType::Draw) + aHashSlide = "#" + SdResId(STR_PAGE_NAME); + else + aHashSlide = "#" + SdResId(STR_PAGE); if (aURL.startsWith(aHashSlide)) { diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx index 02609a7083fa..10b4f34b761f 100644 --- a/sd/source/core/sdpage.cxx +++ b/sd/source/core/sdpage.cxx @@ -2512,9 +2512,10 @@ const OUString& SdPage::GetName() const // default name for handout pages sal_uInt16 nNum = (GetPageNum() + 1) / 2; - aCreatedPageName = SdResId(STR_PAGE) + " "; if (static_cast<SdDrawDocument&>(getSdrModelFromSdrPage()).GetDocumentType() == DocumentType::Draw ) aCreatedPageName = SdResId(STR_PAGE_NAME) + " "; + else + aCreatedPageName = SdResId(STR_PAGE) + " "; if( getSdrModelFromSdrPage().GetPageNumType() == css::style::NumberingType::NUMBER_NONE ) { commit a651e2093cf11f60ebace04c4aaf028d7299e6e3 Author: Justin Luth <jl...@mail.com> AuthorDate: Wed Mar 13 08:38:40 2024 -0400 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 allow build with python 3.12.0: initialize new tp_watched This fixes the build failure after I updated Ubuntu 24.04 (alpha), which upgraded python 3.11.7 to python 3.12.0, causing the error: libreoffice/pyuno/source/module/pyuno_callable.cxx:249:1: error: missing initializer for member ‘_typeobject::tp_watched’ [-Werror=missing-field-initializers] ... I gleaned this information from a July 2023 commit for https://github.com/xbmc/xbmc/issues/23503 tp_watched was added in upstream commit python/cpython@82ccbf6 https://github.com/python/cpython/commit/82ccbf69a842db25d8117f1c41b47aa5b4ed96ab This change first appeared in Python v3.12.0a1 Change-Id: If82ff1eb47d66d2669d90d6e00e0feff3c55b5ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164775 Tested-by: Jenkins Reviewed-by: Justin Luth <jl...@mail.com> Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164785 diff --git a/pyuno/source/module/pyuno.cxx b/pyuno/source/module/pyuno.cxx index bd4904d5f729..a589c72ba3bf 100644 --- a/pyuno/source/module/pyuno.cxx +++ b/pyuno/source/module/pyuno.cxx @@ -1667,6 +1667,9 @@ static PyTypeObject PyUNOType = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; diff --git a/pyuno/source/module/pyuno_callable.cxx b/pyuno/source/module/pyuno_callable.cxx index f22de316b7de..8f19fc8eb654 100644 --- a/pyuno/source/module/pyuno_callable.cxx +++ b/pyuno/source/module/pyuno_callable.cxx @@ -244,6 +244,9 @@ static PyTypeObject PyUNO_callable_Type = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; diff --git a/pyuno/source/module/pyuno_iterator.cxx b/pyuno/source/module/pyuno_iterator.cxx index 134f318a1017..2fc70a32fcff 100644 --- a/pyuno/source/module/pyuno_iterator.cxx +++ b/pyuno/source/module/pyuno_iterator.cxx @@ -177,6 +177,9 @@ static PyTypeObject PyUNO_iterator_Type = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; @@ -323,6 +326,9 @@ static PyTypeObject PyUNO_list_iterator_Type = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; diff --git a/pyuno/source/module/pyuno_runtime.cxx b/pyuno/source/module/pyuno_runtime.cxx index cb95e5a46dc1..91e971fdd582 100644 --- a/pyuno/source/module/pyuno_runtime.cxx +++ b/pyuno/source/module/pyuno_runtime.cxx @@ -139,6 +139,9 @@ static PyTypeObject RuntimeImpl_Type = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; diff --git a/pyuno/source/module/pyuno_struct.cxx b/pyuno/source/module/pyuno_struct.cxx index c8fd7e987905..364f2776011a 100644 --- a/pyuno/source/module/pyuno_struct.cxx +++ b/pyuno/source/module/pyuno_struct.cxx @@ -354,6 +354,9 @@ static PyTypeObject PyUNOStructType = #pragma clang diagnostic pop #endif #endif +#if PY_VERSION_HEX >= 0x030C00A1 + , 0 // tp_watched +#endif #endif #endif }; commit b823dd69de4146fe8641e90d9c0de98e62079fd5 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Wed Mar 13 12:27:12 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:33 2024 +0100 tdf#159915 qt: Force Qt::HighDpiScaleFactorRoundingPolicy::Round For now, force `Qt::HighDpiScaleFactorRoundingPolicy::Round` for the HighDPI-scale factor rounding policy [1], which is the default for Qt 5, while Qt 6 defaults to `Qt::HighDpiScaleFactorRoundingPolicy::PassThrough` (see [2]), which resulted in broken rendering (e.g. "Help" -> "About" dialog not showing the whole content) when fractional display scaling like 150 % is configured in the KDE Plasma display settings (in contrast to manually setting the `QT_SCALE_FACTOR=1.5` env variable to apply scaling, which was working fine). Quoting from [3]: > The two principal options are whether fractional scale factors should be > rounded to an integer or not. Keeping the scale factor as-is will make > the user interface size match the OS setting exactly, but may cause > painting errors, for example with the Windows style. Manually setting the env variable `QT_SCALE_FACTOR_ROUNDING_POLICY="Round"` has the same effect (and can be used with LO versions not yet containing this fix). (There might be a way to adjust the way that scaling happens to make other policies work, but for now, just hard-code to the policy that is known to work.) [1] https://doc.qt.io/qt-6/qt.html#HighDpiScaleFactorRoundingPolicy-enum [2] https://doc.qt.io/qt-6/highdpi.html#environment-variable-reference [3] https://doc.qt.io/qt-6/qguiapplication.html#setHighDpiScaleFactorRoundingPolicy Change-Id: I8eb6911d4dd5faf00912b8f15a58e0bdace1995a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164768 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> (cherry picked from commit 07688e864c913e005dcae366cf10702404a73d80) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164744 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx index 4880c1bdec55..f87cdef9348e 100644 --- a/vcl/qt5/QtInstance.cxx +++ b/vcl/qt5/QtInstance.cxx @@ -708,6 +708,11 @@ std::unique_ptr<QApplication> QtInstance::CreateQApplication(int& nArgc, char** // for scaled icons in the native menus QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #endif + // force Qt::HighDpiScaleFactorRoundingPolicy::Round, which is the Qt 5 default + // policy and prevents incorrect rendering with the Qt 6 default policy + // Qt::HighDpiScaleFactorRoundingPolicy::PassThrough (tdf#159915) + QGuiApplication::setHighDpiScaleFactorRoundingPolicy( + Qt::HighDpiScaleFactorRoundingPolicy::Round); FreeableCStr session_manager; if (getenv("SESSION_MANAGER") != nullptr) commit 4f85b4dd6d065ffea6a473edccf17eeb49d087fa Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Tue Mar 12 16:21:57 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:32 2024 +0100 tdf#157241 sw: layout: inconsistent conditions in lcl_RecalcSplitLine() A mistake, when checking before the condition is "if (pTab == &rTab)" but when checking after it is "if (pTab)" - the latter is correct as the former is checked *inside* the block, after resolving to top-level table. This caused erroneously setting rIsFootnoteGrowth = true in SwTabFrame::MakeAll() of tab 939 in the bugdoc, when in fact the footnote container shrunk from 5 to 2 footnotes. (regression from commit c303981cfd95ce1c3881366023d5495ae2edce97) Change-Id: Ib4cad9fef0e500ebe7a3636c2371a4108b32fb5f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164717 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit 7d3b439de357c8e97c0a73f6f63e67ec980e432d) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164733 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx index 43b633934156..fe3a5232356e 100644 --- a/sw/source/core/layout/tabfrm.cxx +++ b/sw/source/core/layout/tabfrm.cxx @@ -667,7 +667,7 @@ static bool lcl_RecalcSplitLine( SwRowFrame& rLastLine, SwRowFrame& rFollowLine, { SwContentFrame const*const pAnchor = pFootnote->GetRef(); SwTabFrame const* pTab = pAnchor->FindTabFrame(); - if (pTab == &rTab) + if (pTab) { while (pTab->GetUpper()->IsInTab()) { commit b3f1534acb17a5f6d78eadb44f2a3c43f694995f Author: Fridrich Strba <fridrich_st...@opensuse.org> AuthorDate: Tue Mar 12 11:34:52 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:32 2024 +0100 Fix build with autoconf 2.72 This commit http://git.savannah.gnu.org/gitweb/ ?p=autoconf.git;a=commitdiff; h=cf09f48841b66fe76f606dd6018bb3a93242a7c9 changed the internal cache variable name and its content The effects show later in message like /tmp/ccyB6wS6.ltrans9.ltrans.o: in function `comphelper::DocPasswordHelper::decryptGpgSession(com::sun::star::uno::Sequence<com::sun::star::uno::Sequence<com::sun::star::beans::NamedValue> > const&)': /home/abuild/rpmbuild/BUILD/libreoffice-24.2.1.2/comphelper/source/misc/docpasswordhelper.cxx:705:(.text+0x4fb7): undefined reference to `GpgME::Data::seek(long, int)' /usr/bin/ld.bfd: /home/abuild/rpmbuild/BUILD/libreoffice-24.2.1.2/comphelper/source/misc/docpasswordhelper.cxx:716:(.text+0x5402): undefined reference to `GpgME::Data::seek(long, int)' /usr/bin/ld.bfd: /tmp/ccyB6wS6.ltrans13.ltrans.o: in function `comphelper::OStorageHelper::CreateGpgPackageEncryptionData()': /home/abuild/rpmbuild/BUILD/libreoffice-24.2.1.2/comphelper/source/misc/storagehelper.cxx:507:(.text+0x64e3): undefined reference to `GpgME::Data::seek(long, int)' /usr/bin/ld.bfd: /home/abuild/rpmbuild/BUILD/libreoffice-24.2.1.2/comphelper/source/misc/storagehelper.cxx:520:(.text+0x6583): undefined reference to `GpgME::Data::seek(long, int)' collect2: error: ld returned 1 exit status Where the type 'off_t' at the time of inclusion of the header and at the time of compilation of the library differ. Change-Id: Ie0486dbc869e84f5fb2688473334cfe464abd570 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164704 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164715 diff --git a/configure.ac b/configure.ac index 7ba76360416d..01cb022ea1d4 100644 --- a/configure.ac +++ b/configure.ac @@ -7198,7 +7198,9 @@ if test "$_os" != "WINNT"; then dnl Check for large file support AC_SYS_LARGEFILE - if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then + if test -n "$ac_cv_sys_largefile_opts" -a "$ac_cv_sys_largefile_opts" != "none needed" -a "$ac_cv_sys_largefile_opts" != "support not detected"; then + LFS_CFLAGS="$ac_cv_sys_largefile_opts" + elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" fi if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then commit 8876b616b89b59448b1acc4a738a3e6524ad80cf Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri Mar 8 14:23:08 2024 +0100 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Sun Mar 17 20:42:32 2024 +0100 tdf#142133: partially revert 576611895e5 if 'Internet Link' character style doens't exist then apply the hyperlink style This also reverts 023285158bde72dcd73b965ce205cf8550e7a5e2 "tdf#128504 save DOCX as ODT: don't color not highlighted hyperlinks" which is no longer necessary Change-Id: Id100af5fddb10745af9d56c0ba75cb2366ecbe55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164576 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> (cherry picked from commit 03ca7031f3bf4c2a3e841b18c8f9e00004046098) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164509 Reviewed-by: Stéphane Guillou <stephane.guil...@libreoffice.org> diff --git a/vcl/qa/cppunit/pdfexport/data/tdf142133.docx b/vcl/qa/cppunit/pdfexport/data/tdf142133.docx new file mode 100644 index 000000000000..fa1e155b873e Binary files /dev/null and b/vcl/qa/cppunit/pdfexport/data/tdf142133.docx differ diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx index d362a3855303..e9a8530c3cce 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx @@ -2740,6 +2740,41 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf157816Link) CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), pAnnots->GetElements().size()); } +CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142133) +{ + vcl::filter::PDFDocument aDocument; + load(u"tdf142133.docx", aDocument); + + // The document has one page. + std::vector<vcl::filter::PDFObjectElement*> aPages = aDocument.GetPages(); + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), aPages.size()); + + auto pAnnots = dynamic_cast<vcl::filter::PDFArrayElement*>(aPages[0]->Lookup("Annots"_ostr)); + CPPUNIT_ASSERT(pAnnots); + + // There should be one annotation + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), pAnnots->GetElements().size()); + auto pAnnotReference + = dynamic_cast<vcl::filter::PDFReferenceElement*>(pAnnots->GetElements()[0]); + CPPUNIT_ASSERT(pAnnotReference); + vcl::filter::PDFObjectElement* pAnnot = pAnnotReference->LookupObject(); + CPPUNIT_ASSERT(pAnnot); + // We're expecting something like /Type /Annot /A << /Type /Action /S /URI /URI (path) + CPPUNIT_ASSERT_EQUAL( + "Annot"_ostr, + static_cast<vcl::filter::PDFNameElement*>(pAnnot->Lookup("Type"_ostr))->GetValue()); + CPPUNIT_ASSERT_EQUAL( + "Link"_ostr, + static_cast<vcl::filter::PDFNameElement*>(pAnnot->Lookup("Subtype"_ostr))->GetValue()); + auto pAction = dynamic_cast<vcl::filter::PDFDictionaryElement*>(pAnnot->Lookup("A"_ostr)); + CPPUNIT_ASSERT(pAction); + auto pURIElem + = dynamic_cast<vcl::filter::PDFLiteralStringElement*>(pAction->LookupElement("URI"_ostr)); + CPPUNIT_ASSERT(pURIElem); + // Check it matches + CPPUNIT_ASSERT_EQUAL("https://google.com/"_ostr, pURIElem->GetValue()); +} + CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf142806) { aMediaDescriptor["FilterName"] <<= OUString("writer_pdf_Export"); diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index 05f3fae6751f..2b9091452dde 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -3314,6 +3314,15 @@ void DomainMapper_Impl::MergeAtContentImageRedlineWithNext(const css::uno::Refer } else { + if (IsOpenField() && GetTopFieldContext()->GetFieldId() == FIELD_HYPERLINK) + { + // It is content of hyperlink field. We need to create and remember + // character style for later applying to hyperlink + PropertyValueVector_t aProps = comphelper::sequenceToContainer< PropertyValueVector_t >(GetTopContext()->GetPropertyValues()); + OUString sHyperlinkStyleName = GetStyleSheetTable()->getOrCreateCharStyle(aProps, /*bAlwaysCreate=*/false); + GetTopFieldContext()->SetHyperlinkStyle(sHyperlinkStyleName); + } + #if !defined(MACOSX) // TODO: check layout differences and support all platforms, if needed sal_Int32 nPos = 0; OUString sFontName; @@ -8793,25 +8802,21 @@ void DomainMapper_Impl::PopFieldContext() xCrsrProperties->setPropertyValue("VisitedCharStyleName",uno::Any(sDisplayName)); xCrsrProperties->setPropertyValue("UnvisitedCharStyleName",uno::Any(sDisplayName)); } - else + else if (!pContext->GetHyperlinkStyle().isEmpty()) { uno::Any aAny = xCrsrProperties->getPropertyValue("CharStyleName"); OUString charStyle; if (css::uno::fromAny(aAny, &charStyle)) { - if (charStyle.isEmpty()) - { - xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::Any(OUString("Default Style"))); - xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::Any(OUString("Default Style"))); - } - else if (charStyle.equalsIgnoreAsciiCase("Internet Link")) + if (!charStyle.isEmpty() && charStyle.equalsIgnoreAsciiCase("Internet Link")) { xCrsrProperties->setPropertyValue("CharStyleName", uno::Any(OUString("Default Style"))); } else { - xCrsrProperties->setPropertyValue("VisitedCharStyleName", aAny); - xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", aAny); + xCrsrProperties->setPropertyValue("VisitedCharStyleName", uno::Any(pContext->GetHyperlinkStyle())); + xCrsrProperties->setPropertyValue("UnvisitedCharStyleName", uno::Any(pContext->GetHyperlinkStyle())); + } } } diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx index 38f78ab395fc..23fdc4d79b11 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx @@ -249,6 +249,7 @@ class FieldContext : public virtual SvRefBase OUString m_sHyperlinkURL; /// A frame for the hyperlink when one exists. OUString m_sHyperlinkTarget; + OUString m_sHyperlinkStyle; FFDataHandler::Pointer_t m_pFFDataHandler; FormControlHelper::Pointer_t m_pFormControlHelper; @@ -300,6 +301,8 @@ public: const OUString& GetHyperlinkURL() const { return m_sHyperlinkURL; } void SetHyperlinkTarget(const OUString& rTarget) { m_sHyperlinkTarget = rTarget; } const OUString& GetHyperlinkTarget() const { return m_sHyperlinkTarget; } + void SetHyperlinkStyle(const OUString& rStyle) { m_sHyperlinkStyle = rStyle; } + const OUString& GetHyperlinkStyle() const { return m_sHyperlinkStyle; } void setFFDataHandler(FFDataHandler::Pointer_t pFFDataHandler) { m_pFFDataHandler = pFFDataHandler; } const FFDataHandler::Pointer_t& getFFDataHandler() const { return m_pFFDataHandler; }