[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - editeng/source include/editeng include/svx svx/source
matteocam
matteo.campanelli at gmail.com
Mon Jul 13 09:33:35 PDT 2015
editeng/source/outliner/overflowingtxt.cxx | 9 +++++--
include/editeng/overflowingtxt.hxx | 8 +++++-
include/svx/textchainflow.hxx | 2 -
svx/source/svdraw/textchainflow.cxx | 34 +++++++++++++++++------------
4 files changed, 33 insertions(+), 20 deletions(-)
New commits:
commit 0c01a319097cc79e3860d1ac3d760de912bbe887
Author: matteocam <matteo.campanelli at gmail.com>
Date: Mon Jul 13 12:32:43 2015 -0400
Move logic for para merging to editeng
Change-Id: I10ed532d8a42dbcb2f4c5aaa52f1848dde6745e6
diff --git a/editeng/source/outliner/overflowingtxt.cxx b/editeng/source/outliner/overflowingtxt.cxx
index 45e8f51..eb6bfe5 100644
--- a/editeng/source/outliner/overflowingtxt.cxx
+++ b/editeng/source/outliner/overflowingtxt.cxx
@@ -111,10 +111,12 @@ OutlinerParaObject *OverflowingText::GetJuxtaposedParaObject(Outliner *pOutl, Ou
// class OFlowChainedText
-OFlowChainedText::OFlowChainedText(Outliner *pOutl)
+OFlowChainedText::OFlowChainedText(Outliner *pOutl, bool bIsDeepMerge)
{
mpOverflowingTxt = pOutl->GetOverflowingText();
mpNonOverflowingTxt = pOutl->GetNonOverflowingText();
+
+ mbIsDeepMerge = bIsDeepMerge;
}
ESelection OFlowChainedText::GetInsertionPointSel() const
@@ -129,7 +131,7 @@ ESelection OFlowChainedText::GetOverflowPointSel() const
OutlinerParaObject *OFlowChainedText::CreateOverflowingParaObject(Outliner *pOutliner, OutlinerParaObject *pTextToBeMerged)
{
- // Just return the roughly merged paras fpr now
+ // Just return the roughly merged paras for now
if (mpOverflowingTxt == NULL || pTextToBeMerged == NULL)
return NULL;
@@ -152,9 +154,10 @@ bool OFlowChainedText::IsLastParaInterrupted() const
// classes UFlowChainedText
-UFlowChainedText::UFlowChainedText(Outliner *pOutl)
+UFlowChainedText::UFlowChainedText(Outliner *pOutl, bool bIsDeepMerge)
{
mpUnderflowPObj = pOutl->CreateParaObject();
+ mbIsDeepMerge = bIsDeepMerge;
}
OutlinerParaObject *UFlowChainedText::CreateMergedUnderflowParaObject(Outliner *pOutl, OutlinerParaObject *pNextLinkWholeText)
diff --git a/include/editeng/overflowingtxt.hxx b/include/editeng/overflowingtxt.hxx
index 2f63cea..345daa8 100644
--- a/include/editeng/overflowingtxt.hxx
+++ b/include/editeng/overflowingtxt.hxx
@@ -81,7 +81,7 @@ private:
class EDITENG_DLLPUBLIC OFlowChainedText {
public:
- OFlowChainedText(Outliner *);
+ OFlowChainedText(Outliner *, bool );
OutlinerParaObject *CreateOverflowingParaObject(Outliner *, OutlinerParaObject *);
OutlinerParaObject *CreateNonOverflowingParaObject(Outliner *);
@@ -99,18 +99,22 @@ class EDITENG_DLLPUBLIC OFlowChainedText {
NonOverflowingText *mpNonOverflowingTxt;
OverflowingText *mpOverflowingTxt;
+ bool mbIsDeepMerge;
+
};
// UFlowChainedText is a simpler class than OFlowChainedText: it almost only joins para-objects
class EDITENG_DLLPUBLIC UFlowChainedText {
public:
- UFlowChainedText(Outliner *);
+ UFlowChainedText(Outliner *, bool);
OutlinerParaObject *CreateMergedUnderflowParaObject(Outliner *, OutlinerParaObject *);
protected:
private:
OutlinerParaObject *mpUnderflowPObj;
+
+ bool mbIsDeepMerge;
};
#endif
diff --git a/include/svx/textchainflow.hxx b/include/svx/textchainflow.hxx
index 8e8ad62..f96ce59 100644
--- a/include/svx/textchainflow.hxx
+++ b/include/svx/textchainflow.hxx
@@ -104,8 +104,6 @@ class TextChainFlow {
OFlowChainedText *mpOverflChText;
UFlowChainedText *mpUnderflChText;
- bool mbMustMergeParaAmongLinks;
-
};
diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx
index 50bddb5..57147d3 100644
--- a/svx/source/svdraw/textchainflow.cxx
+++ b/svx/source/svdraw/textchainflow.cxx
@@ -41,7 +41,6 @@ TextChainFlow::TextChainFlow(SdrTextObj *pChainTarget)
maCursorEvent = CursorChainingEvent::NULL_EVENT;
mbPossiblyCursorOut = false;
- mbMustMergeParaAmongLinks = false;
}
@@ -90,11 +89,26 @@ void TextChainFlow::impCheckForFlowEvents(SdrOutliner *pFlowOutl, SdrOutliner *p
pFlowOutl->SetUpdateMode(bOldUpdateMode);
}
+ // Get old state on whether to merge para-s or not
+ // NOTE: We handle UF/OF using the _old_ state. The new one is simply saved
+ bool bMustMergeParaAmongLinks = GetTextChain()->GetIsPartOfLastParaInNextLink(mpTargetLink);
+
// Set (Non)OverflowingTxt here (if any)
- mpOverflChText = bOverflow ? new OFlowChainedText(pFlowOutl) : NULL;
+ mpOverflChText = bOverflow ? new OFlowChainedText(pFlowOutl, bMustMergeParaAmongLinks) : NULL;
// Set current underflowing text (if any)
- mpUnderflChText = bUnderflow ? new UFlowChainedText(pFlowOutl) : NULL;
+ mpUnderflChText = bUnderflow ? new UFlowChainedText(pFlowOutl, bMustMergeParaAmongLinks) : NULL;
+
+ // update new state on paragraph merging
+ if (bOverflow) {
+ GetTextChain()->SetIsPartOfLastParaInNextLink(
+ mpTargetLink,
+ mpOverflChText->IsLastParaInterrupted());
+ } else { // Overflows determine merging or not. If no OF, just merge everything next time.
+ GetTextChain()->SetIsPartOfLastParaInNextLink(
+ mpTargetLink,
+ true);
+ }
// NOTE: Must be called after mp*ChText abd b*flow have been set but before mbOFisUFinduced is reset
impUpdateCursorInfo();
@@ -102,13 +116,7 @@ void TextChainFlow::impCheckForFlowEvents(SdrOutliner *pFlowOutl, SdrOutliner *p
// To check whether an overflow is underflow induced or not (useful in cursor checking)
mbOFisUFinduced = bUnderflow;
- // Save old state and update new
- mbMustMergeParaAmongLinks = GetTextChain()->GetIsPartOfLastParaInNextLink(mpTargetLink);
- if (bOverflow)
- GetTextChain()->SetIsPartOfLastParaInNextLink(mpTargetLink, mpOverflChText->IsLastParaInterrupted());
- else // Overflows determine merging or not. If no OF, just merge everything next time.
- GetTextChain()->SetIsPartOfLastParaInNextLink(mpTargetLink, true);
}
@@ -212,7 +220,7 @@ void TextChainFlow::impMoveChainedTextToNextLink(SdrOutliner *pOverflOutl)
OutlinerParaObject *TextChainFlow::impGetNonOverflowingParaObject(SdrOutliner *pOutliner)
{
- return mpOverflChText->CreateNonOverflowingParaObject(pOutliner);
+ return mpOverflChText->CreateNonOverflowingParaObject(pOutliner);
}
SdrTextObj *TextChainFlow::GetLinkTarget() const
@@ -227,13 +235,13 @@ SdrTextObj *TextChainFlow::GetNextLink() const
OutlinerParaObject *TextChainFlow::impGetOverflowingParaObject(SdrOutliner *pOutliner)
{
- return mpOverflChText->CreateOverflowingParaObject(pOutliner, mpNextLink->GetOutlinerParaObject());
+ return mpOverflChText->CreateOverflowingParaObject(pOutliner,
+ mpNextLink->GetOutlinerParaObject());
}
OutlinerParaObject *TextChainFlow::impGetMergedUnderflowParaObject(SdrOutliner *pOutliner)
{
- // Should check whether to merge paragraphs or not
- return mpUnderflChText->CreateMergedUnderflowParaObject(pOutliner, mpNextLink->GetOutlinerParaObject());
+ return mpUnderflChText->CreateMergedUnderflowParaObject(pOutliner, mpNextLink->GetOutlinerParaObject());
}
TextChain *TextChainFlow::GetTextChain() const
More information about the Libreoffice-commits
mailing list