Kaydet (Commit) fb171e38 authored tarafından Bjoern Michaelsen's avatar Bjoern Michaelsen

add second Restore function for CntntIdxStore

Change-Id: I2d4c92d0927bce13b03a6f235e14812ed1d0bd54
üst 64c31cc7
......@@ -2083,12 +2083,14 @@ namespace
}
virtual void Restore(SwNode& rNd, sal_Int32 nLen, sal_Int32 nCorrLen) SAL_OVERRIDE
{
RestoreBkmksLen(rNd, nLen, nCorrLen);
return _RestoreCntntIdx(m_aSaveArr, rNd, nLen, nCorrLen);
}
virtual ~CntntIdxStoreImpl(){};
private:
inline void SaveBkmks(SwDoc* pDoc, sal_uLong nNode, sal_Int32 nCntnt);
inline void RestoreBkmks(SwDoc* pDoc, sal_uLong nNode, sal_Int32 nOffset);
inline void RestoreBkmksLen(SwNode& rNd, sal_uLong nLen, sal_Int32 nCorrLen);
};
}
......@@ -2161,6 +2163,42 @@ void CntntIdxStoreImpl::RestoreBkmks(SwDoc* pDoc, sal_uLong nNode, sal_Int32 nOf
}
}
void CntntIdxStoreImpl::RestoreBkmksLen(SwNode& rNd, sal_uLong nLen, sal_Int32 nCorrLen)
{
const SwDoc* pDoc = rNd.GetDoc();
IDocumentMarkAccess* const pMarkAccess = const_cast<IDocumentMarkAccess*>(pDoc->getIDocumentMarkAccess());
SwCntntNode* pCNd = (SwCntntNode*)rNd.GetCntntNode();
for(
std::vector<BkmkEntry>::const_iterator pEntry = m_aBkmkEntries.begin();
pEntry != m_aBkmkEntries.end();
++pEntry)
{
if( !pEntry->m_nCntnt >= nCorrLen )
{
if(pEntry->m_bOther)
{
if (MarkBase* pMark = dynamic_cast<MarkBase*>(pMarkAccess->getAllMarksBegin()[pEntry->m_nBkmkIdx].get()))
{
SwPosition aNewPos(pMark->GetOtherMarkPos());
aNewPos.nNode = *pCNd;
aNewPos.nContent.Assign(pCNd, ::std::min(pEntry->m_nCntnt, static_cast<sal_Int32>(nLen)));
pMark->SetOtherMarkPos(aNewPos);
}
}
else
{
if (MarkBase* pMark = dynamic_cast<MarkBase*>(pMarkAccess->getAllMarksBegin()[pEntry->m_nBkmkIdx].get()))
{
SwPosition aNewPos(pMark->GetMarkPos());
aNewPos.nNode = *pCNd;
aNewPos.nContent.Assign(pCNd, ::std::min(pEntry->m_nCntnt, static_cast<sal_Int32>(nLen)));
pMark->SetMarkPos(aNewPos);
}
}
}
}
}
namespace sw { namespace mark {
boost::shared_ptr<CntntIdxStore> CntntIdxStore::Create()
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment