editeng/source/editeng/editeng.cxx | 6 ++++++ editeng/source/editeng/impedit.hxx | 2 ++ editeng/source/editeng/impedit4.cxx | 8 ++++++++ editeng/source/outliner/outliner.cxx | 13 ++++++++++--- include/editeng/editeng.hxx | 2 ++ svx/source/svdraw/svdotxed.cxx | 2 +- 6 files changed, 29 insertions(+), 4 deletions(-)
New commits: commit 764d0fdb8ff6069b2486d5a52b8a01b300cb20e5 Author: matteocam <[email protected]> Date: Wed Sep 3 22:47:10 2014 +0200 First para-s overflowing are chained correctly: no more null text obj-s Change-Id: If496de707743b9ac69cb7c440662ac7d4200b456 diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 9e6f25d..35e6515 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -1494,6 +1494,12 @@ EditTextObject* EditEngine::CreateTextObject( const ESelection& rESelection ) return pImpEditEngine->CreateTextObject( aSel ); } +EditTextObject* EditEngine::GetEmptyTextObject() const +{ + return pImpEditEngine->GetEmptyTextObject(); +} + + void EditEngine::SetText( const EditTextObject& rTextObject ) { pImpEditEngine->EnterBlockNotifications(); diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index e8ede1b..559a1dd 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -534,6 +534,8 @@ private: void ParaAttribsToCharAttribs( ContentNode* pNode ); void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const; + EditTextObject* GetEmptyTextObject(); + EditTextObject* CreateTextObject( EditSelection aSelection, SfxItemPool*, bool bAllowBigObjects = false, sal_Int32 nBigObjStart = 0 ); EditSelection InsertTextObject( const EditTextObject&, EditPaM aPaM ); EditSelection InsertText( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxDataObj, const OUString& rBaseURL, const EditPaM& rPaM, bool bUseSpecial ); diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx index 77827e4..ebfc4a9 100644 --- a/editeng/source/editeng/impedit4.cxx +++ b/editeng/source/editeng/impedit4.cxx @@ -991,6 +991,14 @@ sal_uInt32 ImpEditEngine::WriteHTML( SvStream&, EditSelection ) return 0; } +EditTextObject* ImpEditEngine::GetEmptyTextObject() +{ + EditSelection aEmptySel; + aEmptySel.Min() = aEditDoc.GetStartPaM(); + aEmptySel.Max() = aEditDoc.GetStartPaM(); + + return CreateTextObject( aEmptySel ); +} EditTextObject* ImpEditEngine::CreateTextObject() { diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index 38f66f2..52a0f18 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -2112,9 +2112,16 @@ OutlinerParaObject *Outliner::GetNonOverflowingParaObject() const return NULL; } - if ( nCount == 0 ) // Only overflowing text - return NULL; - else if (nCount < 0) // No overflowing Text + if ( nCount == 0 ) // Only overflowing text, i.e. 1st paragraph overflowing + { + EditTextObject *pEmptyText = pEditEngine->GetEmptyTextObject(); + OutlinerParaObject* pPObj = new OutlinerParaObject( *pEmptyText ); + pPObj->SetOutlinerMode(GetMode()); + + delete pEmptyText; + return pPObj; + + } else if (nCount < 0) // No overflowing Text nCount = GetParagraphCount(); // code inspired from Outliner::CreateParaObject diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index 7bd1656..dda4e29 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -290,6 +290,8 @@ public: EditTextObject* CreateTextObject( const ESelection& rESelection ); void SetText( const EditTextObject& rTextObject ); + EditTextObject* GetEmptyTextObject() const; + void RemoveParagraph(sal_Int32 nPara); void InsertParagraph(sal_Int32 nPara, const EditTextObject& rTxtObj); void InsertParagraph(sal_Int32 nPara, const OUString& rText); diff --git a/svx/source/svdraw/svdotxed.cxx b/svx/source/svdraw/svdotxed.cxx index 5ca8a05..840fbe3 100644 --- a/svx/source/svdraw/svdotxed.cxx +++ b/svx/source/svdraw/svdotxed.cxx @@ -277,7 +277,7 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl) if ( IsToBeChained() && GetNextLinkInChain() != this) // XXX: defensive check { // set non overflow part of text to current box - pNewText = rOutl.GetNonOverflowingParaObject(); + pNewText = rOutl.GetNonOverflowingParaObject(); // empty text obj. if 1st para is overflowing // set overflowing text for SdrChainedTextPrimitive2D pNextText = rOutl.GetOverflowingParaObject(); mpOverflowingText = pNextText; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
