editeng/source/editeng/impedit.hxx | 7 +++--- editeng/source/editeng/impedit3.cxx | 31 +++++++++++++--------------- include/svx/svdotext.hxx | 2 - svx/source/svdraw/svdotext.cxx | 4 +-- svx/source/svdraw/svdotextdecomposition.cxx | 14 +++++++++--- 5 files changed, 32 insertions(+), 26 deletions(-)
New commits: commit 2e80a08b2b600069452c0109e598736de5138639 Author: matteocam <[email protected]> Date: Mon Jun 8 17:00:11 2015 -0400 Fixed chaining handlers in ImpEditEng. Checked for pEdtOutl Change-Id: I193d623a109ee751af30971c5b51e4715c59d147 diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 4bc4eb5..578371d 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -467,6 +467,7 @@ private: // For Chaining sal_Int32 mnOverflowingPara = -1; sal_Int32 mnOverflowingLine = -1; + bool mbNeedsChainingHandling = false; IdleFormattter aIdleFormatter; @@ -476,7 +477,7 @@ private: // this should not happen immediately (critical section): Timer aStatusTimer; Link aStatusHdlLink; - Link aStatusHdlLinkChaining; + Link aChainingHdlLink; Link aNotifyHdl; Link aImportHdl; Link aBeginMovingParagraphsHdl; @@ -848,7 +849,7 @@ public: void SetStatusEventHdl( const Link& rLink ) { aStatusHdlLink = rLink; } Link GetStatusEventHdl() const { return aStatusHdlLink; } - void SetChainingEventHdl( const Link& rLink ) { aStatusHdlLinkChaining = rLink; } + void SetChainingEventHdl( const Link& rLink ) { aChainingHdlLink = rLink; } void SetNotifyHdl( const Link& rLink ) { aNotifyHdl = rLink; } Link GetNotifyHdl() const { return aNotifyHdl; } @@ -886,7 +887,7 @@ public: InternalEditStatus& GetStatus() { return aStatus; } void CallStatusHdl(); - void CallStatusHdlChaining(); + void CallChainingEventHdl(); void DelayedCallStatusHdl() { aStatusTimer.Start(); } void CallNotify( EENotify& rNotify ); diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 54554af..6e06ac2 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -505,26 +505,11 @@ void ImpEditEngine::FormatDoc() CallStatusHdl(); // If Modified... //FIXME(matteocam) - CallStatusHdlChaining(); // XXX: hard coded for chaining + CallChainingEventHdl(); // For chaining LeaveBlockNotifications(); } -void ImpEditEngine::CallStatusHdlChaining() -{ - // only if it's the right ImpEditEngine (with right info on changes in text) - if ( aStatusHdlLinkChaining.IsSet() /* && aStatus.GetStatusWord() */) - { - CheckPageOverflow(); - // The Status has to be reset before the Call, - // since other Flags might be set in the handler... - EditStatus aTmpStatus( aStatus ); - aStatus.Clear(); - aStatusHdlLinkChaining.Call( &aTmpStatus ); - aStatusTimer.Stop(); // If called by hand ... - } -} - bool ImpEditEngine::ImpCheckRefMapMode() { bool bChange = false; @@ -624,10 +609,12 @@ void ImpEditEngine::CheckPageOverflow() // which paragraph is the first to cause higher size of the box? ImplUpdateOverflowingParaNum( nBoxHeight); // XXX: currently only for horizontal text aStatus.SetPageOverflow(true); + mbNeedsChainingHandling = true; } else { // No overflow if withing box boundaries aStatus.SetPageOverflow(false); + mbNeedsChainingHandling = false; } } @@ -4095,6 +4082,18 @@ void ImpEditEngine::CallStatusHdl() } } +void ImpEditEngine::CallChainingEventHdl() +{ + // only if it's the right ImpEditEngine (with right info on changes in text) + if ( aChainingHdlLink.IsSet() /* && aStatus.GetStatusWord() */) + { + CheckPageOverflow(); + aChainingHdlLink.Call( &mbNeedsChainingHandling ); + + } +} + + ContentNode* ImpEditEngine::GetPrevVisNode( ContentNode* pCurNode ) { const ParaPortion* pPortion = FindParaPortion( pCurNode ); diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx index 1da98d9..7583736 100644 --- a/include/svx/svdotext.hxx +++ b/include/svx/svdotext.hxx @@ -612,7 +612,7 @@ public: void impLeaveOnlyNonOverflowingText() const; // Handler for Chained Text - DECL_LINK(ImpDecomposeChainedText,bool); + DECL_LINK(ImpDecomposeChainedText,bool*); // timing generators void impGetBlinkTextTiming(drawinglayer::animation::AnimationEntryList& rAnimList) const; diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 243cdef..519c5f8 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -2052,9 +2052,9 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const } -IMPL_LINK(SdrTextObj,ImpDecomposeChainedText,bool,bIsPageOverflow) +IMPL_LINK(SdrTextObj,ImpDecomposeChainedText,bool*,bIsPageOverflow) { - onOverflowStatusEvent( bIsPageOverflow ); + onOverflowStatusEvent( *bIsPageOverflow ); return 0; } diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index 71ae619..a07b718 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -730,12 +730,18 @@ void SdrTextObj::impDecomposeContourTextPrimitive( OutlinerParaObject *SdrTextObj::impGetNonOverflowingParaObject() const { + NonOverflowingText *pNonOverflowingTxt; // Cut non overflowing text - NonOverflowingText *pNonOverflowingTxt = - pEdtOutl->GetNonOverflowingText(); + if (pEdtOutl != NULL) + pNonOverflowingTxt = + pEdtOutl->GetNonOverflowingText(); + else + pNonOverflowingTxt = + ImpGetDrawOutliner().GetNonOverflowingText(); + SdrOutliner &rOutliner = ImpGetDrawOutliner(); rOutliner.Clear(); - rOutliner.SetStyleSheet( 0, pEdtOutl->GetStyleSheet(0)); + //rOutliner.SetStyleSheet( 0, pEdtOutl->GetStyleSheet(0)); if (pNonOverflowingTxt->mPreOverflowingTxt == "" && pNonOverflowingTxt->mpHeadParas != NULL) { @@ -748,7 +754,7 @@ OutlinerParaObject *SdrTextObj::impGetNonOverflowingParaObject() const rOutliner.SetText(pNonOverflowingTxt->mPreOverflowingTxt, pTmpPara0); OutlinerParaObject *pPObj = rOutliner.CreateParaObject(); rOutliner.Clear(); - rOutliner.SetStyleSheet( 0, pEdtOutl->GetStyleSheet(0)); + //rOutliner.SetStyleSheet( 0, pEdtOutl->GetStyleSheet(0)); if (pNonOverflowingTxt->mpHeadParas != NULL) rOutliner.SetText(*pNonOverflowingTxt->mpHeadParas); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
