[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - 3 commits - include/svx svx/source
matteocam
matteo.campanelli at gmail.com
Fri Jul 10 13:18:52 PDT 2015
include/svx/svdotext.hxx | 2 +-
svx/source/svdraw/svdedxv.cxx | 5 +++++
svx/source/svdraw/svdotext.cxx | 31 +++++++++++++++++--------------
svx/source/svdraw/textchainflow.cxx | 6 ++++++
4 files changed, 29 insertions(+), 15 deletions(-)
New commits:
commit 9ea78c59302bc8b7451aa886e8894610c9c34140
Author: matteocam <matteo.campanelli at gmail.com>
Date: Fri Jul 10 16:17:58 2015 -0400
Fixed some errors and removed recursive static drawing
Change-Id: I8098dbed7a711b4dad31add1e2ec76d163d0d371
diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx
index ceeb633..4ab6313 100644
--- a/include/svx/svdotext.hxx
+++ b/include/svx/svdotext.hxx
@@ -367,7 +367,7 @@ public:
// Chaining
bool IsToBeChained() const;
SdrTextObj *GetNextLinkInChain() const;
- bool IsChainable() const { return GetNextLinkInChain() != NULL; }
+ bool IsChainable() const;
void SetPreventChainable();
bool GetPreventChainable() const;
TextChain *GetTextChain() const;
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 80bd5ff..3abebed 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -491,6 +491,11 @@ IMPL_LINK_NOARG(SdrObjEditView,ImpChainingEventHdl)
if( pTextObj && pOLV)
{
TextChain *pTextChain = pTextObj->GetTextChain();
+
+ // XXX: IsChainable and GetNilChainingEvent are a bit mixed up atm
+ if (!pTextObj->IsChainable()) {
+ return 0;
+ }
// This is true during an underflow-caused overflow (with pEdtOutl->SetText())
if (pTextChain->GetNilChainingEvent(pTextObj)) {
return 0;
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index afa40df..567afd9 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -1566,8 +1566,8 @@ void SdrTextObj::SetToBeChained(bool bToBeChained)
TextChain *SdrTextObj::GetTextChain() const
{
- if (!IsChainable())
- return NULL;
+ //if (!IsChainable())
+ // return NULL;
return pModel->GetTextChain();
}
@@ -1984,11 +1984,23 @@ void SdrTextObj::onEditOutlinerStatusEvent( EditStatus* pEditStatus )
}
}
-void SdrTextObj::onChainingEvent()
+bool SdrTextObj::IsChainable() const
{
- if (!IsChainable() || GetNextLinkInChain() == NULL)
- return;
+ if (!GetName().startsWith("Chainable")) {
+ fprintf(stderr, "[CHAINABLE?] %p is _not_ chainable\n", this);
+ return false;
+ }
+ // Check that no overflow is going on
+ if (!GetTextChain() || GetTextChain()->GetNilChainingEvent(this))
+ return false;
+
+ return true;
+
+}
+
+void SdrTextObj::onChainingEvent()
+{
if (!pEdtOutl)
return;
@@ -2073,17 +2085,8 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const
/* FIXME(matteocam) return mpNextInChain; */
SdrTextObj *pNextTextObj = NULL;
- // Check that no overflow is going on // XXX: This should be moved in IsChainable
- if (GetTextChain()->GetNilChainingEvent(this))
- return NULL;
-
if ( pPage && pPage->GetObjCount() > 1) {
- if (!GetName().startsWith("Chainable")) {
- fprintf(stderr, "[CHAINABLE?] %p is _not_ chainable\n", this);
- return NULL;
- }
-
sal_uInt32 nextIndex = (GetOrdNum()+1);
if (nextIndex < pPage->GetObjCount())
diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx
index c7531f1..8907e3a 100644
--- a/svx/source/svdraw/textchainflow.cxx
+++ b/svx/source/svdraw/textchainflow.cxx
@@ -145,8 +145,14 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
if (!mpTargetLink->GetPreventChainable())
mpNextLink->NbcSetOutlinerParaObject(pOutl->GetEmptyParaObject());
+ // We store the size since NbcSetOutlinerParaObject can change it
+ Size aOldSize = pOutl->GetMaxAutoPaperSize();
+
mpTargetLink->NbcSetOutlinerParaObject(pNewText);
+ pOutl->SetMaxAutoPaperSize(aOldSize);
+ pOutl->SetText(*pNewText);
+
//GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
// Check for new overflow
commit cbd8c9dcfd45329cc7afa0b5e17f6363e2254d3f
Author: matteocam <matteo.campanelli at gmail.com>
Date: Fri Jul 10 13:36:50 2015 -0400
Revert "Revert "Prevent multiple chaining events for static text""
This reverts commit f2497029a458b6f33e62776c09f23227c7b3407d.
diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx
index 69b197e..6a70c8b 100644
--- a/include/svx/textchain.hxx
+++ b/include/svx/textchain.hxx
@@ -53,15 +53,15 @@
a##PropName = (PropDefault);
#define DECL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType Get##PropName (SdrTextObj *); \
- void Set##PropName (SdrTextObj *, PropType);
+ PropType Get##PropName (const SdrTextObj *); \
+ void Set##PropName (const SdrTextObj *, PropType);
#define IMPL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType TextChain::Get##PropName (SdrTextObj *pTarget) { \
+ PropType TextChain::Get##PropName (const SdrTextObj *pTarget) { \
ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
return pLinkProperties->a##PropName; \
} \
- void TextChain::Set##PropName (SdrTextObj *pTarget, PropType aPropParam) \
+ void TextChain::Set##PropName (const SdrTextObj *pTarget, PropType aPropParam) \
{ \
ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
pLinkProperties->a##PropName = aPropParam; \
@@ -139,8 +139,8 @@ class TextChain {
bool IsLinkInChain(SdrTextObj *) const;
SdrTextObj *GetNextLink(SdrTextObj *) const;
- ChainLinkId GetId(SdrTextObj *) const;
- ImpChainLinkProperties *GetLinkProperties(SdrTextObj *);
+ ChainLinkId GetId(const SdrTextObj *) const;
+ ImpChainLinkProperties *GetLinkProperties(const SdrTextObj *);
// Specific Link Properties
DECL_CHAIN_PROP_INTERFACE(CursorEvent, CursorChainingEvent)
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 5e00942..80bd5ff 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -497,7 +497,7 @@ IMPL_LINK_NOARG(SdrObjEditView,ImpChainingEventHdl)
}
// We prevent to trigger further handling of overflow/underflow for pTextObj
- pTextChain->SetNilChainingEvent(pTextObj, true);
+ pTextChain->SetNilChainingEvent(pTextObj, true); // XXX
// Save previous selection pos // NOTE: It must be done to have the right CursorEvent in KeyInput
pTextChain->SetPreChainingSel(pTextObj, pOLV->GetSelection());
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 0a33fa4..afa40df 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -2073,6 +2073,10 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const
/* FIXME(matteocam) return mpNextInChain; */
SdrTextObj *pNextTextObj = NULL;
+ // Check that no overflow is going on // XXX: This should be moved in IsChainable
+ if (GetTextChain()->GetNilChainingEvent(this))
+ return NULL;
+
if ( pPage && pPage->GetObjCount() > 1) {
if (!GetName().startsWith("Chainable")) {
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 954f261..241ec8b 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -1490,6 +1490,7 @@ void SdrTextObj::impDecomposeChainedTextPrimitive(
// We need the outliner we get the overflow info from as well as
// the outliner for "drawing" (e.g. a drawing or chaining outliner)
// maybe the latter ones can be passed at the time of overflow and such
+ GetTextChain()->SetNilChainingEvent(this, true);
TextChainFlow aTxtChainFlow(const_cast<SdrTextObj*>(this));
bool bIsOverflow;
@@ -1514,6 +1515,8 @@ void SdrTextObj::impDecomposeChainedTextPrimitive(
aTxtChainFlow.ExecuteOverflow(&rOutliner, &rChainingOutl);
}
+ GetTextChain()->SetNilChainingEvent(this, false);
+
/* End overflow/underflow handling */
// set visualizing page at Outliner; needed e.g. for PageNumberField decomposition
diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx
index a7bd1b6..36966bb 100644
--- a/svx/source/svdraw/textchain.cxx
+++ b/svx/source/svdraw/textchain.cxx
@@ -67,7 +67,7 @@ bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj* /* pPrevLink */, SdrT
}
-ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink)
+ImpChainLinkProperties *TextChain::GetLinkProperties(const SdrTextObj *pLink)
{
// if the guy does not already have properties in the map make them
ChainLinkId aLinkId = GetId(pLink);
@@ -78,7 +78,7 @@ ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink)
return maLinkPropertiesMap[aLinkId];
}
-ChainLinkId TextChain::GetId(SdrTextObj *pLink) const
+ChainLinkId TextChain::GetId(const SdrTextObj *pLink) const
{
return pLink->GetName();
}
diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx
index ac1a805..c7531f1 100644
--- a/svx/source/svdraw/textchainflow.cxx
+++ b/svx/source/svdraw/textchainflow.cxx
@@ -137,6 +137,7 @@ bool TextChainFlow::IsUnderflow() const
// XXX:Would it be possible to unify undeflow and its possibly following overrflow?
void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
{
+ //GetTextChain()->SetNilChainingEvent(mpTargetLink, true);
// making whole text
OutlinerParaObject *pNewText = impGetMergedUnderflowParaObject(pOutl);
@@ -146,12 +147,15 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
mpTargetLink->NbcSetOutlinerParaObject(pNewText);
+ //GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
+
// Check for new overflow
CheckForFlowEvents(pOutl);
}
void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pOverflOutl)
{
+ //GetTextChain()->SetNilChainingEvent(mpTargetLink, true);
// Leave only non overflowing text
impLeaveOnlyNonOverflowingText(pNonOverflOutl);
@@ -160,6 +164,7 @@ void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pO
{
impMoveChainedTextToNextLink(pOverflOutl);
}
+ //GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
}
void TextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl)
commit f2497029a458b6f33e62776c09f23227c7b3407d
Author: matteocam <matteo.campanelli at gmail.com>
Date: Fri Jul 10 13:25:21 2015 -0400
Revert "Prevent multiple chaining events for static text"
This reverts commit 942824a9e0c9bb679e0393122eb38fe4d4f212a1.
diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx
index 6a70c8b..69b197e 100644
--- a/include/svx/textchain.hxx
+++ b/include/svx/textchain.hxx
@@ -53,15 +53,15 @@
a##PropName = (PropDefault);
#define DECL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType Get##PropName (const SdrTextObj *); \
- void Set##PropName (const SdrTextObj *, PropType);
+ PropType Get##PropName (SdrTextObj *); \
+ void Set##PropName (SdrTextObj *, PropType);
#define IMPL_CHAIN_PROP_INTERFACE(PropName, PropType) \
- PropType TextChain::Get##PropName (const SdrTextObj *pTarget) { \
+ PropType TextChain::Get##PropName (SdrTextObj *pTarget) { \
ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
return pLinkProperties->a##PropName; \
} \
- void TextChain::Set##PropName (const SdrTextObj *pTarget, PropType aPropParam) \
+ void TextChain::Set##PropName (SdrTextObj *pTarget, PropType aPropParam) \
{ \
ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \
pLinkProperties->a##PropName = aPropParam; \
@@ -139,8 +139,8 @@ class TextChain {
bool IsLinkInChain(SdrTextObj *) const;
SdrTextObj *GetNextLink(SdrTextObj *) const;
- ChainLinkId GetId(const SdrTextObj *) const;
- ImpChainLinkProperties *GetLinkProperties(const SdrTextObj *);
+ ChainLinkId GetId(SdrTextObj *) const;
+ ImpChainLinkProperties *GetLinkProperties(SdrTextObj *);
// Specific Link Properties
DECL_CHAIN_PROP_INTERFACE(CursorEvent, CursorChainingEvent)
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 80bd5ff..5e00942 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -497,7 +497,7 @@ IMPL_LINK_NOARG(SdrObjEditView,ImpChainingEventHdl)
}
// We prevent to trigger further handling of overflow/underflow for pTextObj
- pTextChain->SetNilChainingEvent(pTextObj, true); // XXX
+ pTextChain->SetNilChainingEvent(pTextObj, true);
// Save previous selection pos // NOTE: It must be done to have the right CursorEvent in KeyInput
pTextChain->SetPreChainingSel(pTextObj, pOLV->GetSelection());
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index afa40df..0a33fa4 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -2073,10 +2073,6 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const
/* FIXME(matteocam) return mpNextInChain; */
SdrTextObj *pNextTextObj = NULL;
- // Check that no overflow is going on // XXX: This should be moved in IsChainable
- if (GetTextChain()->GetNilChainingEvent(this))
- return NULL;
-
if ( pPage && pPage->GetObjCount() > 1) {
if (!GetName().startsWith("Chainable")) {
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index 241ec8b..954f261 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -1490,7 +1490,6 @@ void SdrTextObj::impDecomposeChainedTextPrimitive(
// We need the outliner we get the overflow info from as well as
// the outliner for "drawing" (e.g. a drawing or chaining outliner)
// maybe the latter ones can be passed at the time of overflow and such
- GetTextChain()->SetNilChainingEvent(this, true);
TextChainFlow aTxtChainFlow(const_cast<SdrTextObj*>(this));
bool bIsOverflow;
@@ -1515,8 +1514,6 @@ void SdrTextObj::impDecomposeChainedTextPrimitive(
aTxtChainFlow.ExecuteOverflow(&rOutliner, &rChainingOutl);
}
- GetTextChain()->SetNilChainingEvent(this, false);
-
/* End overflow/underflow handling */
// set visualizing page at Outliner; needed e.g. for PageNumberField decomposition
diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx
index 36966bb..a7bd1b6 100644
--- a/svx/source/svdraw/textchain.cxx
+++ b/svx/source/svdraw/textchain.cxx
@@ -67,7 +67,7 @@ bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj* /* pPrevLink */, SdrT
}
-ImpChainLinkProperties *TextChain::GetLinkProperties(const SdrTextObj *pLink)
+ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink)
{
// if the guy does not already have properties in the map make them
ChainLinkId aLinkId = GetId(pLink);
@@ -78,7 +78,7 @@ ImpChainLinkProperties *TextChain::GetLinkProperties(const SdrTextObj *pLink)
return maLinkPropertiesMap[aLinkId];
}
-ChainLinkId TextChain::GetId(const SdrTextObj *pLink) const
+ChainLinkId TextChain::GetId(SdrTextObj *pLink) const
{
return pLink->GetName();
}
diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx
index c7531f1..ac1a805 100644
--- a/svx/source/svdraw/textchainflow.cxx
+++ b/svx/source/svdraw/textchainflow.cxx
@@ -137,7 +137,6 @@ bool TextChainFlow::IsUnderflow() const
// XXX:Would it be possible to unify undeflow and its possibly following overrflow?
void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
{
- //GetTextChain()->SetNilChainingEvent(mpTargetLink, true);
// making whole text
OutlinerParaObject *pNewText = impGetMergedUnderflowParaObject(pOutl);
@@ -147,15 +146,12 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl)
mpTargetLink->NbcSetOutlinerParaObject(pNewText);
- //GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
-
// Check for new overflow
CheckForFlowEvents(pOutl);
}
void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pOverflOutl)
{
- //GetTextChain()->SetNilChainingEvent(mpTargetLink, true);
// Leave only non overflowing text
impLeaveOnlyNonOverflowingText(pNonOverflOutl);
@@ -164,7 +160,6 @@ void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pO
{
impMoveChainedTextToNextLink(pOverflOutl);
}
- //GetTextChain()->SetNilChainingEvent(mpTargetLink, false);
}
void TextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl)
More information about the Libreoffice-commits
mailing list