editeng/source/outliner/outliner.cxx | 5 ---- editeng/source/outliner/overflowingtxt.cxx | 31 ++++++++++++++++++++++++++++- include/editeng/overflowingtxt.hxx | 27 ++++++++++--------------- include/svx/textchainflow.hxx | 2 - svx/source/svdraw/textchainflow.cxx | 8 ++----- 5 files changed, 45 insertions(+), 28 deletions(-)
New commits: commit 7b5adb6f56dcd448cb2f92dd9dc679abb1479d50 Author: matteocam <matteo.campane...@gmail.com> Date: Wed Jul 8 14:41:58 2015 -0400 Add Selection getters to (Non)OverflowingText Change-Id: Ia5f485c3f3adf6ae0cab3cf12ebb1119048eec83 diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx index 301ee0c..2b03d26 100644 --- a/editeng/source/outliner/outliner.cxx +++ b/editeng/source/outliner/outliner.cxx @@ -2144,7 +2144,6 @@ NonOverflowingText *Outliner::GetNonOverflowingText() const nLen += GetLineLen(nOverflowingPara, nLine); } - /* BEGIN Experiment with ESelection and EditTextobject */ sal_Int32 nStartPara = 0; sal_Int32 nStartPos = 0; ESelection aNonOverflowingTextSelection; @@ -2201,7 +2200,6 @@ OverflowingText *Outliner::GetOverflowingText() const nLen += GetLineLen(nHeadPara, nLine); } - /* BEGIN experiment ESEL */ sal_uInt32 nOverflowingPara = pEditEngine->GetOverflowingParaNum(); ESelection aOverflowingTextSel; sal_Int32 nLastPara = nParaCount-1; @@ -2211,9 +2209,6 @@ OverflowingText *Outliner::GetOverflowingText() const EditTextObject *pTObj = pEditEngine->CreateTextObject(aOverflowingTextSel); return new OverflowingText(pTObj); - - /* END experiment ESel */ - } void Outliner::ClearOverflowingParaNum() diff --git a/editeng/source/outliner/overflowingtxt.cxx b/editeng/source/outliner/overflowingtxt.cxx index 77f4829..03ed385 100644 --- a/editeng/source/outliner/overflowingtxt.cxx +++ b/editeng/source/outliner/overflowingtxt.cxx @@ -23,6 +23,28 @@ #include <editeng/overflowingtxt.hxx> #include <editeng/outliner.hxx> #include <editeng/outlobj.hxx> +#include <editeng/editobj.hxx> + +ESelection getLastPositionSel(const EditTextObject *pTObj) +{ + sal_Int32 nLastPara = pTObj->GetParagraphCount()-1; + // If text is empty + if (nLastPara < 0 ) + nLastPara = 0; + sal_Int32 nLen = pTObj->GetText(nLastPara).getLength(); + ESelection aEndPos(nLastPara, nLen, nLastPara, nLen); + + return aEndPos; +} + +OverflowingText::OverflowingText(EditTextObject *pTObj) : mpContentTextObj(pTObj) +{ +} + +ESelection OverflowingText::GetInsertionPointSel() const +{ + return getLastPositionSel(mpContentTextObj); +} OutlinerParaObject *NonOverflowingText::ToParaObject(Outliner *pOutliner) const { @@ -31,6 +53,11 @@ OutlinerParaObject *NonOverflowingText::ToParaObject(Outliner *pOutliner) const return pPObj; } +ESelection NonOverflowingText::GetOverflowPointSel() const +{ + return getLastPositionSel(mpContentTextObj); +} + // The equivalent of ToParaObject for OverflowingText. Here we are prepending the overflowing text to the old dest box's text // XXX: In a sense a better name for OverflowingText and NonOverflowingText are respectively DestLinkText and SourceLinkText OutlinerParaObject *OverflowingText::GetJuxtaposedParaObject(Outliner *pOutl, OutlinerParaObject *pNextPObj) @@ -49,7 +76,7 @@ OutlinerParaObject *OverflowingText::GetJuxtaposedParaObject(Outliner *pOutl, Ou pOutl->SetText(*pOverflowingPObj); // Set selection position between new and old text - maInsertionPointSel = impGetEndSelection(pOutl); + //maInsertionPointSel = impGetEndSelection(pOutl); // XXX: Maybe setting in the constructor is just right pOutl->AddText(*pNextPObj); @@ -60,6 +87,7 @@ OutlinerParaObject *OverflowingText::GetJuxtaposedParaObject(Outliner *pOutl, Ou return pPObj; } +/* ESelection OverflowingText::impGetEndSelection(Outliner *pOutl) const { const sal_Int32 nParaCount = pOutl->GetParagraphCount(); @@ -70,6 +98,7 @@ ESelection OverflowingText::impGetEndSelection(Outliner *pOutl) const ESelection aEndSel(nLastParaIndex,nLenLastPara,nLastParaIndex,nLenLastPara); return aEndSel; } +* */ /* OUString OverflowingText::GetEndingLines() const diff --git a/include/editeng/overflowingtxt.hxx b/include/editeng/overflowingtxt.hxx index be5530b..7faa9a9 100644 --- a/include/editeng/overflowingtxt.hxx +++ b/include/editeng/overflowingtxt.hxx @@ -36,14 +36,6 @@ class OverflowingText { public: - // Constructor - - OverflowingText(EditTextObject *pTObj) : mpContentTextObj(pTObj) - { - ESelection aStartPos(0,0,0,0); - maInsertionPointSel = aStartPos; - } - OutlinerParaObject *GetJuxtaposedParaObject(Outliner *, OutlinerParaObject *); ESelection GetInsertionPointSel() const; @@ -52,25 +44,26 @@ public: //bool HasOtherParas() const { return !(mTailTxt == "" && mpMidParas == NULL); } private: + friend class Outliner; + // Constructor + OverflowingText(EditTextObject *pTObj); + const EditTextObject *mpContentTextObj; ESelection maInsertionPointSel; - - ESelection impGetEndSelection(Outliner *pOutl) const; }; class NonOverflowingText { - public: - - // NOTE: mPreOverflowingTxt might be empty +public: + OutlinerParaObject *ToParaObject(Outliner *) const; + ESelection GetOverflowPointSel() const; +private: // Constructor NonOverflowingText(const EditTextObject *pTObj) : mpContentTextObj(pTObj) { } - OutlinerParaObject *ToParaObject(Outliner *) const; - - private: + friend class Outliner; const EditTextObject *mpContentTextObj; }; @@ -88,6 +81,8 @@ class EDITENG_DLLPUBLIC OFlowChainedText { OutlinerParaObject *CreateOverflowingParaObject(Outliner *, OutlinerParaObject *); OutlinerParaObject *CreateNonOverflowingParaObject(Outliner *); + ESelection GetInsertionPointSel() const { return mpOverflowingTxt->GetInsertionPointSel(); } + protected: void impSetOutlinerToEmptyTxt(Outliner *); diff --git a/include/svx/textchainflow.hxx b/include/svx/textchainflow.hxx index ade3404..b2373e8 100644 --- a/include/svx/textchainflow.hxx +++ b/include/svx/textchainflow.hxx @@ -118,7 +118,7 @@ protected: virtual void impSetFlowOutlinerParams(SdrOutliner *, SdrOutliner *) SAL_OVERRIDE; private: - void impBroadcasCursorInfo() const; + void impBroadcastCursorInfo() const; }; diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx index 2700bf3..161e615 100644 --- a/svx/source/svdraw/textchainflow.cxx +++ b/svx/source/svdraw/textchainflow.cxx @@ -99,10 +99,8 @@ void TextChainFlow::impCheckForFlowEvents(SdrOutliner *pFlowOutl, SdrOutliner *p void TextChainFlow::impUpdateCursorInfo(SdrOutliner *, bool bIsOverflow) { - // XXX: Current implementation might create problems with UF- - // In fact UF causes a - - + // XXX: Maybe we can get rid of mbOFisUFinduced by not allowing handling of more than one event by the same TextChainFlow + // if this is not an OF triggered during an UF if (bIsOverflow && !mbOFisUFinduced) { bool bCursorOut = true; // XXX: Should have real check if (bCursorOut) { @@ -241,7 +239,7 @@ void EditingTextChainFlow::CheckForFlowEvents(SdrOutliner *pFlowOutl) impCheckForFlowEvents(pFlowOutl, GetLinkTarget()->pEdtOutl); // Broadcast events for cursor handling - impBroadcasCursorInfo(); + impBroadcastCursorInfo(); } /* _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits