summaryrefslogtreecommitdiff
path: root/svx/source/outliner/outlvw.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/outliner/outlvw.cxx')
-rw-r--r--svx/source/outliner/outlvw.cxx1669
1 files changed, 0 insertions, 1669 deletions
diff --git a/svx/source/outliner/outlvw.cxx b/svx/source/outliner/outlvw.cxx
deleted file mode 100644
index c0f264f000..0000000000
--- a/svx/source/outliner/outlvw.cxx
+++ /dev/null
@@ -1,1669 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: outlvw.cxx,v $
- * $Revision: 1.34.150.2 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-#include <outl_pch.hxx>
-#include <svl/style.hxx>
-
-#define _OUTLINER_CXX
-#include <svx/outliner.hxx>
-#include <outleeng.hxx>
-#include <paralist.hxx>
-#include <outlundo.hxx>
-#include <svx/outlobj.hxx>
-#include <svx/flditem.hxx>
-#include <svx/flditem.hxx>
-#include <svx/eeitem.hxx>
-#include <svx/numitem.hxx>
-#include <vcl/window.hxx>
-#include <svl/itemset.hxx>
-#include <editstat.hxx>
-
-
-// Breite der Randzonen innerhalb derer beim D&D gescrollt wird
-#define OL_SCROLL_LRBORDERWIDTHPIX 10
-#define OL_SCROLL_TBBORDERWIDTHPIX 10
-
-// Wert, um den Fensterinhalt beim D&D gescrollt wird
-#define OL_SCROLL_HOROFFSET 20 /* in % von VisibleSize.Width */
-#define OL_SCROLL_VEROFFSET 20 /* in % von VisibleSize.Height */
-
-DBG_NAME(OutlinerView)
-
-
-OutlinerView::OutlinerView( Outliner* pOut, Window* pWin )
-{
- DBG_CTOR( OutlinerView, 0 );
-
- pOwner = pOut;
- bDDCursorVisible = FALSE;
- bInDragMode = FALSE;
- nDDScrollLRBorderWidthWin = 0;
- nDDScrollTBBorderWidthWin = 0;
- pHorTabArrDoc = 0;
-
- pEditView = new EditView( pOut->pEditEngine, pWin );
- pEditView->SetSelectionMode( EE_SELMODE_TXTONLY );
-}
-
-OutlinerView::~OutlinerView()
-{
- DBG_DTOR(OutlinerView,0);
- delete pEditView;
-}
-
-void OutlinerView::Paint( const Rectangle& rRect )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- // beim ersten Paint/KeyInput/Drop wird aus einem leeren Outliner ein
- // Outliner mit genau einem Absatz
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
-
- pEditView->Paint( rRect );
-}
-
-BOOL OutlinerView::PostKeyEvent( const KeyEvent& rKEvt )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- // beim ersten Paint/KeyInput/Drop wird aus einem leeren Outliner ein
- // Outliner mit genau einem Absatz
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
-
-
- BOOL bKeyProcessed = FALSE;
- ESelection aSel( pEditView->GetSelection() );
- BOOL bSelection = aSel.HasRange();
- KeyCode aKeyCode = rKEvt.GetKeyCode();
- KeyFuncType eFunc = aKeyCode.GetFunction();
- USHORT nCode = aKeyCode.GetCode();
- BOOL bReadOnly = IsReadOnly();
-
- if( bSelection && ( nCode != KEY_TAB ) && EditEngine::DoesKeyChangeText( rKEvt ) )
- {
- if ( ImpCalcSelectedPages( FALSE ) && !pOwner->ImpCanDeleteSelectedPages( this ) )
- return TRUE;
- }
-
- if ( eFunc != KEYFUNC_DONTKNOW )
- {
- switch ( eFunc )
- {
- case KEYFUNC_CUT:
- {
- if ( !bReadOnly )
- {
- Cut();
- bKeyProcessed = TRUE;
- }
- }
- break;
- case KEYFUNC_COPY:
- {
- Copy();
- bKeyProcessed = TRUE;
- }
- break;
- case KEYFUNC_PASTE:
- {
- if ( !bReadOnly )
- {
- PasteSpecial();
- bKeyProcessed = TRUE;
- }
- }
- break;
- case KEYFUNC_DELETE:
- {
- if( !bReadOnly && !bSelection && ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ) )
- {
- if( aSel.nEndPos == pOwner->pEditEngine->GetTextLen( aSel.nEndPara ) )
- {
- Paragraph* pNext = pOwner->pParaList->GetParagraph( aSel.nEndPara+1 );
- if( pNext && pNext->HasFlag(PARAFLAG_ISPAGE) )
- {
- if( !pOwner->ImpCanDeleteSelectedPages( this, aSel.nEndPara, 1 ) )
- return FALSE;
- }
- }
- }
- }
- break;
- default: // wird dann evtl. unten bearbeitet.
- eFunc = KEYFUNC_DONTKNOW;
- }
- }
- if ( eFunc == KEYFUNC_DONTKNOW )
- {
- switch ( nCode )
- {
- case KEY_TAB:
- {
- if ( !bReadOnly && !aKeyCode.IsMod1() && !aKeyCode.IsMod2() )
- {
- if ( ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ) &&
- ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TITLEOBJECT ) &&
- ( bSelection || !aSel.nStartPos ) )
- {
- Indent( aKeyCode.IsShift() ? (-1) : (+1) );
- bKeyProcessed = TRUE;
- }
- else if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) &&
- !bSelection && !aSel.nEndPos && pOwner->ImplHasBullet( aSel.nEndPara ) )
- {
- Indent( aKeyCode.IsShift() ? (-1) : (+1) );
- bKeyProcessed = TRUE;
- }
- }
- }
- break;
- case KEY_BACKSPACE:
- {
- if( !bReadOnly && !bSelection && aSel.nEndPara && !aSel.nEndPos )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( aSel.nEndPara );
- Paragraph* pPrev = pOwner->pParaList->GetParagraph( aSel.nEndPara-1 );
- if( !pPrev->IsVisible() )
- return TRUE;
- if( !pPara->GetDepth() )
- {
- if(!pOwner->ImpCanDeleteSelectedPages(this, aSel.nEndPara , 1 ) )
- return TRUE;
- }
- }
- }
- break;
- case KEY_RETURN:
- {
- if ( !bReadOnly )
- {
- // Sonderbehandlung: Hartes Return am Ende eines Absatzes,
- // der eingeklappte Unterabsaetze besitzt
- Paragraph* pPara = pOwner->pParaList->GetParagraph( aSel.nEndPara );
-
- if( !aKeyCode.IsShift() )
- {
- // Nochmal ImpGetCursor ???
- if( !bSelection &&
- aSel.nEndPos == pOwner->pEditEngine->GetTextLen( aSel.nEndPara ) )
- {
- ULONG nChilds = pOwner->pParaList->GetChildCount(pPara);
- if( nChilds && !pOwner->pParaList->HasVisibleChilds(pPara))
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
- ULONG nTemp = aSel.nEndPara;
- nTemp += nChilds;
- nTemp++; // einfuegen ueber naechstem Non-Child
- pOwner->Insert( String(),nTemp,pPara->GetDepth());
- // Cursor positionieren
- ESelection aTmpSel((USHORT)nTemp,0,(USHORT)nTemp,0);
- pEditView->SetSelection( aTmpSel );
- pEditView->ShowCursor( TRUE, TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- bKeyProcessed = TRUE;
- }
- }
- }
- if( !bKeyProcessed && !bSelection &&
- !aKeyCode.IsShift() && aKeyCode.IsMod1() &&
- ( aSel.nEndPos == pOwner->pEditEngine->GetTextLen(aSel.nEndPara) ) )
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
- ULONG nTemp = aSel.nEndPara;
- nTemp++;
- pOwner->Insert( String(), nTemp, pPara->GetDepth()+1 );
-
- // Cursor positionieren
- ESelection aTmpSel((USHORT)nTemp,0,(USHORT)nTemp,0);
- pEditView->SetSelection( aTmpSel );
- pEditView->ShowCursor( TRUE, TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- bKeyProcessed = TRUE;
- }
- }
- }
- break;
- }
- }
-
- return bKeyProcessed ? TRUE : pEditView->PostKeyEvent( rKEvt );
-}
-
-
-ULONG OutlinerView::ImpCheckMousePos(const Point& rPosPix, MouseTarget& reTarget)
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nPara = EE_PARA_NOT_FOUND;
-
- Point aMousePosWin = pEditView->GetWindow()->PixelToLogic( rPosPix );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- {
- reTarget = MouseOutside;
- }
- else
- {
- reTarget = MouseText;
-
- Point aPaperPos( aMousePosWin );
- Rectangle aOutArea = pEditView->GetOutputArea();
- Rectangle aVisArea = pEditView->GetVisArea();
- aPaperPos.X() -= aOutArea.Left();
- aPaperPos.X() += aVisArea.Left();
- aPaperPos.Y() -= aOutArea.Top();
- aPaperPos.Y() += aVisArea.Top();
-
- BOOL bBullet;
- if ( pOwner->IsTextPos( aPaperPos, 0, &bBullet ) )
- {
- Point aDocPos = pOwner->GetDocPos( aPaperPos );
- nPara = pOwner->pEditEngine->FindParagraph( aDocPos.Y() );
-
- if ( bBullet )
- {
- reTarget = MouseBullet;
- }
- else
- {
- // Check for hyperlink
- const SvxFieldItem* pFieldItem = pEditView->GetField( aMousePosWin );
- if ( pFieldItem && pFieldItem->GetField() && pFieldItem->GetField()->ISA( SvxURLField ) )
- reTarget = MouseHypertext;
- }
- }
- }
- return nPara;
-}
-
-BOOL __EXPORT OutlinerView::MouseMove( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- if( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode())
- return pEditView->MouseMove( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
- return pEditView->MouseMove( rMEvt );
-}
-
-
-BOOL __EXPORT OutlinerView::MouseButtonDown( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode() )
- return pEditView->MouseButtonDown( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
-
- MouseTarget eTarget;
- ULONG nPara = ImpCheckMousePos( rMEvt.GetPosPixel(), eTarget );
- if ( eTarget == MouseBullet )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- BOOL bHasChilds = (pPara && pOwner->pParaList->HasChilds(pPara));
- if( rMEvt.GetClicks() == 1 )
- {
- ULONG nEndPara = nPara;
- if ( bHasChilds && pOwner->pParaList->HasVisibleChilds(pPara) )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- // umgekehrt rum selektieren, damit EditEngine nicht scrollt
- ESelection aSel((USHORT)nEndPara, 0xffff,(USHORT)nPara, 0 );
- pEditView->SetSelection( aSel );
- }
- else if( rMEvt.GetClicks() == 2 && bHasChilds )
- ImpToggleExpand( pPara );
-
- aDDStartPosPix = rMEvt.GetPosPixel();
- aDDStartPosRef=pEditView->GetWindow()->PixelToLogic( aDDStartPosPix,pOwner->GetRefMapMode());
- return TRUE;
- }
-
- // special case for outliner view in impress, check if double click hits the page icon for toggle
- if( (nPara == EE_PARA_NOT_FOUND) && (pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEVIEW) && (eTarget == MouseText) && (rMEvt.GetClicks() == 2) )
- {
- ESelection aSel( pEditView->GetSelection() );
- nPara = aSel.nStartPara;
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- if( (pPara && pOwner->pParaList->HasChilds(pPara)) && pPara->HasFlag(PARAFLAG_ISPAGE) )
- {
- ImpToggleExpand( pPara );
- }
- }
- return pEditView->MouseButtonDown( rMEvt );
-}
-
-
-BOOL __EXPORT OutlinerView::MouseButtonUp( const MouseEvent& rMEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_TEXTOBJECT ) || pEditView->GetEditEngine()->IsInSelectionMode() )
- return pEditView->MouseButtonUp( rMEvt );
-
- Point aMousePosWin( pEditView->GetWindow()->PixelToLogic( rMEvt.GetPosPixel() ) );
- if( !pEditView->GetOutputArea().IsInside( aMousePosWin ) )
- return FALSE;
-
- Pointer aPointer = GetPointer( rMEvt.GetPosPixel() );
- pEditView->GetWindow()->SetPointer( aPointer );
-
- return pEditView->MouseButtonUp( rMEvt );
-}
-
-void OutlinerView::ImpHideDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( bDDCursorVisible )
- {
- bDDCursorVisible = FALSE;
- ImpPaintDDCursor();
- }
-}
-
-void OutlinerView::ImpShowDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !bDDCursorVisible )
- {
- bDDCursorVisible = TRUE;
- ImpPaintDDCursor();
- }
-}
-
-void OutlinerView::ImpPaintDDCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- Window* pWindow = pEditView->GetWindow();
- RasterOp eOldOp = pWindow->GetRasterOp();
- pWindow->SetRasterOp( ROP_INVERT );
-
- const Color& rOldLineColor = pWindow->GetLineColor();
- pWindow->SetLineColor( Color( COL_BLACK ) );
-
- Point aStartPointWin, aEndPointWin;
- Rectangle aOutputArWin = pEditView->GetOutputArea();
- Rectangle aVisAreaRef = pEditView->GetVisArea();
-
- if( bDDChangingDepth )
- {
- aStartPointWin.X() = pHorTabArrDoc[ nDDCurDepth ];
- aStartPointWin.X() += aOutputArWin.Left();
- aStartPointWin.Y() = aOutputArWin.Top();
- aEndPointWin.X() = aStartPointWin.X();
- aEndPointWin.Y() = aOutputArWin.Bottom();
- }
- else
- {
- ULONG nPara = nDDCurPara;
- if ( nDDCurPara == LIST_APPEND )
- {
- Paragraph* pTemp = pOwner->pParaList->LastVisible();
- nPara = pOwner->pParaList->GetAbsPos( pTemp );
- }
- aStartPointWin = pEditView->GetWindowPosTopLeft((USHORT) nPara );
- if ( nDDCurPara == LIST_APPEND )
- {
- long nHeight = pOwner->pEditEngine->GetTextHeight((USHORT)nPara );
- aStartPointWin.Y() += nHeight;
- }
- aStartPointWin.X() = aOutputArWin.Left();
- aEndPointWin.Y() = aStartPointWin.Y();
- aEndPointWin.X() = aOutputArWin.Right();
- }
-
- pWindow->DrawLine( aStartPointWin, aEndPointWin );
- pWindow->SetLineColor( rOldLineColor );
- pWindow->SetRasterOp( eOldOp );
-}
-
-// Berechnet, ueber welchem Absatz eingefuegt werden muss
-
-ULONG OutlinerView::ImpGetInsertionPara( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nCurPara = pEditView->GetParagraph( rPosPixel );
- ParagraphList* pParaList = pOwner->pParaList;
-
- if ( nCurPara == EE_PARA_NOT_FOUND )
- nCurPara = LIST_APPEND;
- else
- {
- Point aPosWin = pEditView->GetWindow()->PixelToLogic( rPosPixel );
- Point aParaPosWin = pEditView->GetWindowPosTopLeft((USHORT)nCurPara);
- long nHeightRef = pOwner->pEditEngine->GetTextHeight((USHORT)nCurPara);
- long nParaYOffs = aPosWin.Y() - aParaPosWin.Y();
-
- if ( nParaYOffs > nHeightRef / 2 )
- {
- Paragraph* p = pParaList->GetParagraph( nCurPara );
- p = pParaList->NextVisible( p );
- nCurPara = p ? pParaList->GetAbsPos( p ) : LIST_APPEND;
- }
- }
- return nCurPara;
-}
-
-
-void OutlinerView::ImpToggleExpand( Paragraph* pPara )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- USHORT nPara = (USHORT) pOwner->pParaList->GetAbsPos( pPara );
- pEditView->SetSelection( ESelection( nPara, 0, nPara, 0 ) );
- ImplExpandOrCollaps( nPara, nPara, !pOwner->pParaList->HasVisibleChilds( pPara ) );
- pEditView->ShowCursor();
-}
-
-
-void OutlinerView::SetOutliner( Outliner* pOutliner )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner = pOutliner;
- pEditView->SetEditEngine( pOutliner->pEditEngine );
-}
-
-
-
-ULONG OutlinerView::Select( Paragraph* pParagraph, BOOL bSelect,
- BOOL bWithChilds )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- ULONG nPara = pOwner->pParaList->GetAbsPos( pParagraph );
- USHORT nEnd = 0;
- if ( bSelect )
- nEnd = 0xffff;
-
- ULONG nChildCount = 0;
- if ( bWithChilds )
- nChildCount = pOwner->pParaList->GetChildCount( pParagraph );
-
- ESelection aSel( (USHORT)nPara, 0,(USHORT)(nPara+nChildCount), nEnd );
- pEditView->SetSelection( aSel );
- return nChildCount+1;
-}
-
-
-void OutlinerView::SetAttribs( const SfxItemSet& rAttrs )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- BOOL bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->UndoActionStart( OLUNDO_ATTR );
-
- ParaRange aSel = ImpGetSelectedParagraphs( FALSE );
-
- pEditView->SetAttribs( rAttrs );
-
- // Bullet-Texte aktualisieren
- for( USHORT nPara= aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- pOwner->ImplCheckNumBulletItem( nPara );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->InsertUndo( new OutlinerUndoCheckPara( pOwner, nPara ) );
- }
-
- if( !pOwner->IsInUndo() && pOwner->IsUndoEnabled() )
- pOwner->UndoActionEnd( OLUNDO_ATTR );
-
- pEditView->SetEditEngineUpdateMode( bUpdate );
-}
-
-ParaRange OutlinerView::ImpGetSelectedParagraphs( BOOL bIncludeHiddenChilds )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- ESelection aSel = pEditView->GetSelection();
- ParaRange aParas( aSel.nStartPara, aSel.nEndPara );
- aParas.Adjust();
-
- // unsichtbare Childs des letzten Parents in Selektion mit aufnehmen
- if ( bIncludeHiddenChilds )
- {
- Paragraph* pLast = pOwner->pParaList->GetParagraph( aParas.nEndPara );
- if ( pOwner->pParaList->HasHiddenChilds( pLast ) )
- aParas.nEndPara =
- sal::static_int_cast< USHORT >(
- aParas.nEndPara +
- pOwner->pParaList->GetChildCount( pLast ) );
- }
- return aParas;
-}
-
-// MT: Name sollte mal geaendert werden!
-void OutlinerView::AdjustDepth( short nDX )
-{
- Indent( nDX );
-}
-
-void OutlinerView::Indent( short nDiff )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- if( !nDiff || ( ( nDiff > 0 ) && ImpCalcSelectedPages( TRUE ) && !pOwner->ImpCanIndentSelectedPages( this ) ) )
- return;
-
- const bool bOutlinerView = pOwner->pEditEngine->GetControlWord() & EE_CNTRL_OUTLINER;
- BOOL bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- BOOL bUndo = !pOwner->IsInUndo() && pOwner->IsUndoEnabled();
-
- if( bUndo )
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- sal_Int16 nMinDepth = -1; // Optimierung: Nicht unnoetig viele Absatze neu berechnen
-
- ParaRange aSel = ImpGetSelectedParagraphs( TRUE );
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
-
- sal_Int16 nOldDepth = pPara->GetDepth();
- sal_Int16 nNewDepth = nOldDepth + nDiff;
-
- if( bOutlinerView && nPara )
- {
- const bool bPage = pPara->HasFlag(PARAFLAG_ISPAGE);
- if( (bPage && (nDiff == +1)) || (!bPage && (nDiff == -1) && (nOldDepth <= 0)) )
- {
- // App benachrichtigen
- pOwner->nDepthChangedHdlPrevDepth = (sal_Int16)nOldDepth;
- pOwner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pOwner->pHdlParagraph = pPara;
-
- if( bPage )
- pPara->RemoveFlag( PARAFLAG_ISPAGE );
- else
- pPara->SetFlag( PARAFLAG_ISPAGE );
-
- pOwner->DepthChangedHdl();
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) );
-
- if( bUndo )
- pOwner->InsertUndo( new OutlinerUndoChangeParaFlags( pOwner, nPara, pOwner->mnDepthChangeHdlPrevFlags, pPara->nFlags ) );
-
- continue;
- }
- }
-
- // do not switch off numeration with tab
- if( (nOldDepth == 0) && (nNewDepth == -1) )
- continue;
-
- // do not indent if there is no numeration enabled
- if( nOldDepth == -1 )
- continue;
-
- if ( nNewDepth < pOwner->nMinDepth )
- nNewDepth = pOwner->nMinDepth;
- if ( nNewDepth > pOwner->nMaxDepth )
- nNewDepth = pOwner->nMaxDepth;
-
- if( nOldDepth < nMinDepth )
- nMinDepth = nOldDepth;
- if( nNewDepth < nMinDepth )
- nMinDepth = nNewDepth;
-
- if( nOldDepth != nNewDepth )
- {
- if ( ( nPara == aSel.nStartPara ) && aSel.nStartPara && ( pOwner->ImplGetOutlinerMode() != OUTLINERMODE_TEXTOBJECT ))
- {
- // Sonderfall: Der Vorgaenger eines eingerueckten Absatzes ist
- // unsichtbar und steht jetzt auf der gleichen Ebene wie der
- // sichtbare Absatz. In diesem Fall wird der naechste sichtbare
- // Absatz gesucht und aufgeplustert.
-#ifdef DBG_UTIL
- Paragraph* _pPara = pOwner->pParaList->GetParagraph( aSel.nStartPara );
- DBG_ASSERT(_pPara->IsVisible(),"Selected Paragraph invisible ?!");
-#endif
- Paragraph* pPrev= pOwner->pParaList->GetParagraph( aSel.nStartPara-1 );
-
- if( !pPrev->IsVisible() && ( pPrev->GetDepth() == nNewDepth ) )
- {
- // Vorgaenger ist eingeklappt und steht auf gleicher Ebene
- // => naechsten sichtbaren Absatz suchen und expandieren
- pPrev = pOwner->pParaList->GetParent( pPrev );
- while( !pPrev->IsVisible() )
- pPrev = pOwner->pParaList->GetParent( pPrev );
-
- pOwner->Expand( pPrev );
- pOwner->InvalidateBullet( pPrev, pOwner->pParaList->GetAbsPos( pPrev ) );
- }
- }
-
- pOwner->nDepthChangedHdlPrevDepth = (sal_Int16)nOldDepth;
- pOwner->mnDepthChangeHdlPrevFlags = pPara->nFlags;
- pOwner->pHdlParagraph = pPara;
-
- pOwner->ImplInitDepth( nPara, nNewDepth, TRUE, FALSE );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- pOwner->ImplSetLevelDependendStyleSheet( nPara );
-
- // App benachrichtigen
- pOwner->DepthChangedHdl();
- }
- else
- {
- // Needs at least a repaint...
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( nPara, 0, nPara, 0 ) );
- }
- }
-
- // MT 19.08.99: War mal fuer Optimierung (outliner.cxx#1.193),
- // hat aber zu zuviel Wartungsaufwand / doppelten Funktionen gefuehrt
- // und zu wenig gebracht:
- // pOwner->ImpSetBulletTextsFrom( aSel.nStartPara+1, nMinDepth );
- // Wird jetzt direkt in Schleife mit ImplCalcBulletText() erledigt.
- // Jetzt fehlen nur noch die folgenden Ansaetze, die davon betroffen sind.
- USHORT nParas = (USHORT)pOwner->pParaList->GetParagraphCount();
- for ( USHORT n = aSel.nEndPara+1; n < nParas; n++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( n );
- if ( pPara->GetDepth() < nMinDepth )
- break;
- pOwner->ImplCalcBulletText( n, FALSE, FALSE );
- }
-
- if ( bUpdate )
- {
- pEditView->SetEditEngineUpdateMode( TRUE );
- pEditView->ShowCursor();
- }
-
- if( bUndo )
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-BOOL OutlinerView::AdjustHeight( long nDY )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->MoveParagraphs( nDY );
- return TRUE; // remove return value...
-}
-
-void OutlinerView::AdjustDepth( Paragraph* pPara, short nDX, BOOL bWithChilds)
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nStartPara = pOwner->pParaList->GetAbsPos( pPara );
- ULONG nEndPara = nStartPara;
- if ( bWithChilds )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- ESelection aSel((USHORT)nStartPara, 0,(USHORT)nEndPara, 0xffff );
- pEditView->SetSelection( aSel );
- AdjustDepth( nDX );
-}
-
-void OutlinerView::AdjustHeight( Paragraph* pPara, long nDY, BOOL bWithChilds )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nStartPara = pOwner->pParaList->GetAbsPos( pPara );
- ULONG nEndPara = nStartPara;
- if ( bWithChilds )
- nEndPara += pOwner->pParaList->GetChildCount( pPara );
- ESelection aSel( (USHORT)nStartPara, 0, (USHORT)nEndPara, 0xffff );
- pEditView->SetSelection( aSel );
- AdjustHeight( nDY );
-}
-
-
-Rectangle OutlinerView::GetVisArea() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetVisArea();
-}
-
-
-Point OutlinerView::ImpGetDocPos( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aOutArWin = GetOutputArea();
- // Position in der OutputArea berechnen
- Point aCurPosDoc( rPosPixel );
- aCurPosDoc = pEditView->GetWindow()->PixelToLogic( aCurPosDoc );
- aCurPosDoc -= aOutArWin.TopLeft();
- aCurPosDoc += pEditView->GetVisArea().TopLeft();
- return aCurPosDoc;
-}
-
-// MT 05/00: Wofuer dies ImpXXXScroll, sollte das nicht die EditEngine machen???
-
-void OutlinerView::ImpDragScroll( const Point& rPosPix )
-{
- DBG_CHKTHIS(OutlinerView,0);
- Point aPosWin = pEditView->GetWindow()->PixelToLogic( rPosPix );
- Rectangle aOutputArWin = pEditView->GetOutputArea();
- if ( aPosWin.X() <= aOutputArWin.Left() + nDDScrollLRBorderWidthWin)
- ImpScrollLeft();
- else if( aPosWin.X() >= aOutputArWin.Right()- nDDScrollLRBorderWidthWin)
- ImpScrollRight();
- else if( aPosWin.Y() <= aOutputArWin.Top() + nDDScrollTBBorderWidthWin)
- ImpScrollUp();
- else if(aPosWin.Y() >= aOutputArWin.Bottom() - nDDScrollTBBorderWidthWin)
- ImpScrollDown();
-}
-
-
-void OutlinerView::ImpScrollLeft()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = aVisArea.Left();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetWidth() * OL_SCROLL_HOROFFSET) / 100;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
-
- ImpHideDDCursor();
- Scroll( -nScrollOffsRef, 0 );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_HSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollRight()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = pOwner->pEditEngine->GetPaperSize().Width() -
- aVisArea.Right();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetWidth() * OL_SCROLL_HOROFFSET) / 100;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
-
- ImpHideDDCursor();
- Scroll( nScrollOffsRef, 0 );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_HSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollDown()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- Size aDocSize( 0, (long)pOwner->pEditEngine->GetTextHeight() );
-
- long nMaxScrollOffs = aDocSize.Height();
- nMaxScrollOffs -= aVisArea.Top();
- nMaxScrollOffs -= aVisArea.GetHeight();
- if ( !nMaxScrollOffs )
- return;
-
- long nScrollOffsRef = (aVisArea.GetHeight() * OL_SCROLL_VEROFFSET) / 100;
-
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
-
- ImpHideDDCursor();
- Scroll( 0, -nScrollOffsRef );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_VSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::ImpScrollUp()
-{
- DBG_CHKTHIS(OutlinerView,0);
- Rectangle aVisArea( pEditView->GetVisArea() );
- long nMaxScrollOffs = aVisArea.Top();
- if ( !nMaxScrollOffs )
- return;
- long nScrollOffsRef = (aVisArea.GetHeight() * OL_SCROLL_VEROFFSET) / 100;
-
-
- if ( nScrollOffsRef > nMaxScrollOffs )
- nScrollOffsRef = nMaxScrollOffs;
- if ( !nScrollOffsRef )
- nScrollOffsRef = 1;
-
- ImpHideDDCursor();
- Scroll( 0, nScrollOffsRef );
-
- EditStatus aScrollStat;
- aScrollStat.GetStatusWord() = EE_STAT_VSCROLL;
- pOwner->pEditEngine->GetStatusEventHdl().Call( &aScrollStat );
-}
-
-
-void OutlinerView::Expand()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ParaRange aParas = ImpGetSelectedParagraphs( FALSE );
- ImplExpandOrCollaps( aParas.nStartPara, aParas.nEndPara, TRUE );
-}
-
-
-void OutlinerView::Collapse()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ParaRange aParas = ImpGetSelectedParagraphs( FALSE );
- ImplExpandOrCollaps( aParas.nStartPara, aParas.nEndPara, FALSE );
-}
-
-
-void OutlinerView::ExpandAll()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
- ImplExpandOrCollaps( 0, (USHORT)(pOwner->pParaList->GetParagraphCount()-1), TRUE );
-}
-
-
-void OutlinerView::CollapseAll()
-{
- DBG_CHKTHIS(OutlinerView,0);
- ImplExpandOrCollaps( 0, (USHORT)(pOwner->pParaList->GetParagraphCount()-1), FALSE );
-}
-
-void OutlinerView::ImplExpandOrCollaps( USHORT nStartPara, USHORT nEndPara, BOOL bExpand )
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- BOOL bUpdate = pOwner->GetUpdateMode();
- pOwner->SetUpdateMode( FALSE );
-
- BOOL bUndo = !pOwner->IsInUndo() && pOwner->IsUndoEnabled();
- if( bUndo )
- pOwner->UndoActionStart( bExpand ? OLUNDO_EXPAND : OLUNDO_COLLAPSE );
-
- for ( USHORT nPara = nStartPara; nPara <= nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- BOOL bDone = bExpand ? pOwner->Expand( pPara ) : pOwner->Collapse( pPara );
- if( bDone )
- {
- // Der Strich unter dem Absatz muss verschwinden...
- pOwner->pEditEngine->QuickMarkToBeRepainted( nPara );
- }
- }
-
- if( bUndo )
- pOwner->UndoActionEnd( bExpand ? OLUNDO_EXPAND : OLUNDO_COLLAPSE );
-
- if ( bUpdate )
- {
- pOwner->SetUpdateMode( TRUE );
- pEditView->ShowCursor();
- }
-}
-
-
-void OutlinerView::Expand( Paragraph* pPara)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->Expand( pPara );
-}
-
-
-void OutlinerView::Collapse( Paragraph* pPara)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->Collapse( pPara );
-}
-
-void OutlinerView::InsertText( const OutlinerParaObject& rParaObj )
-{
- // MT: Wie Paste, nur EditView::Insert, statt EditView::Paste.
- // Eigentlich nicht ganz richtig, das evtl. Einrueckungen
- // korrigiert werden muessen, aber das kommt spaeter durch ein
- // allgemeingueltiges Import.
- // Dann wird im Inserted gleich ermittelt, was fr eine Einrueckebene
- // Moegliche Struktur:
- // pImportInfo mit DestPara, DestPos, nFormat, pParaObj...
- // Evtl. Problematisch:
- // EditEngine, RTF => Absplittung des Bereichs, spaeter
- // zusammenfuehrung
-
- DBG_CHKTHIS(OutlinerView,0);
-
- if ( ImpCalcSelectedPages( FALSE ) && !pOwner->ImpCanDeleteSelectedPages( this ) )
- return;
-
- pOwner->UndoActionStart( OLUNDO_INSERT );
-
- pOwner->pEditEngine->SetUpdateMode( FALSE );
- ULONG nStart, nParaCount;
- nParaCount = pOwner->pEditEngine->GetParagraphCount();
- USHORT nSize = ImpInitPaste( nStart );
- pEditView->InsertText( rParaObj.GetTextObject() );
- ImpPasted( nStart, nParaCount, nSize);
- pEditView->SetEditEngineUpdateMode( TRUE );
-
- pOwner->UndoActionEnd( OLUNDO_INSERT );
-
- pEditView->ShowCursor( TRUE, TRUE );
-}
-
-
-
-void OutlinerView::Cut()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !ImpCalcSelectedPages( FALSE ) || pOwner->ImpCanDeleteSelectedPages( this ) )
- pEditView->Cut();
-}
-
-void OutlinerView::Paste()
-{
- DBG_CHKTHIS(OutlinerView,0);
- PasteSpecial(); // HACK(SD ruft nicht PasteSpecial auf)
-}
-
-void OutlinerView::PasteSpecial()
-{
- DBG_CHKTHIS(OutlinerView,0);
- if ( !ImpCalcSelectedPages( FALSE ) || pOwner->ImpCanDeleteSelectedPages( this ) )
- {
- pOwner->UndoActionStart( OLUNDO_INSERT );
-
- pOwner->pEditEngine->SetUpdateMode( FALSE );
- pOwner->bPasting = TRUE;
- pEditView->PasteSpecial();
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- {
- const USHORT nParaCount = pOwner->pEditEngine->GetParagraphCount();
-
- for( USHORT nPara = 0; nPara < nParaCount; nPara++ )
- pOwner->ImplSetLevelDependendStyleSheet( nPara );
- }
-
- pEditView->SetEditEngineUpdateMode( TRUE );
- pOwner->UndoActionEnd( OLUNDO_INSERT );
- pEditView->ShowCursor( TRUE, TRUE );
- }
-}
-
-List* OutlinerView::CreateSelectionList()
-{
- DBG_CHKTHIS( OutlinerView, 0 );
-
- ParaRange aParas = ImpGetSelectedParagraphs( TRUE );
- List* pSelList = new List;
- for ( USHORT nPara = aParas.nStartPara; nPara <= aParas.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- pSelList->Insert( pPara, LIST_APPEND );
- }
- return pSelList;
-}
-
-SfxStyleSheet* OutlinerView::GetStyleSheet() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetStyleSheet();
-}
-
-void OutlinerView::SetStyleSheet( SfxStyleSheet* pStyle )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetStyleSheet( pStyle );
-
- ParaRange aSel = ImpGetSelectedParagraphs( TRUE );
- for( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- pOwner->ImplCheckNumBulletItem( nPara );
- pOwner->ImplCalcBulletText( nPara, FALSE, FALSE );
- }
-}
-
-Pointer OutlinerView::GetPointer( const Point& rPosPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- MouseTarget eTarget;
- ImpCheckMousePos( rPosPixel, eTarget );
-
- PointerStyle ePointerStyle = POINTER_ARROW;
- if ( eTarget == MouseText )
- {
- ePointerStyle = GetOutliner()->IsVertical() ? POINTER_TEXT_VERTICAL : POINTER_TEXT;
- }
- else if ( eTarget == MouseHypertext )
- {
- ePointerStyle = POINTER_REFHAND;
- }
- else if ( eTarget == MouseBullet )
- {
- ePointerStyle = POINTER_MOVE;
- }
-
- return Pointer( ePointerStyle );
-}
-
-
-USHORT OutlinerView::ImpInitPaste( ULONG& rStart )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->bPasting = TRUE;
- ESelection aSelection( pEditView->GetSelection() );
- aSelection.Adjust();
- rStart = aSelection.nStartPara;
- USHORT nSize = aSelection.nEndPara - aSelection.nStartPara + 1;
- return nSize;
-}
-
-
-void OutlinerView::ImpPasted( ULONG nStart, ULONG nPrevParaCount, USHORT nSize)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pOwner->bPasting = FALSE;
- ULONG nCurParaCount = (ULONG)pOwner->pEditEngine->GetParagraphCount();
- if( nCurParaCount < nPrevParaCount )
- nSize = sal::static_int_cast< USHORT >(
- nSize - ( nPrevParaCount - nCurParaCount ) );
- else
- nSize = sal::static_int_cast< USHORT >(
- nSize + ( nCurParaCount - nPrevParaCount ) );
- pOwner->ImpTextPasted( nStart, nSize );
-}
-
-
-void OutlinerView::Command( const CommandEvent& rCEvt )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Command( rCEvt );
-}
-
-
-void OutlinerView::SelectRange( ULONG nFirst, USHORT nCount )
-{
- DBG_CHKTHIS(OutlinerView,0);
- ULONG nLast = nFirst+nCount;
- nCount = (USHORT)pOwner->pParaList->GetParagraphCount();
- if( nLast <= nCount )
- nLast = nCount - 1;
- ESelection aSel( (USHORT)nFirst, 0, (USHORT)nLast, 0xffff );
- pEditView->SetSelection( aSel );
-}
-
-
-USHORT OutlinerView::ImpCalcSelectedPages( BOOL bIncludeFirstSelected )
-{
- DBG_CHKTHIS(OutlinerView,0);
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- USHORT nPages = 0;
- USHORT nFirstPage = 0xFFFF;
- USHORT nStartPara = aSel.nStartPara;
- if ( !bIncludeFirstSelected )
- nStartPara++; // alle nach StartPara kommenden Absaetze werden geloescht
- for ( USHORT nPara = nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "ImpCalcSelectedPages: ungueltige Selection? ");
- if( pPara->HasFlag(PARAFLAG_ISPAGE) )
- {
- nPages++;
- if( nFirstPage == 0xFFFF )
- nFirstPage = nPara;
- }
- }
-
- if( nPages )
- {
- pOwner->nDepthChangedHdlPrevDepth = nPages;
- pOwner->pHdlParagraph = 0;
- pOwner->mnFirstSelPage = nFirstPage;
- }
-
- return nPages;
-}
-
-
-void OutlinerView::ToggleBullets()
-{
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- const bool bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- sal_Int16 nDepth = -2;
-
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "OutlinerView::ToggleBullets(), illegal selection?");
-
- if( pPara )
- {
- if( nDepth == -2 )
- nDepth = (pOwner->GetDepth(nPara) == -1) ? 0 : -1;
-
- pOwner->SetDepth( pPara, nDepth );
-
- if( nDepth == -1 )
- {
- const SfxItemSet& rAttrs = pOwner->GetParaAttribs( nPara );
- if(rAttrs.GetItemState( EE_PARA_BULLETSTATE ) == SFX_ITEM_SET)
- {
- SfxItemSet aAttrs(rAttrs);
- aAttrs.ClearItem( EE_PARA_BULLETSTATE );
- pOwner->SetParaAttribs( nPara, aAttrs );
- }
- }
- }
- }
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- USHORT nParaCount = (USHORT) (pOwner->pParaList->GetParagraphCount());
- // <--
- pOwner->ImplCheckParagraphs( aSel.nStartPara, nParaCount );
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( aSel.nStartPara, 0, nParaCount, 0 ) );
-
- pOwner->pEditEngine->SetUpdateMode( bUpdate );
-
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-void OutlinerView::EnableBullets()
-{
- pOwner->UndoActionStart( OLUNDO_DEPTH );
-
- ESelection aSel( pEditView->GetSelection() );
- aSel.Adjust();
-
- const bool bUpdate = pOwner->pEditEngine->GetUpdateMode();
- pOwner->pEditEngine->SetUpdateMode( FALSE );
-
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- DBG_ASSERT(pPara, "OutlinerView::ToggleBullets(), illegal selection?");
-
- if( pPara && (pOwner->GetDepth(nPara) == -1) )
- {
- pOwner->SetDepth( pPara, 0 );
- }
- }
-
- // --> OD 2009-03-10 #i100014#
- // It is not a good idea to substract 1 from a count and cast the result
- // to USHORT without check, if the count is 0.
- USHORT nParaCount = (USHORT) (pOwner->pParaList->GetParagraphCount());
- // <--
- pOwner->ImplCheckParagraphs( aSel.nStartPara, nParaCount );
- pOwner->pEditEngine->QuickMarkInvalid( ESelection( aSel.nStartPara, 0, nParaCount, 0 ) );
-
- pOwner->pEditEngine->SetUpdateMode( bUpdate );
-
- pOwner->UndoActionEnd( OLUNDO_DEPTH );
-}
-
-
-void OutlinerView::RemoveAttribsKeepLanguages( BOOL bRemoveParaAttribs )
-{
- RemoveAttribs( bRemoveParaAttribs, 0, TRUE /*keep language attribs*/ );
-}
-
-void OutlinerView::RemoveAttribs( BOOL bRemoveParaAttribs, USHORT nWhich, BOOL bKeepLanguages )
-{
- DBG_CHKTHIS(OutlinerView,0);
- BOOL bUpdate = pOwner->GetUpdateMode();
- pOwner->SetUpdateMode( FALSE );
- pOwner->UndoActionStart( OLUNDO_ATTR );
- if (bKeepLanguages)
- pEditView->RemoveAttribsKeepLanguages( bRemoveParaAttribs );
- else
- pEditView->RemoveAttribs( bRemoveParaAttribs, nWhich );
- if ( bRemoveParaAttribs )
- {
- // Ueber alle Absaetze, und Einrueckung und Level einstellen
- ESelection aSel = pEditView->GetSelection();
- aSel.Adjust();
- for ( USHORT nPara = aSel.nStartPara; nPara <= aSel.nEndPara; nPara++ )
- {
- Paragraph* pPara = pOwner->pParaList->GetParagraph( nPara );
- pOwner->ImplInitDepth( nPara, pPara->GetDepth(), FALSE, FALSE );
- }
- }
- pOwner->UndoActionEnd( OLUNDO_ATTR );
- pOwner->SetUpdateMode( bUpdate );
-}
-
-
-
- // =====================================================================
-// ====================== Einfache Durchreicher =======================
-// ======================================================================
-
-
-void OutlinerView::InsertText( const XubString& rNew, BOOL bSelect )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if( pOwner->bFirstParaIsEmpty )
- pOwner->Insert( String() );
- pEditView->InsertText( rNew, bSelect );
-}
-
-void OutlinerView::SetVisArea( const Rectangle& rRec )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetVisArea( rRec );
-}
-
-
-void OutlinerView::SetSelection( const ESelection& rSel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetSelection( rSel );
-}
-
-void OutlinerView::SetReadOnly( BOOL bReadOnly )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetReadOnly( bReadOnly );
-}
-
-BOOL OutlinerView::IsReadOnly() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsReadOnly();
-}
-
-BOOL OutlinerView::HasSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->HasSelection();
-}
-
-
-void OutlinerView::ShowCursor( BOOL bGotoCursor )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->ShowCursor( bGotoCursor );
-}
-
-
-void OutlinerView::HideCursor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->HideCursor();
-}
-
-
-void OutlinerView::SetWindow( Window* pWin )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetWindow( pWin );
-}
-
-
-Window* OutlinerView::GetWindow() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetWindow();
-}
-
-
-void OutlinerView::SetOutputArea( const Rectangle& rRect )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetOutputArea( rRect );
-}
-
-
-Rectangle OutlinerView::GetOutputArea() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetOutputArea();
-}
-
-
-XubString OutlinerView::GetSelected() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelected();
-}
-
-
-void OutlinerView::RemoveCharAttribs( ULONG nPara, USHORT nWhich)
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->RemoveCharAttribs( (USHORT)nPara, nWhich);
-}
-
-
-void OutlinerView::CompleteAutoCorrect()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->CompleteAutoCorrect();
-}
-
-
-EESpellState OutlinerView::StartSpeller( BOOL bMultiDoc )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartSpeller( bMultiDoc );
-}
-
-
-EESpellState OutlinerView::StartThesaurus()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartThesaurus();
-}
-
-
-void OutlinerView::StartTextConversion(
- LanguageType nSrcLang, LanguageType nDestLang, const Font *pDestFont,
- INT32 nOptions, BOOL bIsInteractive, BOOL bMultipleDoc )
-{
- DBG_CHKTHIS(OutlinerView,0);
- if (
- (LANGUAGE_KOREAN == nSrcLang && LANGUAGE_KOREAN == nDestLang) ||
- (LANGUAGE_CHINESE_SIMPLIFIED == nSrcLang && LANGUAGE_CHINESE_TRADITIONAL == nDestLang) ||
- (LANGUAGE_CHINESE_TRADITIONAL == nSrcLang && LANGUAGE_CHINESE_SIMPLIFIED == nDestLang)
- )
- {
- pEditView->StartTextConversion( nSrcLang, nDestLang, pDestFont, nOptions, bIsInteractive, bMultipleDoc );
- }
- else
- {
- DBG_ERROR( "unexpected language" );
- }
-}
-
-
-USHORT OutlinerView::StartSearchAndReplace( const SvxSearchItem& rSearchItem )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->StartSearchAndReplace( rSearchItem );
-}
-
-void OutlinerView::TransliterateText( sal_Int32 nTransliterationMode )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->TransliterateText( nTransliterationMode );
-}
-
-
-
-ESelection OutlinerView::GetSelection()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelection();
-}
-
-
-void OutlinerView::Scroll( long nHorzScroll, long nVertScroll )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Scroll( nHorzScroll, nVertScroll );
-}
-
-
-void OutlinerView::SetControlWord( ULONG nWord )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetControlWord( nWord );
-}
-
-
-ULONG OutlinerView::GetControlWord() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetControlWord();
-}
-
-
-void OutlinerView::SetAnchorMode( EVAnchorMode eMode )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetAnchorMode( eMode );
-}
-
-
-EVAnchorMode OutlinerView::GetAnchorMode() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetAnchorMode();
-}
-
-
-void OutlinerView::Undo()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Undo();
-}
-
-
-void OutlinerView::Redo()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Redo();
-}
-
-
-void OutlinerView::EnablePaste( BOOL bEnable )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->EnablePaste( bEnable );
-}
-
-
-void OutlinerView::Copy()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->Copy();
-}
-
-
-void OutlinerView::InsertField( const SvxFieldItem& rFld )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->InsertField( rFld );
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldUnderMousePointer() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldUnderMousePointer();
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldUnderMousePointer( USHORT& nPara, USHORT& nPos ) const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldUnderMousePointer( nPara, nPos );
-}
-
-
-const SvxFieldItem* OutlinerView::GetFieldAtSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetFieldAtSelection();
-}
-
-void OutlinerView::SetInvalidateMore( USHORT nPixel )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetInvalidateMore( nPixel );
-}
-
-
-USHORT OutlinerView::GetInvalidateMore() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetInvalidateMore();
-}
-
-
-BOOL OutlinerView::IsCursorAtWrongSpelledWord( BOOL bMarkIfWrong )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsCursorAtWrongSpelledWord( bMarkIfWrong );
-}
-
-
-BOOL OutlinerView::IsWrongSpelledWordAtPos( const Point& rPosPixel, BOOL bMarkIfWrong )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->IsWrongSpelledWordAtPos( rPosPixel, bMarkIfWrong );
-}
-
-
-void OutlinerView::SpellIgnoreWord()
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SpellIgnoreWord();
-}
-
-
-void OutlinerView::ExecuteSpellPopup( const Point& rPosPixel, Link* pStartDlg )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->ExecuteSpellPopup( rPosPixel, pStartDlg );
-}
-
-ULONG OutlinerView::Read( SvStream& rInput, const String& rBaseURL, EETextFormat eFormat, BOOL bSelect, SvKeyValueIterator* pHTTPHeaderAttrs )
-{
- DBG_CHKTHIS(OutlinerView,0);
- USHORT nOldParaCount = pEditView->GetEditEngine()->GetParagraphCount();
- ESelection aOldSel = pEditView->GetSelection();
- aOldSel.Adjust();
-
- ULONG nRet = pEditView->Read( rInput, rBaseURL, eFormat, bSelect, pHTTPHeaderAttrs );
-
- // MT 08/00: Hier sollte eigentlich das gleiche wie in PasteSpecial passieren!
- // Mal anpassen, wenn dieses ImplInitPaste und ImpPasted-Geraffel ueberarbeitet ist.
-
- long nParaDiff = pEditView->GetEditEngine()->GetParagraphCount() - nOldParaCount;
- USHORT nChangesStart = aOldSel.nStartPara;
- USHORT nChangesEnd = sal::static_int_cast< USHORT >(nChangesStart + nParaDiff + (aOldSel.nEndPara-aOldSel.nStartPara));
-
- for ( USHORT n = nChangesStart; n <= nChangesEnd; n++ )
- {
- if ( eFormat == EE_FORMAT_BIN )
- {
- USHORT nDepth = 0;
- const SfxItemSet& rAttrs = pOwner->GetParaAttribs( n );
- const SfxInt16Item& rLevel = (const SfxInt16Item&) rAttrs.Get( EE_PARA_OUTLLEVEL );
- nDepth = rLevel.GetValue();
- pOwner->ImplInitDepth( n, nDepth, FALSE );
- }
-
- if ( pOwner->ImplGetOutlinerMode() == OUTLINERMODE_OUTLINEOBJECT )
- pOwner->ImplSetLevelDependendStyleSheet( n );
- }
-
- if ( eFormat != EE_FORMAT_BIN )
- {
- pOwner->ImpFilterIndents( nChangesStart, nChangesEnd );
- }
-
- return nRet;
-}
-
-ULONG OutlinerView::Write( SvStream& rOutput, EETextFormat eFormat )
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->Write( rOutput, eFormat );
-}
-
-void OutlinerView::SetBackgroundColor( const Color& rColor )
-{
- DBG_CHKTHIS(OutlinerView,0);
- pEditView->SetBackgroundColor( rColor );
-}
-
-
-Color OutlinerView::GetBackgroundColor()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetBackgroundColor();
-}
-
-SfxItemSet OutlinerView::GetAttribs()
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetAttribs();
-}
-
-USHORT OutlinerView::GetSelectedScriptType() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSelectedScriptType();
-}
-
-String OutlinerView::GetSurroundingText() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSurroundingText();
-}
-
-Selection OutlinerView::GetSurroundingTextSelection() const
-{
- DBG_CHKTHIS(OutlinerView,0);
- return pEditView->GetSurroundingTextSelection();
-}