sw/inc/ndtxt.hxx | 3 +++ sw/source/core/text/txtfld.cxx | 23 ++++++++++++++++++++++- sw/source/core/txtnode/thints.cxx | 7 +++---- 3 files changed, 28 insertions(+), 5 deletions(-)
New commits: commit 54eb3d31b7be999468f1ae54a99730a8c739a22d Author: Miklos Vajna <[email protected]> Date: Thu Nov 20 11:02:45 2014 +0100 fdo#79810: SwTxtNode::IsIgnoredCharFmtForNumbering: ignore RES_CHRATR_COLOR And also in SwTxtFormatter::NewNumberPortion(), use SwTxtNode::IsIgnoredCharFmtForNumbering(), via checkApplyParagraphMarkFormatToNumbering(). Otherwise the color of the paragraph mark is inherited by the numbering portion, which is not what IDocumentSettingAccess::APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING (mirroring Word's behavior) is supposed to do. (cherry picked from commit b2c1474c1dc93b69f0ede03fc5c9ab496c669955) Signed-off-by: Michael Stahl <[email protected]> This fixes regression fdo#79810. Conflicts: sw/qa/extras/ooxmlexport/data/num-override-lvltext.docx sw/qa/extras/ooxmlexport/ooxmlexport.cxx sw/source/core/text/txtfld.cxx Change-Id: I5d8df9b404916cc4a4405bf796d971ede59e6111 diff --git a/sw/source/core/text/txtfld.cxx b/sw/source/core/text/txtfld.cxx index 4f39e52..9bbd455 100644 --- a/sw/source/core/text/txtfld.cxx +++ b/sw/source/core/text/txtfld.cxx @@ -51,6 +51,7 @@ #include "reffld.hxx" #include "flddat.hxx" #include "fmtautofmt.hxx" +#include <svl/itemiter.hxx> static bool lcl_IsInBody( SwFrm *pFrm ) { @@ -421,7 +422,27 @@ static void checkApplyParagraphMarkFormatToNumbering( SwFont* pNumFnt, SwTxtForm && *hint->GetStart() == *hint->GetEnd() && *hint->GetStart() == node->Len()) { boost::shared_ptr<SfxItemSet> pSet(hint->GetAutoFmt().GetStyleHandle()); - pNumFnt->SetDiffFnt( pSet.get(), pIDSA ); + + // Check each item and in case it should be ignored, then clear it. + boost::shared_ptr<SfxItemSet> pCleanedSet; + if (pSet.get()) + { + pCleanedSet.reset(pSet->Clone()); + + SfxItemIter aIter(*pSet); + const SfxPoolItem* pItem = aIter.GetCurItem(); + while (true) + { + if (SwTxtNode::IsIgnoredCharFmtForNumbering(pItem->Which())) + pCleanedSet->ClearItem(pItem->Which()); + + if (aIter.IsAtEnd()) + break; + + pItem = aIter.NextItem(); + } + } + pNumFnt->SetDiffFnt(pCleanedSet.get(), pIDSA); } } } diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx index f680282..5dc8df8 100644 --- a/sw/source/core/txtnode/thints.cxx +++ b/sw/source/core/txtnode/thints.cxx @@ -1763,7 +1763,7 @@ void SwTxtNode::DelSoftHyph( const sal_Int32 nStt, const sal_Int32 nEnd ) bool SwTxtNode::IsIgnoredCharFmtForNumbering(const sal_uInt16 nWhich) { - return (nWhich == RES_CHRATR_UNDERLINE || nWhich == RES_CHRATR_BACKGROUND || nWhich == RES_CHRATR_ESCAPEMENT); + return (nWhich == RES_CHRATR_UNDERLINE || nWhich == RES_CHRATR_COLOR || nWhich == RES_CHRATR_BACKGROUND || nWhich == RES_CHRATR_ESCAPEMENT); } //In MS Word, following properties of the paragraph end position wont affect the formatting of bullets, so we ignore them: commit 01c4588fdad04c45d239afb3136b82f72fdd1c80 Author: Miklos Vajna <[email protected]> Date: Thu Nov 20 09:54:15 2014 +0100 sw: move IsIgnoredCharFmtForNumbering() to SwTxtNode I need this in SwTxtFormatter. (cherry picked from commit 96664bf0152ecf8ee64aa6b22ed399c1866117f1) Signed-off-by: Michael Stahl <[email protected]> Conflicts: sw/inc/ndtxt.hxx Change-Id: Ib1586299f468a88e92fdb367fbab69a683791dc9 diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index b7af846..72a1a3d 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -797,6 +797,9 @@ public: bool CompareParRsid( const SwTxtNode &rTxtNode ) const; DECL_FIXEDMEMPOOL_NEWDEL(SwTxtNode) + + /// In MS Word, the font underline setting of the paragraph end position wont affect the formatting of numbering, so we ignore it + static bool IsIgnoredCharFmtForNumbering(const sal_uInt16 nWhich); }; inline SwpHints & SwTxtNode::GetSwpHints() diff --git a/sw/source/core/txtnode/thints.cxx b/sw/source/core/txtnode/thints.cxx index 4932195..f680282 100644 --- a/sw/source/core/txtnode/thints.cxx +++ b/sw/source/core/txtnode/thints.cxx @@ -1761,8 +1761,7 @@ void SwTxtNode::DelSoftHyph( const sal_Int32 nStt, const sal_Int32 nEnd ) } } -//In MS Word, the font underline setting of the paragraph end position wont affect the formatting of numbering, so we ignore it -bool lcl_IsIgnoredCharFmtForNumbering(const sal_uInt16 nWhich) +bool SwTxtNode::IsIgnoredCharFmtForNumbering(const sal_uInt16 nWhich) { return (nWhich == RES_CHRATR_UNDERLINE || nWhich == RES_CHRATR_BACKGROUND || nWhich == RES_CHRATR_ESCAPEMENT); } @@ -1812,7 +1811,7 @@ bool SwTxtNode::TryCharSetExpandToNum(const SfxItemSet& aCharSet) { if (pCurrNumFmt->IsItemize() && lcl_IsIgnoredCharFmtForBullets(nWhich)) return bRet; - if (pCurrNumFmt->IsEnumeration() && lcl_IsIgnoredCharFmtForNumbering(nWhich)) + if (pCurrNumFmt->IsEnumeration() && SwTxtNode::IsIgnoredCharFmtForNumbering(nWhich)) return bRet; SwCharFmt* pCurrCharFmt =pCurrNumFmt->GetCharFmt(); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
