include/svx/svdedxv.hxx | 1 include/svx/svdotext.hxx | 3 + svx/source/svdraw/svdedxv.cxx | 81 +++++++++++++++++++++-------------------- svx/source/svdraw/svdotext.cxx | 6 +++ 4 files changed, 52 insertions(+), 39 deletions(-)
New commits: commit fc94131416c9fd5a7c95dc8b7f076d75282ae38f Author: matteocam <[email protected]> Date: Mon Jul 20 15:04:17 2015 -0400 Separated code for cursor motion with arrow keys Change-Id: I3184929219306b68599d1bd3efffa2f7def0c572 diff --git a/include/svx/svdedxv.hxx b/include/svx/svdedxv.hxx index 0f9de4d..d45a12f 100644 --- a/include/svx/svdedxv.hxx +++ b/include/svx/svdedxv.hxx @@ -111,6 +111,7 @@ protected: OutlinerView* ImpFindOutlinerView(vcl::Window* pWin) const; void ImpMoveCursorAfterChainingEvent(); + bool ImpHandleMotionThroughBoxesKeyInput(const KeyEvent& rKEvt, vcl::Window* pWin); // Create a new OutlinerView at the heap and initialize all required parameters. // pTextEditObj, pTextEditPV and pTextEditOutliner have to be initialized diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 774c974..ab70471 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -1280,54 +1280,59 @@ bool SdrObjEditView::IsTextEditFrameHit(const Point& rHit) const return bOk; } - - -bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) +bool SdrObjEditView::ImpHandleMotionThroughBoxesKeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) { - if(pTextEditOutlinerView) - { - // XXX: Find a clean way to do this (even cleaner than the code commented below) - // if( pTextEditOutlinerView->IsKeyEventPushingOutOfPage(rKevt, pWin) - // pWin = HandleKeyPushingOutOfBox(rKevt); - KeyFuncType eFunc = rKEvt.GetKeyCode().GetFunction(); - sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); - ESelection aCurSel = pTextEditOutlinerView->GetSelection(); + // XXX: Find a clean way to do this (even cleaner than the code commented below) + // if( pTextEditOutlinerView->IsKeyEventPushingOutOfPage(rKevt, pWin) + // pWin = HandleKeyPushingOutOfBox(rKevt); + KeyFuncType eFunc = rKEvt.GetKeyCode().GetFunction(); + sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); + ESelection aCurSel = pTextEditOutlinerView->GetSelection(); - SdrTextObj* pTextObj = NULL; - if (mxTextEditObj.is()) - pTextObj= dynamic_cast<SdrTextObj*>(mxTextEditObj.get()); + SdrTextObj* pTextObj = NULL; + if (mxTextEditObj.is()) + pTextObj= dynamic_cast<SdrTextObj*>(mxTextEditObj.get()); - bool bHandled = false; + bool bHandled = false; - // XXX: Add check for last position in the para - if (pTextObj && pTextObj->IsChainable() && pTextObj->GetNextLinkInChain() && - eFunc == KeyFuncType::DONTKNOW) + // XXX: Add check for last position in the para + if (pTextObj && pTextObj->IsChainable() && pTextObj->GetNextLinkInChain() && + eFunc == KeyFuncType::DONTKNOW) + { + SdrOutliner *pOutl = GetTextEditOutliner(); + sal_Int32 nLastPara = pOutl->GetParagraphCount()-1; + OUString aLastParaText = pOutl->GetText(pOutl->GetParagraph(nLastPara)); + sal_Int32 nLastParaLen = aLastParaText.getLength(); + + if (nCode == KEY_RIGHT && + aCurSel.nEndPara == nLastPara && + aCurSel.nEndPos == nLastParaLen + ) { - SdrOutliner *pOutl = GetTextEditOutliner(); - sal_Int32 nLastPara = pOutl->GetParagraphCount()-1; - OUString aLastParaText = pOutl->GetText(pOutl->GetParagraph(nLastPara)); - sal_Int32 nLastParaLen = aLastParaText.getLength(); - - if (nCode == KEY_RIGHT && - aCurSel.nEndPara == nLastPara && - aCurSel.nEndPos == nLastParaLen - ) - { - fprintf(stderr, "[CHAIN - CURSOR] Trying to move to next box\n" ); + fprintf(stderr, "[CHAIN - CURSOR] Trying to move to next box\n" ); - // Move to next box - SdrEndTextEdit(); - SdrTextObj *pNextLink = pTextObj->GetNextLinkInChain(); - SdrBeginTextEdit(pNextLink); - bHandled = true; - } // else if (...) + // Move to next box + SdrEndTextEdit(); + SdrTextObj *pNextLink = pTextObj->GetNextLinkInChain(); + SdrBeginTextEdit(pNextLink); + bHandled = true; + } // else if (...) - // XXX: Careful with the checks below for pWin and co. You should do them here I guess. + // XXX: Careful with the checks below for pWin and co. You should do them here I guess. - } + } + + return bHandled; + +} - if (bHandled) +bool SdrObjEditView::KeyInput(const KeyEvent& rKEvt, vcl::Window* pWin) +{ + if(pTextEditOutlinerView) + { + // We possibly move to another box before any handling + if (ImpHandleMotionThroughBoxesKeyInput(rKEvt, pWin)) return true; // FIXME(matteocam): Old code from here commit 1beb368aef88ec3f82d44460a81d62320d15274f Author: matteocam <[email protected]> Date: Mon Jul 20 14:54:44 2015 -0400 Add SdrTextObj::GetPrevLink in chain declaration Change-Id: If7fca35cb5bae369480405fb68681761ad588f4c diff --git a/include/svx/svdotext.hxx b/include/svx/svdotext.hxx index 761c4e0..6dc4ed4 100644 --- a/include/svx/svdotext.hxx +++ b/include/svx/svdotext.hxx @@ -364,9 +364,10 @@ public: /// returns true if the old feature for fitting shape content should into shape is enabled. implies IsAutoFit()==false! bool IsFitToSize() const; - // Chaining + // Chaining // XXX: how are we using IsToBeChained at the moment? bool IsToBeChained() const; SdrTextObj *GetNextLinkInChain() const; + SdrTextObj *GetPrevLinkInChain() const; bool IsChainable() const; void SetPreventChainable(); bool GetPreventChainable() const; diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 26b6296..f315d01 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -2100,6 +2100,12 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const } +SdrTextObj* SdrTextObj::GetPrevLinkInChain() const +{ + // FIXME: To be implemented + return NULL; +} + void SdrTextObj::SetPreventChainable() { mbIsUnchainableClone = true; _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
