diff options
-rw-r--r-- | sw/inc/crsrsh.hxx | 3 | ||||
-rw-r--r-- | sw/inc/viewsh.hxx | 2 | ||||
-rw-r--r-- | sw/source/core/crsr/crsrsh.cxx | 51 | ||||
-rw-r--r-- | sw/source/ui/docvw/edtwin.cxx | 5 | ||||
-rw-r--r-- | sw/source/ui/shells/txtcrsr.cxx | 12 |
5 files changed, 23 insertions, 50 deletions
diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx index 3dc677e81e54..780e1d8046ff 100644 --- a/sw/inc/crsrsh.hxx +++ b/sw/inc/crsrsh.hxx @@ -190,7 +190,6 @@ private: SwShellCrsr* pCurCrsr; // current cursor SwShellCrsr* pCrsrStk; // stack for the cursor SwVisCrsr *pVisCrsr; // the visible cursor - SwShellCrsr* pCrsrBack; // Backup cursor for header/footer edit mode IBlockCursor *pBlockCrsr; // interface of cursor for block (=rectangular) selection @@ -851,8 +850,6 @@ public: String GetCrsrDescr() const; SwRect GetRectOfCurrentChar(); - - virtual void ToggleHeaderFooterEdit( ); }; // Cursor Inlines: diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx index 3cb4748bc96c..8c2cab872725 100644 --- a/sw/inc/viewsh.hxx +++ b/sw/inc/viewsh.hxx @@ -565,7 +565,7 @@ public: const SwPostItMgr* GetPostItMgr() const { return (const_cast<ViewShell*>(this))->GetPostItMgr(); } SwPostItMgr* GetPostItMgr(); - virtual void ToggleHeaderFooterEdit( ); + void ToggleHeaderFooterEdit( ); sal_Bool IsHeaderFooterEdit( ) const { return bHeaderFooterEdit; } sal_Bool IsShowHeaderFooterSeparator( ) { return bShowHeaderFooterSeparator; } void SetShowHeaderFooterSeparator( sal_Bool bShow ) { bShowHeaderFooterSeparator = bShow; } diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx index 67bbdad2c892..7339aba81000 100644 --- a/sw/source/core/crsr/crsrsh.cxx +++ b/sw/source/core/crsr/crsrsh.cxx @@ -1320,6 +1320,11 @@ void SwCrsrShell::UpdateCrsr( sal_uInt16 eFlags, sal_Bool bIdleEnd ) return; // wenn nicht, dann kein Update !! } + bool bInHeaderFooter = IsInHeaderFooter( ); + if ( ( bInHeaderFooter && !IsHeaderFooterEdit( ) ) || + ( !bInHeaderFooter && IsHeaderFooterEdit( ) ) ) + ToggleHeaderFooterEdit( ); + // #i27301# SwNotifyAccAboutInvalidTextSelections aInvalidateTextSelections( *this ); @@ -2545,7 +2550,7 @@ void SwCrsrShell::ParkCrsr( const SwNodeIndex &rIdx ) SwCrsrShell::SwCrsrShell( SwCrsrShell& rShell, Window *pInitWin ) : ViewShell( rShell, pInitWin ), - SwModify( 0 ), pCrsrStk( 0 ), pCrsrBack( 0 ), pBlockCrsr( 0 ), pTblCrsr( 0 ), + SwModify( 0 ), pCrsrStk( 0 ), pBlockCrsr( 0 ), pTblCrsr( 0 ), pBoxIdx( 0 ), pBoxPtr( 0 ), nCrsrMove( 0 ), nBasicActionCnt( 0 ), eMvState( MV_NONE ), sMarkedListId(), @@ -2573,7 +2578,7 @@ SwCrsrShell::SwCrsrShell( SwCrsrShell& rShell, Window *pInitWin ) SwCrsrShell::SwCrsrShell( SwDoc& rDoc, Window *pInitWin, const SwViewOption *pInitOpt ) : ViewShell( rDoc, pInitWin, pInitOpt ), - SwModify( 0 ), pCrsrStk( 0 ), pCrsrBack( 0 ), pBlockCrsr( 0 ), pTblCrsr( 0 ), + SwModify( 0 ), pCrsrStk( 0 ), pBlockCrsr( 0 ), pTblCrsr( 0 ), pBoxIdx( 0 ), pBoxPtr( 0 ), nCrsrMove( 0 ), nBasicActionCnt( 0 ), eMvState( MV_NONE ), // state for crsr-travelling - GetCrsrOfst sMarkedListId(), @@ -2635,9 +2640,6 @@ SwCrsrShell::~SwCrsrShell() delete pCrsrStk; } - if( pCrsrBack ) - delete pCrsrBack; - // JP 27.07.98: Bug 54025 - ggfs. den HTML-Parser, der als Client in // der CursorShell haengt keine Chance geben, sich an den // TextNode zu haengen. @@ -3450,43 +3452,4 @@ void SwCrsrShell::GetSmartTagTerm( const Point& rPt, SwRect& rSelectRect, } -void SwCrsrShell::ToggleHeaderFooterEdit( ) -{ - ViewShell::ToggleHeaderFooterEdit(); - - SET_CURR_SHELL( this ); - - if ( IsHeaderFooterEdit() ) - { - pCrsrBack = new SwShellCrsr( *this, *pCurCrsr->GetPoint(), - pCurCrsr->GetPtPos() ); - - if ( pCurCrsr->HasMark() ) - { - pCrsrBack->SetMark(); - *pCrsrBack->GetMark() = *pCurCrsr->GetMark(); - } - } - else - { - SwPosition& rPos = *pCurCrsr->GetPoint(); - rPos.nNode = pCrsrBack->GetPoint()->nNode; - rPos.nContent = pCrsrBack->GetPoint()->nContent; - - if ( pCrsrBack->HasMark( ) ) - { - pCurCrsr->SetMark(); - rPos = *pCurCrsr->GetMark(); - rPos.nNode = pCrsrBack->GetMark()->nNode; - rPos.nContent = pCrsrBack->GetMark()->nContent; - } - - delete pCrsrBack; - pCrsrBack = NULL; - - UpdateCrsr( SwCrsrShell::SCROLLWIN | SwCrsrShell::CHKRANGE | - SwCrsrShell::READONLY ); - } -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/ui/docvw/edtwin.cxx b/sw/source/ui/docvw/edtwin.cxx index e7aa37db3dab..8b1ccca3cd97 100644 --- a/sw/source/ui/docvw/edtwin.cxx +++ b/sw/source/ui/docvw/edtwin.cxx @@ -1312,6 +1312,11 @@ void SwEditWin::KeyInput(const KeyEvent &rKEvt) else if ( rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE && rSh.IsHeaderFooterEdit( ) ) { + bool bHeader = FRMTYPE_HEADER & rSh.GetFrmType(0,sal_False); + if ( bHeader ) + rSh.SttPg(); + else + rSh.EndPg(); rSh.ToggleHeaderFooterEdit(); } diff --git a/sw/source/ui/shells/txtcrsr.cxx b/sw/source/ui/shells/txtcrsr.cxx index 2b27752741db..0be69175adda 100644 --- a/sw/source/ui/shells/txtcrsr.cxx +++ b/sw/source/ui/shells/txtcrsr.cxx @@ -293,7 +293,11 @@ void SwTextShell::ExecMoveMisc(SfxRequest &rReq) if ( FRMTYPE_HEADER & rSh.GetFrmType(0,sal_False) ) rSh.SttPg(); else - rSh.GotoHeaderTxt(); + { + bool bMoved = rSh.GotoHeaderTxt(); + if ( !bMoved ) + rSh.SttPg(); + } bSetRetVal = sal_False; break; case FN_TO_FOOTER: @@ -301,7 +305,11 @@ void SwTextShell::ExecMoveMisc(SfxRequest &rReq) if ( FRMTYPE_FOOTER & rSh.GetFrmType(0,sal_False) ) rSh.EndPg(); else - rSh.GotoFooterTxt(); + { + bool bMoved = rSh.GotoFooterTxt(); + if ( !bMoved ) + rSh.EndPg(); + } bSetRetVal = sal_False; break; case FN_FOOTNOTE_TO_ANCHOR: |