summaryrefslogtreecommitdiff
path: root/sc/source/ui/view/drawview.cxx
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:27 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:27 +0100
commitf457a7fdbb4400f34844af0492dc32d2f3623c95 (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /sc/source/ui/view/drawview.cxx
parent2601b25912a2ed05ed8d009bca40aa8b479f39d8 (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'sc/source/ui/view/drawview.cxx')
-rw-r--r--sc/source/ui/view/drawview.cxx753
1 files changed, 0 insertions, 753 deletions
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
deleted file mode 100644
index 69961d001..000000000
--- a/sc/source/ui/view/drawview.cxx
+++ /dev/null
@@ -1,753 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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_sc.hxx"
-
-// INCLUDE ---------------------------------------------------------------
-
-#include <com/sun/star/embed/EmbedStates.hpp>
-
-#include <svx/svditer.hxx>
-#include <svx/svdograf.hxx>
-#include <svx/svdomedia.hxx>
-#include <svx/svdogrp.hxx>
-#include <svx/svdoole2.hxx>
-#include <svx/svdouno.hxx>
-#include <svx/svdpage.hxx>
-#include <svx/svdundo.hxx>
-#include <svx/svdocapt.hxx>
-#include <editeng/outlobj.hxx>
-#include <editeng/writingmodeitem.hxx>
-#include <svx/sdrpaintwindow.hxx>
-#include <sfx2/bindings.hxx>
-#include <sfx2/viewfrm.hxx>
-
-#include "drawview.hxx"
-#include "global.hxx"
-#include "viewdata.hxx"
-#include "document.hxx"
-#include "drawutil.hxx"
-#include "futext.hxx"
-#include "globstr.hrc"
-#include "tabvwsh.hxx"
-#include "client.hxx"
-#include "scmod.hxx"
-#include "drwlayer.hxx"
-#include "docsh.hxx"
-#include "viewuno.hxx"
-#include "userdat.hxx"
-#include "postit.hxx"
-#include "undocell.hxx"
-
-#include "sc.hrc"
-
-using namespace com::sun::star;
-
-// -----------------------------------------------------------------------
-
-#define SC_HANDLESIZE_BIG 9
-#define SC_HANDLESIZE_SMALL 7
-
-// -----------------------------------------------------------------------
-
-#ifdef _MSC_VER
-#pragma optimize ( "", off )
-#endif
-
-
-void ScDrawView::Construct()
-{
- EnableExtendedKeyInputDispatcher(false);
- EnableExtendedMouseEventDispatcher(false);
- EnableExtendedCommandEventDispatcher(false);
-
- SetFrameDragSingles(true);
-
- SetMinMoveDistancePixel( 2 );
- SetHitTolerancePixel( 2 );
-
- if (pViewData)
- {
- SCTAB nViewTab = pViewData->GetTabNo();
- ShowSdrPage(GetModel()->GetPage(nViewTab));
-
- sal_Bool bEx = pViewData->GetViewShell()->IsDrawSelMode();
- sal_Bool bProt = pDoc->IsTabProtected( nViewTab ) ||
- pViewData->GetSfxDocShell()->IsReadOnly();
-
- SdrLayer* pLayer;
- SdrLayerAdmin& rAdmin = GetModel()->GetLayerAdmin();
- pLayer = rAdmin.GetLayerPerID(SC_LAYER_BACK);
- if (pLayer)
- SetLayerLocked( pLayer->GetName(), bProt || !bEx );
- pLayer = rAdmin.GetLayerPerID(SC_LAYER_INTERN);
- if (pLayer)
- SetLayerLocked( pLayer->GetName(), sal_True );
- pLayer = rAdmin.GetLayerPerID(SC_LAYER_FRONT);
- if (pLayer)
- {
- SetLayerLocked( pLayer->GetName(), bProt );
- SetActiveLayer( pLayer->GetName() ); // set active layer to FRONT
- }
- pLayer = rAdmin.GetLayerPerID(SC_LAYER_CONTROLS);
- if (pLayer)
- SetLayerLocked( pLayer->GetName(), bProt );
- pLayer = rAdmin.GetLayerPerID(SC_LAYER_HIDDEN);
- if (pLayer)
- {
- SetLayerLocked( pLayer->GetName(), bProt );
- SetLayerVisible( pLayer->GetName(), false);
- }
-
- SetSwapAsynchron(sal_True);
- }
- else
- {
- ShowSdrPage(GetModel()->GetPage(nTab));
- }
-
- UpdateUserViewOptions();
- RecalcScale();
- UpdateWorkArea();
-
- bInConstruct = false;
-}
-
-void ScDrawView::ImplClearCalcDropMarker()
-{
- if(pDropMarker)
- {
- delete pDropMarker;
- pDropMarker = 0L;
- }
-}
-
-ScDrawView::~ScDrawView()
-{
- ImplClearCalcDropMarker();
-}
-
-void ScDrawView::AddCustomHdl()
-{
- const SdrMarkList &rMrkList = GetMarkedObjectList();
- sal_uInt32 nCount = rMrkList.GetMarkCount();
- for(sal_uInt32 nPos=0; nPos<nCount; nPos++ )
- {
- SdrObject* pObj = rMrkList.GetMark(nPos)->GetMarkedSdrObj();
- if (ScDrawObjData *pAnchor = ScDrawLayer::GetObjDataTab(pObj, nTab))
- {
- if (ScTabView* pView = pViewData->GetView())
- pView->CreateAnchorHandles(aHdl, pAnchor->maStart);
- }
- }
-}
-
-void ScDrawView::InvalidateAttribs()
-{
- if (!pViewData) return;
- SfxBindings& rBindings = pViewData->GetBindings();
-
- // true status values:
- rBindings.InvalidateAll( true );
-}
-
-void ScDrawView::InvalidateDrawTextAttrs()
-{
- if (!pViewData) return;
- SfxBindings& rBindings = pViewData->GetBindings();
-
- // cjk/ctl font items have no configured slots,
- // need no invalidate
-
- rBindings.Invalidate( SID_ATTR_CHAR_FONT );
- rBindings.Invalidate( SID_ATTR_CHAR_FONTHEIGHT );
- rBindings.Invalidate( SID_ATTR_CHAR_WEIGHT );
- rBindings.Invalidate( SID_ATTR_CHAR_POSTURE );
- rBindings.Invalidate( SID_ATTR_CHAR_UNDERLINE );
- rBindings.Invalidate( SID_ULINE_VAL_NONE );
- rBindings.Invalidate( SID_ULINE_VAL_SINGLE );
- rBindings.Invalidate( SID_ULINE_VAL_DOUBLE );
- rBindings.Invalidate( SID_ULINE_VAL_DOTTED );
- rBindings.Invalidate( SID_ATTR_CHAR_OVERLINE );
- rBindings.Invalidate( SID_ATTR_CHAR_COLOR );
- rBindings.Invalidate( SID_ALIGNLEFT );
- rBindings.Invalidate( SID_ALIGNCENTERHOR );
- rBindings.Invalidate( SID_ALIGNRIGHT );
- rBindings.Invalidate( SID_ALIGNBLOCK );
- rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_10 );
- rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_15 );
- rBindings.Invalidate( SID_ATTR_PARA_LINESPACE_20 );
- rBindings.Invalidate( SID_SET_SUPER_SCRIPT );
- rBindings.Invalidate( SID_SET_SUB_SCRIPT );
- rBindings.Invalidate( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
- rBindings.Invalidate( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
- rBindings.Invalidate( SID_ATTR_PARA_LEFT_TO_RIGHT );
- rBindings.Invalidate( SID_ATTR_PARA_RIGHT_TO_LEFT );
- // pseudo slots for Format menu
- rBindings.Invalidate( SID_ALIGN_ANY_LEFT );
- rBindings.Invalidate( SID_ALIGN_ANY_HCENTER );
- rBindings.Invalidate( SID_ALIGN_ANY_RIGHT );
- rBindings.Invalidate( SID_ALIGN_ANY_JUSTIFIED );
-}
-
-void ScDrawView::SetMarkedToLayer( sal_uInt8 nLayerNo )
-{
- if (AreObjectsMarked())
- {
- // #i11702# use SdrUndoObjectLayerChange for undo
- // STR_UNDO_SELATTR is "Attributes" - should use a different text later
- BegUndo( ScGlobal::GetRscString( STR_UNDO_SELATTR ) );
-
- const SdrMarkList& rMark = GetMarkedObjectList();
- sal_uLong nCount = rMark.GetMarkCount();
- for (sal_uLong i=0; i<nCount; i++)
- {
- SdrObject* pObj = rMark.GetMark(i)->GetMarkedSdrObj();
- if ( !pObj->ISA(SdrUnoObj) && (pObj->GetLayer() != SC_LAYER_INTERN) )
- {
- AddUndo( new SdrUndoObjectLayerChange( *pObj, pObj->GetLayer(), (SdrLayerID)nLayerNo) );
- pObj->SetLayer( nLayerNo );
- }
- }
-
- EndUndo();
-
- // repaint is done in SetLayer
-
- pViewData->GetDocShell()->SetDrawModified();
-
- // check mark list now instead of later in a timer
- CheckMarked();
- MarkListHasChanged();
- }
-}
-
-bool ScDrawView::HasMarkedControl() const
-{
- SdrObjListIter aIter( GetMarkedObjectList() );
- for( SdrObject* pObj = aIter.Next(); pObj; pObj = aIter.Next() )
- if( pObj->ISA( SdrUnoObj ) )
- return true;
- return false;
-}
-
-bool ScDrawView::HasMarkedInternal() const
-{
- // internal objects should not be inside a group, but who knows...
- SdrObjListIter aIter( GetMarkedObjectList() );
- for( SdrObject* pObj = aIter.Next(); pObj; pObj = aIter.Next() )
- if( pObj->GetLayer() == SC_LAYER_INTERN )
- return true;
- return false;
-}
-
-void ScDrawView::UpdateWorkArea()
-{
- SdrPage* pPage = GetModel()->GetPage(static_cast<sal_uInt16>(nTab));
- if (pPage)
- {
- Point aPos;
- Size aPageSize( pPage->GetSize() );
- Rectangle aNewArea( aPos, aPageSize );
- if ( aPageSize.Width() < 0 )
- {
- // RTL: from max.negative (left) to zero (right)
- aNewArea.Right() = 0;
- aNewArea.Left() = aPageSize.Width() + 1;
- }
- SetWorkArea( aNewArea );
- }
- else
- {
- OSL_FAIL("Page nicht gefunden");
- }
-}
-
-void ScDrawView::DoCut()
-{
- DoCopy();
- BegUndo( ScGlobal::GetRscString( STR_UNDO_CUT ) );
- DeleteMarked(); // auf dieser View - von der 505f Umstellung nicht betroffen
- EndUndo();
-}
-
-void ScDrawView::GetScale( Fraction& rFractX, Fraction& rFractY ) const
-{
- rFractX = aScaleX;
- rFractY = aScaleY;
-}
-
-void ScDrawView::RecalcScale()
-{
- double nPPTX;
- double nPPTY;
- Fraction aZoomX(1,1);
- Fraction aZoomY(1,1);
-
- if (pViewData)
- {
- nTab = pViewData->GetTabNo();
- nPPTX = pViewData->GetPPTX();
- nPPTY = pViewData->GetPPTY();
- aZoomX = pViewData->GetZoomX();
- aZoomY = pViewData->GetZoomY();
- }
- else
- {
- Point aLogic = pDev->LogicToPixel( Point(1000,1000), MAP_TWIP );
- nPPTX = aLogic.X() / 1000.0;
- nPPTY = aLogic.Y() / 1000.0;
- //! Zoom uebergeben ???
- }
-
- SCCOL nEndCol = 0;
- SCROW nEndRow = 0;
- pDoc->GetTableArea( nTab, nEndCol, nEndRow );
- if (nEndCol<20)
- nEndCol = 20;
- if (nEndRow<20)
- nEndRow = 1000;
-
- ScDrawUtil::CalcScale( pDoc, nTab, 0,0, nEndCol,nEndRow, pDev,aZoomX,aZoomY,nPPTX,nPPTY,
- aScaleX,aScaleY );
-}
-
-void ScDrawView::DoConnect(SdrOle2Obj* pOleObj)
-{
- if ( pViewData )
- pViewData->GetViewShell()->ConnectObject( pOleObj );
-}
-
-void ScDrawView::MarkListHasChanged()
-{
- FmFormView::MarkListHasChanged();
-
- UpdateBrowser();
-
- ScTabViewShell* pViewSh = pViewData->GetViewShell();
-
- // #i110829# remove the cell selection only if drawing objects are selected
- if ( !bInConstruct && GetMarkedObjectList().GetMarkCount() )
- {
- pViewSh->Unmark(); // remove cell selection
-
- // end cell edit mode if drawing objects are selected
- SC_MOD()->InputEnterHandler();
- }
-
- // IP deaktivieren
-
- ScModule* pScMod = SC_MOD();
- bool bUnoRefDialog = pScMod->IsRefDialogOpen() && pScMod->GetCurRefDlgId() == WID_SIMPLE_REF;
-
- ScClient* pClient = (ScClient*) pViewSh->GetIPClient();
- if ( pClient && pClient->IsObjectInPlaceActive() && !bUnoRefDialog )
- {
- // beim ViewShell::Activate aus dem Reset2Open nicht die Handles anzeigen
- pClient->DeactivateObject();
- // Image-Ole wieder durch Grafik ersetzen passiert jetzt in ScClient::UIActivate
- }
-
- // Ole-Objekt selektiert?
-
- SdrOle2Obj* pOle2Obj = NULL;
- SdrGrafObj* pGrafObj = NULL;
-
- const SdrMarkList& rMarkList = GetMarkedObjectList();
- sal_uLong nMarkCount = rMarkList.GetMarkCount();
-
- if ( nMarkCount == 0 && !pViewData->GetViewShell()->IsDrawSelMode() && !bInConstruct )
- {
- // relock layers that may have been unlocked before
- LockBackgroundLayer();
- LockInternalLayer();
- }
-
- sal_Bool bSubShellSet = false;
- if (nMarkCount == 1)
- {
- SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
- if (pObj->GetObjIdentifier() == OBJ_OLE2)
- {
- pOle2Obj = (SdrOle2Obj*) pObj;
- if (!pDoc->IsChart(pObj) )
- pViewSh->SetOleObjectShell(sal_True);
- else
- pViewSh->SetChartShell(sal_True);
- bSubShellSet = sal_True;
- }
- else if (pObj->GetObjIdentifier() == OBJ_GRAF)
- {
- pGrafObj = (SdrGrafObj*) pObj;
- pViewSh->SetGraphicShell(sal_True);
- bSubShellSet = sal_True;
- }
- else if (pObj->GetObjIdentifier() == OBJ_MEDIA)
- {
- pViewSh->SetMediaShell(true);
- bSubShellSet = true;
- }
- else if (pObj->GetObjIdentifier() != OBJ_TEXT // Verhindern, das beim Anlegen
- || !pViewSh->IsDrawTextShell()) // eines TextObjekts auf die
- { // DrawShell umgeschaltet wird.
- pViewSh->SetDrawShell(sal_True); //@#70206#
- }
- }
-
- if ( nMarkCount && !bSubShellSet )
- {
- sal_Bool bOnlyControls = sal_True;
- sal_Bool bOnlyGraf = sal_True;
- for (sal_uLong i=0; i<nMarkCount; i++)
- {
- SdrObject* pObj = rMarkList.GetMark(i)->GetMarkedSdrObj();
- if ( pObj->ISA( SdrObjGroup ) )
- {
- const SdrObjList *pLst = ((SdrObjGroup*)pObj)->GetSubList();
- sal_uLong nListCount = pLst->GetObjCount();
- if ( nListCount == 0 )
- {
- // An empty group (may occur during Undo) is no control or graphics object.
- // Creating the form shell during undo would lead to problems with the undo manager.
- bOnlyControls = false;
- bOnlyGraf = false;
- }
- for ( sal_uInt16 j = 0; j < nListCount; ++j )
- {
- SdrObject *pSubObj = pLst->GetObj( j );
-
- if (!pSubObj->ISA(SdrUnoObj))
- bOnlyControls = false;
- if (pSubObj->GetObjIdentifier() != OBJ_GRAF)
- bOnlyGraf = false;
-
- if ( !bOnlyControls && !bOnlyGraf ) break;
- }
- }
- else
- {
- if (!pObj->ISA(SdrUnoObj))
- bOnlyControls = false;
- if (pObj->GetObjIdentifier() != OBJ_GRAF)
- bOnlyGraf = false;
- }
-
- if ( !bOnlyControls && !bOnlyGraf ) break;
- }
-
- if(bOnlyControls)
- {
- pViewSh->SetDrawFormShell(sal_True); // jetzt UNO-Controls
- }
- else if(bOnlyGraf)
- {
- pViewSh->SetGraphicShell(sal_True);
- }
- else if(nMarkCount>1)
- {
- pViewSh->SetDrawShell(sal_True);
- }
- }
-
-
-
- // Verben anpassen
-
- SfxViewFrame* pViewFrame = pViewSh->GetViewFrame();
- sal_Bool bOle = pViewSh->GetViewFrame()->GetFrame().IsInPlace();
- uno::Sequence< embed::VerbDescriptor > aVerbs;
- if ( pOle2Obj && !bOle )
- {
- uno::Reference < embed::XEmbeddedObject > xObj = pOle2Obj->GetObjRef();
- OSL_ENSURE( xObj.is(), "SdrOle2Obj ohne ObjRef" );
- if (xObj.is())
- aVerbs = xObj->getSupportedVerbs();
- }
- pViewSh->SetVerbs( aVerbs );
-
- // Image-Map Editor
-
- if ( pOle2Obj )
- UpdateIMap( pOle2Obj );
- else if ( pGrafObj )
- UpdateIMap( pGrafObj );
-
- InvalidateAttribs(); // nach dem IMap-Editor Update
- InvalidateDrawTextAttrs();
-
- for(sal_uInt32 a(0L); a < PaintWindowCount(); a++)
- {
- SdrPaintWindow* pPaintWindow = GetPaintWindow(a);
- OutputDevice& rOutDev = pPaintWindow->GetOutputDevice();
-
- if(OUTDEV_WINDOW == rOutDev.GetOutDevType())
- {
- ((Window&)rOutDev).Update();
- }
- }
-
- // uno object for view returns drawing objects as selection,
- // so it must notify its SelectionChangeListeners
-
- if (pViewFrame)
- {
- SfxFrame& rFrame = pViewFrame->GetFrame();
- uno::Reference<frame::XController> xController = rFrame.GetController();
- if (xController.is())
- {
- ScTabViewObj* pImp = ScTabViewObj::getImplementation( xController );
- if (pImp)
- pImp->SelectionChanged();
- }
- }
-
- // update selection transfer object
-
- pViewSh->CheckSelectionTransfer();
-
-}
-
-void ScDrawView::ModelHasChanged()
-{
- SdrObject* pEditObj = GetTextEditObject();
- if ( pEditObj && !pEditObj->IsInserted() && pViewData )
- {
- // SdrObjEditView::ModelHasChanged will end text edit in this case,
- // so make sure the EditEngine's undo manager is no longer used.
- pViewData->GetViewShell()->SetDrawTextUndo(NULL);
- SetCreateMode(); // don't leave FuText in a funny state
- }
-
- FmFormView::ModelHasChanged();
-}
-
-void ScDrawView::UpdateUserViewOptions()
-{
- if (pViewData)
- {
- const ScViewOptions& rOpt = pViewData->GetOptions();
- const ScGridOptions& rGrid = rOpt.GetGridOptions();
-
- sal_Bool bBigHdl = rOpt.GetOption( VOPT_BIGHANDLES );
-
- SetDragStripes( rOpt.GetOption( VOPT_HELPLINES ) );
- SetSolidMarkHdl( rOpt.GetOption( VOPT_SOLIDHANDLES ) );
- SetMarkHdlSizePixel( bBigHdl ? SC_HANDLESIZE_BIG : SC_HANDLESIZE_SMALL );
-
- SetGridVisible( rGrid.GetGridVisible() );
- SetSnapEnabled( rGrid.GetUseGridSnap() );
- SetGridSnap( rGrid.GetUseGridSnap() );
-
- Fraction aFractX( rGrid.GetFldDrawX(), rGrid.GetFldDivisionX() + 1 );
- Fraction aFractY( rGrid.GetFldDrawY(), rGrid.GetFldDivisionY() + 1 );
- SetSnapGridWidth( aFractX, aFractY );
-
- SetGridCoarse( Size( rGrid.GetFldDrawX(), rGrid.GetFldDrawY() ) );
- SetGridFine( Size( rGrid.GetFldDrawX() / (rGrid.GetFldDivisionX() + 1),
- rGrid.GetFldDrawY() / (rGrid.GetFldDivisionY() + 1) ) );
- }
-}
-
-#ifdef _MSC_VER
-#pragma optimize ( "", on )
-#endif
-
-sal_Bool ScDrawView::SelectObject( const String& rName )
-{
- UnmarkAll();
-
- SCTAB nObjectTab = 0;
- SdrObject* pFound = NULL;
-
- SfxObjectShell* pShell = pDoc->GetDocumentShell();
- if (pShell)
- {
- SdrModel* pDrawLayer = GetModel();
- SCTAB nTabCount = pDoc->GetTableCount();
- for (SCTAB i=0; i<nTabCount && !pFound; i++)
- {
- SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(i));
- OSL_ENSURE(pPage,"Page ?");
- if (pPage)
- {
- SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS );
- SdrObject* pObject = aIter.Next();
- while (pObject && !pFound)
- {
- if ( ScDrawLayer::GetVisibleName( pObject ) == rName )
- {
- pFound = pObject;
- nObjectTab = i;
- }
- pObject = aIter.Next();
- }
- }
- }
- }
-
- if ( pFound )
- {
- ScTabView* pView = pViewData->GetView();
- if ( nObjectTab != nTab ) // Tabelle umschalten
- pView->SetTabNo( nObjectTab );
-
- OSL_ENSURE( nTab == nObjectTab, "Tabellen umschalten hat nicht geklappt" );
-
- pView->ScrollToObject( pFound );
-
- /* To select an object on the background layer, the layer has to
- be unlocked even if exclusive drawing selection mode is not active
- (this is reversed in MarkListHasChanged when nothing is selected) */
- if ( pFound->GetLayer() == SC_LAYER_BACK &&
- !pViewData->GetViewShell()->IsDrawSelMode() &&
- !pDoc->IsTabProtected( nTab ) &&
- !pViewData->GetSfxDocShell()->IsReadOnly() )
- {
- UnlockBackgroundLayer();
- }
-
- SdrPageView* pPV = GetSdrPageView();
- MarkObj( pFound, pPV );
- }
-
- return ( pFound != NULL );
-}
-
-
-bool ScDrawView::InsertObjectSafe(SdrObject* pObj, SdrPageView& rPV, sal_uLong nOptions)
-{
- // Markierung nicht aendern, wenn Ole-Objekt aktiv
- // (bei Drop aus Ole-Objekt wuerde sonst mitten im ExecuteDrag deaktiviert!)
-
- if (pViewData)
- {
- SfxInPlaceClient* pClient = pViewData->GetViewShell()->GetIPClient();
- if ( pClient && pClient->IsObjectInPlaceActive() )
- nOptions |= SDRINSERT_DONTMARK;
- }
-
- return InsertObjectAtView( pObj, rPV, nOptions );
-}
-
-SdrObject* ScDrawView::GetMarkedNoteCaption( ScDrawObjData** ppCaptData )
-{
- const SdrMarkList& rMarkList = GetMarkedObjectList();
- if( pViewData && (rMarkList.GetMarkCount() == 1) )
- {
- SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
- if( ScDrawObjData* pCaptData = ScDrawLayer::GetNoteCaptionData( pObj, pViewData->GetTabNo() ) )
- {
- if( ppCaptData ) *ppCaptData = pCaptData;
- return pObj;
- }
- }
- return 0;
-}
-
-void ScDrawView::LockCalcLayer( SdrLayerID nLayer, bool bLock )
-{
- SdrLayer* pLockLayer = GetModel()->GetLayerAdmin().GetLayerPerID( nLayer );
- if( pLockLayer && (IsLayerLocked( pLockLayer->GetName() ) != bLock) )
- SetLayerLocked( pLockLayer->GetName(), bLock );
-}
-
-void ScDrawView::MakeVisible( const Rectangle& rRect, Window& rWin )
-{
- //! rWin richtig auswerten
- //! ggf Zoom aendern
-
- if ( pViewData && pViewData->GetActiveWin() == &rWin )
- pViewData->GetView()->MakeVisible( rRect );
-}
-
-void ScDrawView::DeleteMarked()
-{
- // try to delete a note caption object with its cell note in the Calc document
- ScDrawObjData* pCaptData = 0;
- if( SdrObject* pCaptObj = GetMarkedNoteCaption( &pCaptData ) )
- {
- (void)pCaptObj; // prevent 'unused variable' compiler warning in pro builds
- ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
- ScDocShell* pDocShell = pViewData ? pViewData->GetDocShell() : 0;
- ::svl::IUndoManager* pUndoMgr = pDocShell ? pDocShell->GetUndoManager() : 0;
- bool bUndo = pDrawLayer && pDocShell && pUndoMgr && pDoc->IsUndoEnabled();
-
- // remove the cell note from document, we are its owner now
- ScPostIt* pNote = pDoc->ReleaseNote( pCaptData->maStart );
- OSL_ENSURE( pNote, "ScDrawView::DeleteMarked - cell note missing in document" );
- if( pNote )
- {
- // rescue note data for undo (with pointer to caption object)
- ScNoteData aNoteData = pNote->GetNoteData();
- OSL_ENSURE( aNoteData.mpCaption == pCaptObj, "ScDrawView::DeleteMarked - caption object does not match" );
- // collect the drawing undo action created while deleting the note
- if( bUndo )
- pDrawLayer->BeginCalcUndo();
- // delete the note (already removed from document above)
- delete pNote;
- // add the undo action for the note
- if( bUndo )
- pUndoMgr->AddUndoAction( new ScUndoReplaceNote( *pDocShell, pCaptData->maStart, aNoteData, false, pDrawLayer->GetCalcUndo() ) );
- // repaint the cell to get rid of the note marker
- if( pDocShell )
- pDocShell->PostPaintCell( pCaptData->maStart );
- // done, return now to skip call of FmFormView::DeleteMarked()
- return;
- }
- }
-
- FmFormView::DeleteMarked();
-}
-
-SdrEndTextEditKind ScDrawView::ScEndTextEdit()
-{
- sal_Bool bIsTextEdit = IsTextEdit();
- SdrEndTextEditKind eKind = SdrEndTextEdit();
-
- if ( bIsTextEdit && pViewData )
- pViewData->GetViewShell()->SetDrawTextUndo(NULL); // "normaler" Undo-Manager
-
- return eKind;
-}
-
-void ScDrawView::MarkDropObj( SdrObject* pObj )
-{
- if ( pDropMarkObj != pObj )
- {
- pDropMarkObj = pObj;
- ImplClearCalcDropMarker();
-
- if(pDropMarkObj)
- {
- pDropMarker = new SdrDropMarkerOverlay(*this, *pDropMarkObj);
- }
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */