Kaydet (Commit) 30484103 authored tarafından Caolán McNamara's avatar Caolán McNamara Kaydeden (comit) Andras Timar

if read string was truncated, then truncate attributes range to match

Change-Id: I3501d31e0310481a5872e537bf53ad2faaf25779
(cherry picked from commit 6071feec)
Reviewed-on: https://gerrit.libreoffice.org/17907Reviewed-by: 's avatarDavid Tardon <dtardon@redhat.com>
Tested-by: 's avatarDavid Tardon <dtardon@redhat.com>
üst 4308702e
This diff was suppressed by a .gitattributes entry.
...@@ -865,7 +865,7 @@ bool SwWW8ImplReader::GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp, ...@@ -865,7 +865,7 @@ bool SwWW8ImplReader::GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp,
// TxbxText() holt aus WW-File den Text und gibt diesen und den Anfangs- und // TxbxText() holt aus WW-File den Text und gibt diesen und den Anfangs- und
// den um -2 (bzw. -1 bei Ver8) korrigierten End-Cp zurueck // den um -2 (bzw. -1 bei Ver8) korrigierten End-Cp zurueck
bool SwWW8ImplReader::GetRangeAsDrawingString(OUString& rString, long nStartCp, long nEndCp, ManTypes eType) sal_Int32 SwWW8ImplReader::GetRangeAsDrawingString(OUString& rString, long nStartCp, long nEndCp, ManTypes eType)
{ {
WW8_CP nOffset = m_pWwFib->GetBaseCp(eType); WW8_CP nOffset = m_pWwFib->GetBaseCp(eType);
...@@ -884,23 +884,24 @@ bool SwWW8ImplReader::GetRangeAsDrawingString(OUString& rString, long nStartCp, ...@@ -884,23 +884,24 @@ bool SwWW8ImplReader::GetRangeAsDrawingString(OUString& rString, long nStartCp,
rString = rString.copy(0, nLen-1); rString = rString.copy(0, nLen-1);
rString = rString.replace( 0xb, 0xa ); rString = rString.replace( 0xb, 0xa );
return true; return nLen;
} }
} }
return false; return 0;
} }
OutlinerParaObject* SwWW8ImplReader::ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType) OutlinerParaObject* SwWW8ImplReader::ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType)
{ {
OutlinerParaObject* pRet = 0; OutlinerParaObject* pRet = 0;
if (GetRangeAsDrawingString( rString, nStartCp, nEndCp, eType )) sal_Int32 nLen = GetRangeAsDrawingString(rString, nStartCp, nEndCp, eType);
if (nLen > 0)
{ {
if (!m_pDrawEditEngine) if (!m_pDrawEditEngine)
m_pDrawEditEngine = new EditEngine(0); m_pDrawEditEngine = new EditEngine(0);
m_pDrawEditEngine->SetText(rString); m_pDrawEditEngine->SetText(rString);
InsertAttrsAsDrawingAttrs(nStartCp, nEndCp, eType); InsertAttrsAsDrawingAttrs(nStartCp, nStartCp+nLen, eType);
// Annotations typically begin with a (useless) 0x5 // Annotations typically begin with a (useless) 0x5
if ((eType == MAN_AND) && m_pDrawEditEngine->GetTextLen()) if ((eType == MAN_AND) && m_pDrawEditEngine->GetTextLen())
...@@ -950,8 +951,8 @@ SwFrameFormat* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj, ...@@ -950,8 +951,8 @@ SwFrameFormat* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
OUString aString; OUString aString;
WW8_CP nStartCp, nEndCp; WW8_CP nStartCp, nEndCp;
bool bContainsGraphics = false; bool bContainsGraphics = false;
bool bTextWasRead = GetTxbxTextSttEndCp( nStartCp, nEndCp, nTxBxS, bool bTextWasRead = GetTxbxTextSttEndCp(nStartCp, nEndCp, nTxBxS, nSequence) &&
nSequence ) && GetRangeAsDrawingString( aString, nStartCp, nEndCp, eType ); GetRangeAsDrawingString(aString, nStartCp, nEndCp, eType) > 0;
if (!m_pDrawEditEngine) if (!m_pDrawEditEngine)
m_pDrawEditEngine = new EditEngine(0); m_pDrawEditEngine = new EditEngine(0);
......
...@@ -1585,7 +1585,7 @@ private: ...@@ -1585,7 +1585,7 @@ private:
bool GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp, sal_uInt16 nTxBxS, bool GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp, sal_uInt16 nTxBxS,
sal_uInt16 nSequence); sal_uInt16 nSequence);
bool GetRangeAsDrawingString(OUString& rString, long StartCp, long nEndCp, ManTypes eType); sal_Int32 GetRangeAsDrawingString(OUString& rString, long StartCp, long nEndCp, ManTypes eType);
OutlinerParaObject* ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType); OutlinerParaObject* ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType);
SwFrameFormat* InsertTxbxText(SdrTextObj* pTextObj, Size* pObjSiz, SwFrameFormat* InsertTxbxText(SdrTextObj* pTextObj, Size* pObjSiz,
sal_uInt16 nTxBxS, sal_uInt16 nSequence, long nPosCp, SwFrameFormat* pFlyFormat, sal_uInt16 nTxBxS, sal_uInt16 nSequence, long nPosCp, SwFrameFormat* pFlyFormat,
......
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