[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-12-05 Thread Miklos Vajna (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   13 -
 1 file changed, 12 insertions(+), 1 deletion(-)

New commits:
commit 2f4938caebc5e8b5c7dcce45b9a5191794ceffcd
Author: Miklos Vajna 
AuthorDate: Tue Dec 5 11:43:42 2023 +0100
Commit: Caolán McNamara 
CommitDate: Tue Dec 5 12:58:44 2023 +0100

writerfilter: fix crash in DomainMapper_Impl::PushSdt()

Crashreport signature:

Fatal signal received: SIGSEGV code: 1 for address: 0x0

program/libwriterfilterlo.so
writerfilter::dmapper::DomainMapper_Impl::PushSdt()
writerfilter/source/dmapper/DomainMapper_Impl.cxx:987
program/libwriterfilterlo.so
writerfilter::dmapper::DomainMapper::lcl_attribute(unsigned int, 
writerfilter::Value&)
include/tools/ref.hxx:56
program/libwriterfilterlo.so

writerfilter::ooxml::OOXMLProperty::resolve(writerfilter::Properties&)
include/tools/ref.hxx:56
program/libwriterfilterlo.so

writerfilter::ooxml::OOXMLPropertySet::resolve(writerfilter::Properties&)
include/tools/ref.hxx:157

Change-Id: I76416ca707a4ac40495e5c22f62fcd017bcb5e48
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160336
Tested-by: Jenkins CollaboraOffice 
Tested-by: Caolán McNamara 
Reviewed-by: Caolán McNamara 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index f3558bfeac1e..897ff2f83eca 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -983,8 +983,19 @@ void DomainMapper_Impl::PushSdt()
 }
 
 uno::Reference xTextAppend = 
m_aTextAppendStack.top().xTextAppend;
+if (!xTextAppend.is())
+{
+return;
+}
+
+uno::Reference xText = xTextAppend->getText();
+if (!xText.is())
+{
+return;
+}
+
 uno::Reference xCursor
-= 
xTextAppend->getText()->createTextCursorByRange(xTextAppend->getEnd());
+= xText->createTextCursorByRange(xTextAppend->getEnd());
 // Offset so the cursor is not adjusted as we import the SDT's content.
 bool bStart = !xCursor->goLeft(1, /*bExpand=*/false);
 m_xSdtStarts.push({bStart, OUString(), xCursor->getStart()});


[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-11-30 Thread Tomaž Vajngerl (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   80 --
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |6 -
 2 files changed, 32 insertions(+), 54 deletions(-)

New commits:
commit ed8daf521b59361efc7c6bc716a9d2cc83724b88
Author: Tomaž Vajngerl 
AuthorDate: Wed Oct 11 23:09:00 2023 +0900
Commit: Miklos Vajna 
CommitDate: Thu Nov 30 11:20:24 2023 +0100

writerfilter: clean-up PushPageHeaderFooter method impl.

in addition change m_aHeaderFooterTextAppendStack to use enum
PagePartType for the "second" value in pair, instead of a bool to
denote if it is an entry for header or footer.

No change in functionality.

Change-Id: I2aa75494c9b3337dd51bf79e282291cdca9d8547
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157839
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl 
(cherry picked from commit 7bd401fa4e458c4ca16f7eb88289d50059e1d32e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160135
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index ae02cd20d5ca..6b86f8af5557 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3279,10 +3279,10 @@ void 
DomainMapper_Impl::ConvertHeaderFooterToTextFrame(bool bDynamicHeightTop, b
 {
 while (!m_aHeaderFooterTextAppendStack.empty())
 {
-auto aFooterHeader = m_aHeaderFooterTextAppendStack.top();
-if ((aFooterHeader.second && !bDynamicHeightTop) || 
(!aFooterHeader.second && !bDynamicHeightBottom))
+auto& [aTextAppendContext, ePagePartType] = 
m_aHeaderFooterTextAppendStack.top();
+if ((ePagePartType == PagePartType::Header && !bDynamicHeightTop) || 
(ePagePartType == PagePartType::Footer && !bDynamicHeightBottom))
 {
-uno::Reference< text::XTextAppend > xTextAppend = 
aFooterHeader.first.xTextAppend;
+uno::Reference< text::XTextAppend > xTextAppend = 
aTextAppendContext.xTextAppend;
 uno::Reference< text::XTextCursor > xCursor = 
xTextAppend->createTextCursor();
 uno::Reference< text::XTextRange > xRangeStart, xRangeEnd;
 
@@ -3308,13 +3308,12 @@ void 
DomainMapper_Impl::ConvertHeaderFooterToTextFrame(bool bDynamicHeightTop, b
 fillEmptyFrameProperties(aFrameProperties, false);
 
 // If it is a footer, then orient the frame to the bottom
-if (!aFooterHeader.second)
+if (ePagePartType == PagePartType::Footer)
+{
 
aFrameProperties.push_back(comphelper::makePropertyValue(getPropertyName(PROP_VERT_ORIENT),
 text::VertOrientation::BOTTOM));
-
-uno::Reference xBodyText(
-xRangeStart->getText(), uno::UNO_QUERY);
-xBodyText->convertToTextFrame(xTextAppend, xRangeEnd,
-comphelper::containerToSequence(aFrameProperties));
+}
+uno::Reference 
xBodyText(xRangeStart->getText(), uno::UNO_QUERY);
+xBodyText->convertToTextFrame(xTextAppend, xRangeEnd, 
comphelper::containerToSequence(aFrameProperties));
 }
 m_aHeaderFooterTextAppendStack.pop();
 }
@@ -3332,7 +3331,7 @@ void DomainMapper_Impl::PushPageHeaderFooter(PagePartType 
ePagePartType, PageTyp
 const PropertyIds ePropIsOn = bHeader ? PROP_HEADER_IS_ON: 
PROP_FOOTER_IS_ON;
 const PropertyIds ePropShared = bHeader ? PROP_HEADER_IS_SHARED: 
PROP_FOOTER_IS_SHARED;
 const PropertyIds ePropTextLeft = bHeader ? PROP_HEADER_TEXT_LEFT: 
PROP_FOOTER_TEXT_LEFT;
-const PropertyIds ePropText = bHeader ? PROP_HEADER_TEXT: PROP_FOOTER_TEXT;
+const PropertyIds ePropTextRight = bHeader ? PROP_HEADER_TEXT: 
PROP_FOOTER_TEXT;
 
 m_bDiscardHeaderFooter = true;
 m_eInHeaderFooterImport = bHeader ? HeaderFooterImportState::header : 
HeaderFooterImportState::footer;
@@ -3340,8 +3339,8 @@ void DomainMapper_Impl::PushPageHeaderFooter(PagePartType 
ePagePartType, PageTyp
 //get the section context
 PropertyMapPtr pContext = 
DomainMapper_Impl::GetTopContextOfType(CONTEXT_SECTION);
 //ask for the header/footer name of the given type
-SectionPropertyMap* pSectionContext = dynamic_cast< SectionPropertyMap* >( 
pContext.get() );
-if(!pSectionContext)
+SectionPropertyMap* pSectionContext = 
dynamic_cast(pContext.get());
+if (!pSectionContext)
 return;
 
 // clear the "Link To Previous" flag so that the header/footer
@@ -3358,31 +3357,24 @@ void 
DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, PageTyp
 return;
 try
 {
-bool bLeft = eType == PageType::LEFT;
-bool bFirst = eType == PageType::FIRST;
-if (!bLeft || GetSettingsTable()->GetEvenAndOddHeaders())
+const PropertyIds ePropText = eType == PageType::LEFT ? ePropTextLeft 
: 

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-11-30 Thread Tomaž Vajngerl (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   31 +-
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |6 ++--
 writerfilter/source/dmapper/PropertyMap.cxx   |   12 
 writerfilter/source/dmapper/PropertyMap.hxx   |   14 -
 4 files changed, 29 insertions(+), 34 deletions(-)

New commits:
commit 5888287530d41304e29dd39453b62003829b89b3
Author: Tomaž Vajngerl 
AuthorDate: Mon Oct 2 08:15:06 2023 +0200
Commit: Miklos Vajna 
CommitDate: Thu Nov 30 10:57:57 2023 +0100

change PageType (first, left, right) enum to enum class

Change-Id: I45bb7947266de1e18028c7ed460149c609e430b4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157834
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl 
(cherry picked from commit e3d09d2e525ef6d5b93c6646e3cadc3f01297ea0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160133
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 5b27c8c889af..ae02cd20d5ca 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3320,7 +3320,7 @@ void 
DomainMapper_Impl::ConvertHeaderFooterToTextFrame(bool bDynamicHeightTop, b
 }
 }
 
-void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, 
SectionPropertyMap::PageType eType)
+void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, 
PageType eType)
 {
 m_bSaveParaHadField = m_bParaHadField;
 m_aHeaderFooterStack.push(HeaderFooterContext(m_bTextInserted, 
m_nTableDepth));
@@ -3353,22 +3353,17 @@ void 
DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, Section
 return; // TODO sw cannot Undo insert header/footer without crashing
 }
 
-uno::Reference< beans::XPropertySet > xPageStyle =
-pSectionContext->GetPageStyle(
-*this,
-eType == SectionPropertyMap::PAGE_FIRST );
+uno::Reference xPageStyle = 
pSectionContext->GetPageStyle(*this, eType == PageType::FIRST);
 if (!xPageStyle.is())
 return;
 try
 {
-bool bLeft = eType == SectionPropertyMap::PAGE_LEFT;
-bool bFirst = eType == SectionPropertyMap::PAGE_FIRST;
+bool bLeft = eType == PageType::LEFT;
+bool bFirst = eType == PageType::FIRST;
 if (!bLeft || GetSettingsTable()->GetEvenAndOddHeaders())
 {
 //switch on header/footer use
-xPageStyle->setPropertyValue(
-getPropertyName(ePropIsOn),
-uno::Any(true));
+xPageStyle->setPropertyValue(getPropertyName(ePropIsOn), 
uno::Any(true));
 
 // If the 'Different Even & Odd Pages' flag is turned on - do not 
ignore it
 // Even if the 'Even' header/footer is blank - the flag should be 
imported (so it would look in LO like in Word)
@@ -3419,12 +3414,12 @@ void 
DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, Section
 }
 }
 
-void DomainMapper_Impl::PushPageHeader(SectionPropertyMap::PageType eType)
+void DomainMapper_Impl::PushPageHeader(PageType eType)
 {
 PushPageHeaderFooter(PagePartType::Header, eType);
 }
 
-void DomainMapper_Impl::PushPageFooter(SectionPropertyMap::PageType eType)
+void DomainMapper_Impl::PushPageFooter(PageType eType)
 {
 PushPageHeaderFooter(PagePartType::Footer, eType);
 }
@@ -9220,22 +9215,22 @@ void DomainMapper_Impl::substream(Id rName,
 switch( rName )
 {
 case NS_ooxml::LN_headerl:
-PushPageHeader(SectionPropertyMap::PAGE_LEFT);
+PushPageHeader(PageType::LEFT);
 break;
 case NS_ooxml::LN_headerr:
-PushPageHeader(SectionPropertyMap::PAGE_RIGHT);
+PushPageHeader(PageType::RIGHT);
 break;
 case NS_ooxml::LN_headerf:
-PushPageHeader(SectionPropertyMap::PAGE_FIRST);
+PushPageHeader(PageType::FIRST);
 break;
 case NS_ooxml::LN_footerl:
-PushPageFooter(SectionPropertyMap::PAGE_LEFT);
+PushPageFooter(PageType::LEFT);
 break;
 case NS_ooxml::LN_footerr:
-PushPageFooter(SectionPropertyMap::PAGE_RIGHT);
+PushPageFooter(PageType::RIGHT);
 break;
 case NS_ooxml::LN_footerf:
-PushPageFooter(SectionPropertyMap::PAGE_FIRST);
+PushPageFooter(PageType::FIRST);
 break;
 case NS_ooxml::LN_footnote:
 case NS_ooxml::LN_endnote:
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 7f39d99aed37..fc6518fd7d7e 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -876,8 +876,8 @@ public:
 /// Get the first pending shape, if there are any.
 css::uno::Reference PopPendingShape();
 

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-11-30 Thread Tomaž Vajngerl (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   19 ++-
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |8 +++-
 2 files changed, 17 insertions(+), 10 deletions(-)

New commits:
commit 836eb425bb000acdb05125e64e3f8ecdb166f875
Author: Tomaž Vajngerl 
AuthorDate: Wed Sep 20 21:22:54 2023 +0200
Commit: Miklos Vajna 
CommitDate: Thu Nov 30 10:56:03 2023 +0100

change bool header or footer parameter to use enum type instead

Is much more readable.

Change-Id: Ie81aaf344758182915796b18efbe25d3f45df4b6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157236
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl 
(cherry picked from commit c90de36ede6d35e2cf1ebea195e0ff28f618f319)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160132
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 722b616ac4d2..5b27c8c889af 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -3320,21 +3320,22 @@ void 
DomainMapper_Impl::ConvertHeaderFooterToTextFrame(bool bDynamicHeightTop, b
 }
 }
 
-void DomainMapper_Impl::PushPageHeaderFooter(bool bHeader, 
SectionPropertyMap::PageType eType)
+void DomainMapper_Impl::PushPageHeaderFooter(PagePartType ePagePartType, 
SectionPropertyMap::PageType eType)
 {
 m_bSaveParaHadField = m_bParaHadField;
 m_aHeaderFooterStack.push(HeaderFooterContext(m_bTextInserted, 
m_nTableDepth));
 m_bTextInserted = false;
 m_nTableDepth = 0;
 
-const PropertyIds ePropIsOn = bHeader? PROP_HEADER_IS_ON: 
PROP_FOOTER_IS_ON;
-const PropertyIds ePropShared = bHeader? PROP_HEADER_IS_SHARED: 
PROP_FOOTER_IS_SHARED;
-const PropertyIds ePropTextLeft = bHeader? PROP_HEADER_TEXT_LEFT: 
PROP_FOOTER_TEXT_LEFT;
-const PropertyIds ePropText = bHeader? PROP_HEADER_TEXT: PROP_FOOTER_TEXT;
+bool bHeader = ePagePartType == PagePartType::Header;
+
+const PropertyIds ePropIsOn = bHeader ? PROP_HEADER_IS_ON: 
PROP_FOOTER_IS_ON;
+const PropertyIds ePropShared = bHeader ? PROP_HEADER_IS_SHARED: 
PROP_FOOTER_IS_SHARED;
+const PropertyIds ePropTextLeft = bHeader ? PROP_HEADER_TEXT_LEFT: 
PROP_FOOTER_TEXT_LEFT;
+const PropertyIds ePropText = bHeader ? PROP_HEADER_TEXT: PROP_FOOTER_TEXT;
 
 m_bDiscardHeaderFooter = true;
-m_eInHeaderFooterImport
-= bHeader ? HeaderFooterImportState::header : 
HeaderFooterImportState::footer;
+m_eInHeaderFooterImport = bHeader ? HeaderFooterImportState::header : 
HeaderFooterImportState::footer;
 
 //get the section context
 PropertyMapPtr pContext = 
DomainMapper_Impl::GetTopContextOfType(CONTEXT_SECTION);
@@ -3420,12 +3421,12 @@ void DomainMapper_Impl::PushPageHeaderFooter(bool 
bHeader, SectionPropertyMap::P
 
 void DomainMapper_Impl::PushPageHeader(SectionPropertyMap::PageType eType)
 {
-PushPageHeaderFooter(/* bHeader = */ true, eType);
+PushPageHeaderFooter(PagePartType::Header, eType);
 }
 
 void DomainMapper_Impl::PushPageFooter(SectionPropertyMap::PageType eType)
 {
-PushPageHeaderFooter(/* bHeader = */ false, eType);
+PushPageHeaderFooter(PagePartType::Footer, eType);
 }
 
 void DomainMapper_Impl::PopPageHeaderFooter()
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 5c2a128a2b11..7f39d99aed37 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -447,6 +447,12 @@ struct SymbolData
 { }
 };
 
+enum class PagePartType
+{
+Header,
+Footer
+};
+
 class DomainMapper;
 class DomainMapper_Impl final
 {
@@ -1214,7 +1220,7 @@ public:
 OUString ConvertTOCStyleName(OUString const&);
 
 private:
-void PushPageHeaderFooter(bool bHeader, SectionPropertyMap::PageType 
eType);
+void PushPageHeaderFooter(PagePartType ePagePartType, 
SectionPropertyMap::PageType eType);
 // Start a new index section; if needed, finish current paragraph
 css::uno::Reference 
StartIndexSectionChecked(const OUString& sServiceName);
 std::vector > 
m_vTextFramesForChaining ;


[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-10-27 Thread Miklos Vajna (via logerrit)
 writerfilter/source/dmapper/TableManager.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit b0224620b2e1aa0886aaefa77ef7883200dcc307
Author: Miklos Vajna 
AuthorDate: Thu Oct 26 16:16:04 2023 +0200
Commit: Caolán McNamara 
CommitDate: Fri Oct 27 12:22:27 2023 +0200

sw floattable: fix nullptr deref in TableManager::endLevel()

This is never an empty reference in the interesting use-case, so just
make sure we don't crash.

Reported to be a regression from
2d43c34333076fad092f0cdc0f60f81580acdbee (Related: tdf#55160 sw
floattable, nested DOCX imp: fix inner tbl at cell start, 2023-09-15).

See

,
e.g.

.

(cherry picked from commit 8ad82fc115a337604c064d37adfffcc81440248e)

Change-Id: I4cd9c35ae3813a67d13d9b9e60f0dd6058f510c6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158522
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Caolán McNamara 

diff --git a/writerfilter/source/dmapper/TableManager.cxx 
b/writerfilter/source/dmapper/TableManager.cxx
index d0f90bd20729..5554a93d9fcf 100644
--- a/writerfilter/source/dmapper/TableManager.cxx
+++ b/writerfilter/source/dmapper/TableManager.cxx
@@ -444,7 +444,10 @@ void TableManager::endLevel()
 {
 xCursor = 
xCellStart->getText()->createTextCursorByRange(
 xCellStart->getStart());
-xCursor->goLeft(1, false);
+if (xCursor.is())
+{
+xCursor->goLeft(1, false);
+}
 }
 catch (const uno::RuntimeException&)
 {


[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-06-14 Thread Noel Grandin (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |4 
 writerfilter/source/dmapper/NumberingManager.cxx  |   10 
 writerfilter/source/dmapper/PropertyIds.cxx   |  689 ++
 writerfilter/source/dmapper/PropertyIds.hxx   |2 
 writerfilter/source/dmapper/PropertyMap.cxx   |   20 
 5 files changed, 360 insertions(+), 365 deletions(-)

New commits:
commit c631abe193bebf41d36a5ad69baa79940d1b4631
Author: Noel Grandin 
AuthorDate: Fri May 12 11:00:47 2023 +0200
Commit: Miklos Vajna 
CommitDate: Wed Jun 14 10:06:28 2023 +0200

avoid some OUString construction in writerfilter/

no need to repeatedly construct these

Change-Id: Ie271c8adaf1cb558d3174c9f325de524c46e399b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151698
Tested-by: Jenkins
Reviewed-by: Noel Grandin 
(cherry picked from commit 58208b97b972d6ddca5122893b3084c67b0c5ecd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152991
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Miklos Vajna 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 745a4ca355e5..ac3cf2aa6032 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1606,7 +1606,7 @@ static void 
lcl_MoveBorderPropertiesToFrame(std::vector& r
 
 for( size_t nProperty = 0; nProperty < SAL_N_ELEMENTS( 
aBorderProperties ); ++nProperty)
 {
-OUString sPropertyName = 
getPropertyName(aBorderProperties[nProperty]);
+const OUString & sPropertyName = 
getPropertyName(aBorderProperties[nProperty]);
 beans::PropertyValue aValue;
 aValue.Name = sPropertyName;
 aValue.Value = 
xTextRangeProperties->getPropertyValue(sPropertyName);
@@ -4059,7 +4059,7 @@ void DomainMapper_Impl::PushShapeContext( const 
uno::Reference< drawing::XShape
 if ( bOnlyApplyCharHeight && eId != 
PROP_CHAR_HEIGHT )
 continue;
 
-const OUString sPropName = 
getPropertyName(eId);
+const OUString & sPropName = 
getPropertyName(eId);
 if ( beans::PropertyState_DEFAULT_VALUE == 
xShapePropertyState->getPropertyState(sPropName) )
 {
 const uno::Any aProp = 
GetPropertyFromStyleSheet(eId, pEntry, /*bDocDefaults=*/true, /*bPara=*/true);
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx 
b/writerfilter/source/dmapper/NumberingManager.cxx
index ea4fb36ec4a2..047e775d726f 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -276,9 +276,9 @@ void ListLevel::AddParaProperties( uno::Sequence< 
beans::PropertyValue >* props
 {
 uno::Sequence< beans::PropertyValue >& aProps = *props;
 
-OUString sFirstLineIndent = getPropertyName(
+const OUString & sFirstLineIndent = getPropertyName(
 PROP_FIRST_LINE_INDENT );
-OUString sIndentAt = getPropertyName(
+const OUString & sIndentAt = getPropertyName(
 PROP_INDENT_AT );
 
 bool hasFirstLineIndent = lcl_findProperty( aProps, sFirstLineIndent );
@@ -292,9 +292,9 @@ void ListLevel::AddParaProperties( uno::Sequence< 
beans::PropertyValue >* props
 // ParaFirstLineIndent -> FirstLineIndent
 // ParaLeftMargin -> IndentAt
 
-OUString sParaIndent = getPropertyName(
+const OUString & sParaIndent = getPropertyName(
 PROP_PARA_FIRST_LINE_INDENT );
-OUString sParaLeftMargin = getPropertyName(
+const OUString & sParaLeftMargin = getPropertyName(
 PROP_PARA_LEFT_MARGIN );
 
 for ( const auto& rParaProp : aParaProps )
@@ -615,7 +615,7 @@ void ListDef::CreateNumberingRules( DomainMapper& rDMapper,
 }
 
 // Create the numbering style for these rules
-OUString sNumRulesName = getPropertyName( PROP_NUMBERING_RULES );
+const OUString & sNumRulesName = getPropertyName( PROP_NUMBERING_RULES 
);
 xStyle->setPropertyValue( sNumRulesName, uno::Any( m_xNumRules ) );
 }
 catch( const lang::IllegalArgumentException& )
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx 
b/writerfilter/source/dmapper/PropertyIds.cxx
index 31151ac6c229..935e9dfd2075 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -18,357 +18,352 @@
  */
 #include 
 #include "PropertyIds.hxx"
+#include 
 
 namespace writerfilter::dmapper{
 
-OUString getPropertyName( PropertyIds eId )
+const OUString & getPropertyName( PropertyIds eId )
 {
-OUString sName;
-switch(eId) {
-case PROP_CHAR_WEIGHT: sName = "CharWeight"; break;
-case PROP_CHAR_POSTURE:sName = "CharPosture"; break;
-case PROP_CHAR_STRIKEOUT:  

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-06-07 Thread Miklos Vajna (via logerrit)
 writerfilter/source/dmapper/DomainMapper.cxx |   20 ---
 writerfilter/source/dmapper/DomainMapperTableManager.cxx |3 --
 writerfilter/source/dmapper/DomainMapperTableManager.hxx |5 ---
 3 files changed, 28 deletions(-)

New commits:
commit 6c67853b0798cf20fef02fcffd383e7f95cb66bd
Author: Miklos Vajna 
AuthorDate: Tue Jun 6 08:22:53 2023 +0200
Commit: Andras Timar 
CommitDate: Wed Jun 7 22:59:02 2023 +0200

sw floattable, DOCX import: clean up not needed dmapper-level anchor insert

This was added in commit 1c99616f86f7d5b83b91edc225fc95fec227d710 (sw
floattable, crashtesting: fix PDF export of forum-mso-en3-26783.docx,
2023-05-02) to ensure that in case a floating table is not followed by a
text node, then inject one at a dmapper level.

Later commit 01ad8ec4bb5425446e95dbada81de435646824b4 (sw floattable:
fix lost tables around a floating table from DOCX, 2023-06-05) did the
same at a tokenizer level, as doing it in dmapper is too late in some
cases.

So keep the testcase from the first commit, but the changes to dmapper
can be dropped.

(cherry picked from commit 4c5438b2c447403194420b69311a81ea7d36e157)

Change-Id: If5b702d99e81a3f939491b7ff9de1128da765cbf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152694
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Andras Timar 

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx 
b/writerfilter/source/dmapper/DomainMapper.cxx
index 593cf813c3e3..c6a11e38b74a 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3164,17 +3164,6 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const 
PropertyMapPtr& rContext )
 break;
 case NS_ooxml::LN_tblStart:
 {
-if (m_pImpl->hasTableManager())
-{
-if (m_pImpl->getTableManager().IsFloating())
-{
-// We're starting a new table, but the previous table was 
floating. Insert a dummy
-// paragraph to ensure that the floating table is not anchored 
inside the next
-// table.
-finishParagraph();
-}
-}
-
 if (m_pImpl->hasTableManager())
 {
 bool bTableStartsAtCellStart = m_pImpl->m_nTableDepth > 0 && 
m_pImpl->m_nTableCellDepth > m_pImpl->m_nLastTableCellParagraphDepth + 1;
@@ -4756,15 +4745,6 @@ void DomainMapper::finishParagraph(const bool bRemove, 
const bool bNoNumbering)
 if (m_pImpl->m_pSdtHelper->getControlType() == SdtControlType::datePicker)
 m_pImpl->m_pSdtHelper->createDateContentControl();
 m_pImpl->finishParagraph(m_pImpl->GetTopContextOfType(CONTEXT_PARAGRAPH), 
bRemove, bNoNumbering);
-if (m_pImpl->m_nTableDepth == 0)
-{
-if (m_pImpl->hasTableManager())
-{
-// Non-table content, possibly after a table. Forget that such a 
previous table was
-// floating.
-m_pImpl->getTableManager().SetFloating(false);
-}
-}
 }
 
 void DomainMapper::commentProps(const OUString& sId, const CommentProperties& 
rProps)
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx 
b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index bf3c78dcebee..004f34971b6a 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -334,9 +334,6 @@ bool DomainMapperTableManager::sprm(Sprm & rSprm)
 break;
 case NS_ooxml::LN_CT_TblPrBase_tblpPr:
 {
-// Remember that this will be a floating table.
-m_bIsFloating = true;
-
 writerfilter::Reference::Pointer_t pProperties 
= rSprm.getProps();
 // Ignore  in shape text, those tables should be 
always non-floating ones.
 if (!m_bIsInShape && pProperties)
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.hxx 
b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
index 955ccfafc963..a2e492936b96 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.hxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.hxx
@@ -42,8 +42,6 @@ class DomainMapperTableManager : public TableManager
 sal_Int32   m_nTableWidth; //might be set directly or has to be 
calculated from the column positions
 /// Are we in a shape (text append stack is not empty) or in the body 
document?
 bool m_bIsInShape;
-/// Is the current table floating?
-bool m_bIsFloating = false;
 std::vector< OUString > m_aTableStyleNames;
 /// Moved table (in moveRangeFromStart...moveRangeFromEnd or 
moveRangeToStart...moveRangeToEnd)
 std::vector< OUString > m_aMoved;
@@ -167,9 +165,6 @@ public:
 return OUString();
 }
 
-bool IsFloating() const { return m_bIsFloating; }
-
-void 

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-05-18 Thread Miklos Vajna (via logerrit)
 writerfilter/source/dmapper/DomainMapper.cxx  |   10 
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   76 +-
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |4 
 writerfilter/source/dmapper/FontTable.cxx |   22 
 writerfilter/source/dmapper/FontTable.hxx |   10 
 writerfilter/source/dmapper/GraphicImport.cxx |  643 +++---
 writerfilter/source/dmapper/NumberingManager.cxx  |   12 
 writerfilter/source/dmapper/PropertyMap.cxx   |2 
 writerfilter/source/dmapper/StyleSheetTable.cxx   |  232 +++
 writerfilter/source/dmapper/StyleSheetTable.hxx   |   30 -
 10 files changed, 522 insertions(+), 519 deletions(-)

New commits:
commit ea16ea036fa9847ca65a951f483f3e25dfc9ec49
Author: Miklos Vajna 
AuthorDate: Mon Feb 20 08:13:50 2023 +0100
Commit: Justin Luth 
CommitDate: Fri May 19 03:23:04 2023 +0200

writerfilter: prefix members of DomainMapper_Impl, EmbeddedFontHandler, ...

...  GraphicImport_Impl and StyleSheetEntry

See tdf#94879 for motivation.

This cherry-picked cleanly from master except for
writerfilter/source/dmapper/GraphicImport.cxx
which had a couple of mstahl commits already merged.

So, the question is whether I go ahead with this full
cherry-pick, or do I just attempt to limit it
to StyleSheetTable and its dependencies.

If I do this, then any 7.6 commit BEFORE Mon Feb 20 08:13:50 2023
that still needs to be backported will run into trouble,
while now any commit AFTER that date will run into trouble.

Well, Collabora has made most of the changes to these files
in the past few months, so I assume most of those have
already been backported. A few made by allotropia have also
already been backported.

So, I think the best is to just go ahead and backport this
full commit. I need at least DomainMapper_Impl and
StyleSheetTable for my own purposes, so that already
counts for about half of it.

Change-Id: I83639c40fb8c32c1d205a9b53d24409f9a5a5a15
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147307
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151967
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Justin Luth 

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx 
b/writerfilter/source/dmapper/DomainMapper.cxx
index 28e3df63ca3c..ca6a3026f19c 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1788,7 +1788,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const 
PropertyMapPtr& rContext )
 if ( IsStyleSheetImport() )
 {
 const StyleSheetEntryPtr pCurrStyle = 
GetStyleSheetTable()->GetCurrentEntry();
-if ( pCurrStyle && pCurrStyle->nStyleTypeCode == 
STYLE_TYPE_CHAR )
+if ( pCurrStyle && pCurrStyle->m_nStyleTypeCode == 
STYLE_TYPE_CHAR )
 break;
 }
 
@@ -2512,7 +2512,7 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const 
PropertyMapPtr& rContext )
 
 // First check if the style exists in the document.
 StyleSheetEntryPtr pEntry = m_pImpl->GetStyleSheetTable( 
)->FindStyleSheetByConvertedStyleName( sConvertedName );
-bool bExists = pEntry && ( pEntry->nStyleTypeCode == 
STYLE_TYPE_CHAR );
+bool bExists = pEntry && ( pEntry->m_nStyleTypeCode == 
STYLE_TYPE_CHAR );
 // Add the property if the style exists, but do not add it 
elements in TOC:
 // they will receive later another style references from TOC
 if ( bExists && m_pImpl->GetTopContext() && !m_pImpl->IsInTOC())
@@ -3206,9 +3206,9 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, const 
PropertyMapPtr& rContext )
 if( !sStyleName.isEmpty() && GetStyleSheetTable() )
 pStyle = 
GetStyleSheetTable()->FindStyleSheetByConvertedStyleName( sStyleName );
 
-if( pStyle && pStyle->pProperties
-&& pStyle->pProperties->isSet(PROP_BREAK_TYPE)
-&& 
pStyle->pProperties->getProperty(PROP_BREAK_TYPE)->second == aBreakType )
+if( pStyle && pStyle->m_pProperties
+&& pStyle->m_pProperties->isSet(PROP_BREAK_TYPE)
+&& 
pStyle->m_pProperties->getProperty(PROP_BREAK_TYPE)->second == aBreakType )
 {
 pParagraphProps->Insert(PROP_BREAK_TYPE, aBreakType);
 }
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 26893126ff72..5f83bed4c58f 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -135,7 +135,7 @@ static void lcl_linenumberingHeaderFooter( const 
uno::ReferenceGetStyleSheetTable()->FindStyleSheetByISTD( rname );
 

[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-05-09 Thread Miklos Vajna (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit 13e4e251a7b19a2c8a638c205633a146806a9560
Author: Miklos Vajna 
AuthorDate: Mon May 8 12:08:01 2023 +0200
Commit: Miklos Vajna 
CommitDate: Tue May 9 23:51:09 2023 +0200

writerfilter: fix crash in DomainMapper_Impl::handleIndex()

Crashreport signature:

program/libwriterfilterlo.so
  
writerfilter::dmapper::DomainMapper_Impl::handleIndex(tools::SvRef
 const&, rtl::OUString const&)
  writerfilter/source/dmapper/DomainMapper_Impl.cxx:6116
program/libwriterfilterlo.so
  writerfilter::dmapper::DomainMapper_Impl::CloseFieldCommand()
  include/rtl/ustring.hxx:527
program/libwriterfilterlo.so
  writerfilter::dmapper::DomainMapper::lcl_text(unsigned char const*, 
unsigned long)
  writerfilter/source/dmapper/DomainMapper.cxx:3735
program/libwriterfilterlo.so
  writerfilter::rtftok::RTFDocumentImpl::singleChar(unsigned char, bool)
  writerfilter/source/rtftok/rtfdocumentimpl.hxx:718

Change-Id: I4e0f93ce50c8c9a1f9a1a0f9204bd4fee70cdde4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151502
Reviewed-by: Miklos Vajna 
Tested-by: Jenkins
(cherry picked from commit 1e75a434e349110990bcccd80b5c63c11080853e)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151512
Reviewed-by: Xisco Fauli 
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151556
Tested-by: Jenkins CollaboraOffice 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 7086a4329cc9..7f23452f92df 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -6628,7 +6628,10 @@ void DomainMapper_Impl::handleIndex
 {
 sValue = sValue.replaceAll("\"", "");
 uno::Reference xTextColumns;
-xTOC->getPropertyValue(getPropertyName( PROP_TEXT_COLUMNS )) >>= 
xTextColumns;
+if (xTOC.is())
+{
+xTOC->getPropertyValue(getPropertyName( PROP_TEXT_COLUMNS )) >>= 
xTextColumns;
+}
 if (xTextColumns.is())
 {
 xTextColumns->setColumnCount( sValue.toInt32() );


[Libreoffice-commits] core.git: Branch 'distro/collabora/co-23.05' - writerfilter/source

2023-05-05 Thread Jaume Pujantell (via logerrit)
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |8 +++-
 1 file changed, 7 insertions(+), 1 deletion(-)

New commits:
commit 1600181e74692714d844e7e51f411765895ea3de
Author: Jaume Pujantell 
AuthorDate: Thu Apr 27 14:54:55 2023 +0200
Commit: Justin Luth 
CommitDate: Fri May 5 12:56:49 2023 +0200

tdf#154478 fix comments empy after ToC

TOC creation entered a malformed state where it interfered with
the creation of other elements (e.g. annotations and textboxes).
This change is also a fix to tdf#154481, so the patch from
94de79e7d3c98 can be removed.

Change-Id: I423f9d048b8c5b89fd38229c4f3ad41213d5ab67
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151103
Tested-by: Jenkins
Reviewed-by: Ashod Nakashian 
(cherry picked from commit 5431b756d45bebe74beaba2026704552ee6891f0)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151281
Tested-by: Jenkins CollaboraOffice 
Reviewed-by: Justin Luth 

diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx 
b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index bb8ac11129b3..7086a4329cc9 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -6539,7 +6539,13 @@ uno::Reference 
DomainMapper_Impl::createSectionForRange(
 if (stepLeft)
 xCursor->goLeft(1, true);
 uno::Reference< text::XTextContent > xSection( 
m_xTextFactory->createInstance(sObjectType), uno::UNO_QUERY_THROW );
-xSection->attach( uno::Reference< text::XTextRange >( xCursor, 
uno::UNO_QUERY_THROW) );
+try
+{
+xSection->attach( uno::Reference< text::XTextRange >( xCursor, 
uno::UNO_QUERY_THROW) );
+}
+catch(const uno::Exception&)
+{
+}
 xRet.set(xSection, uno::UNO_QUERY );
 }
 catch(const uno::Exception&)