[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - editeng/source include/editeng svx/source
matteocam
matteo.campanelli at gmail.com
Wed Sep 3 13:47:59 PDT 2014
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 <matteo.campanelli at gmail.com>
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;
More information about the Libreoffice-commits
mailing list