xref: /aoo41x/main/sd/source/ui/view/drviews1.cxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sd.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include "DrawViewShell.hxx"
32*cdf0e10cSrcweir #include "ViewShellImplementation.hxx"
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir #include "DrawController.hxx"
35*cdf0e10cSrcweir #include <com/sun/star/embed/EmbedStates.hpp>
36*cdf0e10cSrcweir 
37*cdf0e10cSrcweir #include "comphelper/anytostring.hxx"
38*cdf0e10cSrcweir #include "comphelper/scopeguard.hxx"
39*cdf0e10cSrcweir #include "cppuhelper/exc_hlp.hxx"
40*cdf0e10cSrcweir #include "rtl/ref.hxx"
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir #ifndef _SVXIDS_HRC
43*cdf0e10cSrcweir #include <svx/svxids.hrc>
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir #include <svx/svdpagv.hxx>
46*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx>
47*cdf0e10cSrcweir #include <sfx2/bindings.hxx>
48*cdf0e10cSrcweir #include <svx/svdoole2.hxx>
49*cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
50*cdf0e10cSrcweir #include <vcl/scrbar.hxx>
51*cdf0e10cSrcweir #include <svx/svdograf.hxx>
52*cdf0e10cSrcweir #include <svx/svdopage.hxx>
53*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
54*cdf0e10cSrcweir #include <sot/storage.hxx>
55*cdf0e10cSrcweir #include <svx/fmshell.hxx>
56*cdf0e10cSrcweir #include <svx/globl3d.hxx>
57*cdf0e10cSrcweir #include <svx/fmglob.hxx>
58*cdf0e10cSrcweir #include <editeng/outliner.hxx>
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir #include "misc.hxx"
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir #ifdef STARIMAGE_AVAILABLE
64*cdf0e10cSrcweir #ifndef _SIMDLL_HXX
65*cdf0e10cSrcweir #include <sim2/simdll.hxx>
66*cdf0e10cSrcweir #endif
67*cdf0e10cSrcweir #endif
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir #include <svx/dialogs.hrc>
70*cdf0e10cSrcweir 
71*cdf0e10cSrcweir #include "view/viewoverlaymanager.hxx"
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir #include "glob.hrc"
74*cdf0e10cSrcweir #include "app.hrc"
75*cdf0e10cSrcweir #include "res_bmp.hrc"
76*cdf0e10cSrcweir #include "strings.hrc"
77*cdf0e10cSrcweir #include "helpids.h"
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir #include "app.hxx"
80*cdf0e10cSrcweir #include "fupoor.hxx"
81*cdf0e10cSrcweir #include "sdresid.hxx"
82*cdf0e10cSrcweir #include "fusel.hxx"
83*cdf0e10cSrcweir #include "sdpage.hxx"
84*cdf0e10cSrcweir #include "FrameView.hxx"
85*cdf0e10cSrcweir #include "stlpool.hxx"
86*cdf0e10cSrcweir #include "Window.hxx"
87*cdf0e10cSrcweir #ifndef SD_DRAWVIEW_HXX
88*cdf0e10cSrcweir #include "drawview.hxx"
89*cdf0e10cSrcweir #endif
90*cdf0e10cSrcweir #include "drawdoc.hxx"
91*cdf0e10cSrcweir #include "DrawDocShell.hxx"
92*cdf0e10cSrcweir #include "Ruler.hxx"
93*cdf0e10cSrcweir #include "Client.hxx"
94*cdf0e10cSrcweir #include "slideshow.hxx"
95*cdf0e10cSrcweir #include "optsitem.hxx"
96*cdf0e10cSrcweir #include "fusearch.hxx"
97*cdf0e10cSrcweir #include "Outliner.hxx"
98*cdf0e10cSrcweir #include "AnimationChildWindow.hxx"
99*cdf0e10cSrcweir #include "SdUnoDrawView.hxx"
100*cdf0e10cSrcweir #include "ToolBarManager.hxx"
101*cdf0e10cSrcweir #include "FormShellManager.hxx"
102*cdf0e10cSrcweir #include "ViewShellBase.hxx"
103*cdf0e10cSrcweir #include "LayerDialogChildWindow.hxx"
104*cdf0e10cSrcweir #include "LayerTabBar.hxx"
105*cdf0e10cSrcweir #include "ViewShellManager.hxx"
106*cdf0e10cSrcweir #include "ViewShellHint.hxx"
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir #include <sfx2/request.hxx>
109*cdf0e10cSrcweir #include <boost/bind.hpp>
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir #ifdef _MSC_VER
112*cdf0e10cSrcweir #if (_MSC_VER < 1400)
113*cdf0e10cSrcweir #pragma optimize ( "", off )
114*cdf0e10cSrcweir #endif
115*cdf0e10cSrcweir #endif
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir using namespace com::sun::star;
118*cdf0e10cSrcweir 
119*cdf0e10cSrcweir namespace sd {
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir void DrawViewShell::Activate(sal_Bool bIsMDIActivate)
122*cdf0e10cSrcweir {
123*cdf0e10cSrcweir     ViewShell::Activate(bIsMDIActivate);
124*cdf0e10cSrcweir }
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir void DrawViewShell::UIActivating( SfxInPlaceClient* pCli )
127*cdf0e10cSrcweir {
128*cdf0e10cSrcweir     ViewShell::UIActivating(pCli);
129*cdf0e10cSrcweir 
130*cdf0e10cSrcweir     // #94252# Disable own controls
131*cdf0e10cSrcweir     maTabControl.Disable();
132*cdf0e10cSrcweir     if (GetLayerTabControl() != NULL)
133*cdf0e10cSrcweir         GetLayerTabControl()->Disable();
134*cdf0e10cSrcweir }
135*cdf0e10cSrcweir 
136*cdf0e10cSrcweir void DrawViewShell::UIDeactivated( SfxInPlaceClient* pCli )
137*cdf0e10cSrcweir {
138*cdf0e10cSrcweir     // #94252# Enable own controls
139*cdf0e10cSrcweir     maTabControl.Enable();
140*cdf0e10cSrcweir     if (GetLayerTabControl() != NULL)
141*cdf0e10cSrcweir         GetLayerTabControl()->Enable();
142*cdf0e10cSrcweir 
143*cdf0e10cSrcweir     ViewShell::UIDeactivated(pCli);
144*cdf0e10cSrcweir }
145*cdf0e10cSrcweir 
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir /*************************************************************************
148*cdf0e10cSrcweir |*
149*cdf0e10cSrcweir |* Deactivate()
150*cdf0e10cSrcweir |*
151*cdf0e10cSrcweir \************************************************************************/
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir void DrawViewShell::Deactivate(sal_Bool bIsMDIActivate)
154*cdf0e10cSrcweir {
155*cdf0e10cSrcweir     ViewShell::Deactivate(bIsMDIActivate);
156*cdf0e10cSrcweir }
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir namespace
159*cdf0e10cSrcweir {
160*cdf0e10cSrcweir     class LockUI
161*cdf0e10cSrcweir     {
162*cdf0e10cSrcweir     private:
163*cdf0e10cSrcweir         void Lock(bool bLock);
164*cdf0e10cSrcweir         SfxViewFrame *mpFrame;
165*cdf0e10cSrcweir     public:
166*cdf0e10cSrcweir         LockUI(SfxViewFrame *pFrame) : mpFrame(pFrame) { Lock(true); }
167*cdf0e10cSrcweir         ~LockUI() { Lock(false); }
168*cdf0e10cSrcweir 
169*cdf0e10cSrcweir     };
170*cdf0e10cSrcweir 
171*cdf0e10cSrcweir     void LockUI::Lock(bool bLock)
172*cdf0e10cSrcweir     {
173*cdf0e10cSrcweir         if (!mpFrame)
174*cdf0e10cSrcweir             return;
175*cdf0e10cSrcweir         mpFrame->Enable( !bLock );
176*cdf0e10cSrcweir     }
177*cdf0e10cSrcweir }
178*cdf0e10cSrcweir 
179*cdf0e10cSrcweir /*************************************************************************
180*cdf0e10cSrcweir |*
181*cdf0e10cSrcweir |* Wird gerufen, wenn sich der Selektionszustand der View aendert
182*cdf0e10cSrcweir |*
183*cdf0e10cSrcweir \************************************************************************/
184*cdf0e10cSrcweir void DrawViewShell::SelectionHasChanged (void)
185*cdf0e10cSrcweir {
186*cdf0e10cSrcweir 	Invalidate();
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir 	//Update3DWindow(); // 3D-Controller
189*cdf0e10cSrcweir 	SfxBoolItem aItem( SID_3D_STATE, sal_True );
190*cdf0e10cSrcweir 	GetViewFrame()->GetDispatcher()->Execute(
191*cdf0e10cSrcweir 		SID_3D_STATE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L );
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 	SdrOle2Obj* pOleObj = NULL;
194*cdf0e10cSrcweir 	SdrGrafObj* pGrafObj = NULL;
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir 	if ( mpDrawView->AreObjectsMarked() )
197*cdf0e10cSrcweir 	{
198*cdf0e10cSrcweir 		const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir 		if (rMarkList.GetMarkCount() == 1)
201*cdf0e10cSrcweir 		{
202*cdf0e10cSrcweir 			SdrMark* pMark = rMarkList.GetMark(0);
203*cdf0e10cSrcweir 			SdrObject* pObj = pMark->GetMarkedSdrObj();
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir 			sal_uInt32 nInv = pObj->GetObjInventor();
206*cdf0e10cSrcweir 			sal_uInt16 nSdrObjKind = pObj->GetObjIdentifier();
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir 			if (nInv == SdrInventor && nSdrObjKind == OBJ_OLE2)
209*cdf0e10cSrcweir 			{
210*cdf0e10cSrcweir 				pOleObj = (SdrOle2Obj*) pObj;
211*cdf0e10cSrcweir 				UpdateIMapDlg( pObj );
212*cdf0e10cSrcweir 			}
213*cdf0e10cSrcweir 			else if (nSdrObjKind == OBJ_GRAF)
214*cdf0e10cSrcweir 			{
215*cdf0e10cSrcweir 				pGrafObj = (SdrGrafObj*) pObj;
216*cdf0e10cSrcweir 				UpdateIMapDlg( pObj );
217*cdf0e10cSrcweir 			}
218*cdf0e10cSrcweir 		}
219*cdf0e10cSrcweir 	}
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir     ViewShellBase& rBase = GetViewShellBase();
222*cdf0e10cSrcweir 	rBase.SetVerbs( uno::Sequence< embed::VerbDescriptor >() );
223*cdf0e10cSrcweir 
224*cdf0e10cSrcweir 	try
225*cdf0e10cSrcweir 	{
226*cdf0e10cSrcweir 		Client* pIPClient = static_cast<Client*>(rBase.GetIPClient());
227*cdf0e10cSrcweir 		if ( pIPClient && pIPClient->IsObjectInPlaceActive() )
228*cdf0e10cSrcweir 		{
229*cdf0e10cSrcweir 			/**********************************************************************
230*cdf0e10cSrcweir 			* Ggf. OLE-Objekt beruecksichtigen und deaktivieren
231*cdf0e10cSrcweir 			**********************************************************************/
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir 			// this means we recently deselected an inplace active ole object so
234*cdf0e10cSrcweir 			// we need to deselect it now
235*cdf0e10cSrcweir 			if (!pOleObj)
236*cdf0e10cSrcweir 			{
237*cdf0e10cSrcweir                 //#i47279# disable frame until after object has completed unload
238*cdf0e10cSrcweir                 LockUI aUILock(GetViewFrame());
239*cdf0e10cSrcweir                 pIPClient->DeactivateObject();
240*cdf0e10cSrcweir 				//HMHmpDrView->ShowMarkHdl();
241*cdf0e10cSrcweir 			}
242*cdf0e10cSrcweir 			else
243*cdf0e10cSrcweir 			{
244*cdf0e10cSrcweir 				uno::Reference < embed::XEmbeddedObject > xObj = pOleObj->GetObjRef();
245*cdf0e10cSrcweir 				if ( xObj.is() )
246*cdf0e10cSrcweir 				{
247*cdf0e10cSrcweir 					rBase.SetVerbs( xObj->getSupportedVerbs() );
248*cdf0e10cSrcweir 				}
249*cdf0e10cSrcweir 				else
250*cdf0e10cSrcweir 				{
251*cdf0e10cSrcweir 					rBase.SetVerbs( uno::Sequence < embed::VerbDescriptor >() );
252*cdf0e10cSrcweir 				}
253*cdf0e10cSrcweir 			}
254*cdf0e10cSrcweir 		}
255*cdf0e10cSrcweir 		else
256*cdf0e10cSrcweir 		{
257*cdf0e10cSrcweir 			if ( pOleObj )
258*cdf0e10cSrcweir 			{
259*cdf0e10cSrcweir 				uno::Reference < embed::XEmbeddedObject > xObj = pOleObj->GetObjRef();
260*cdf0e10cSrcweir 				if ( xObj.is() )
261*cdf0e10cSrcweir 				{
262*cdf0e10cSrcweir 					rBase.SetVerbs( xObj->getSupportedVerbs() );
263*cdf0e10cSrcweir 				}
264*cdf0e10cSrcweir 				else
265*cdf0e10cSrcweir 				{
266*cdf0e10cSrcweir 					rBase.SetVerbs( uno::Sequence < embed::VerbDescriptor >() );
267*cdf0e10cSrcweir 				}
268*cdf0e10cSrcweir 			}
269*cdf0e10cSrcweir 			else
270*cdf0e10cSrcweir 			{
271*cdf0e10cSrcweir 				rBase.SetVerbs( uno::Sequence < embed::VerbDescriptor >() );
272*cdf0e10cSrcweir 			}
273*cdf0e10cSrcweir 		}
274*cdf0e10cSrcweir 	}
275*cdf0e10cSrcweir 	catch( ::com::sun::star::uno::Exception& e )
276*cdf0e10cSrcweir 	{
277*cdf0e10cSrcweir 		(void)e;
278*cdf0e10cSrcweir 		DBG_ERROR(
279*cdf0e10cSrcweir 			(rtl::OString("sd::DrawViewShell::SelectionHasChanged(), "
280*cdf0e10cSrcweir 					"exception caught: ") +
281*cdf0e10cSrcweir 			rtl::OUStringToOString(
282*cdf0e10cSrcweir 				comphelper::anyToString( cppu::getCaughtException() ),
283*cdf0e10cSrcweir 				RTL_TEXTENCODING_UTF8 )).getStr() );
284*cdf0e10cSrcweir 	}
285*cdf0e10cSrcweir 
286*cdf0e10cSrcweir 	if( HasCurrentFunction() )
287*cdf0e10cSrcweir 	{
288*cdf0e10cSrcweir 		GetCurrentFunction()->SelectionHasChanged();
289*cdf0e10cSrcweir 	}
290*cdf0e10cSrcweir 	else
291*cdf0e10cSrcweir 	{
292*cdf0e10cSrcweir         GetViewShellBase().GetToolBarManager()->SelectionHasChanged(*this,*mpDrawView);
293*cdf0e10cSrcweir 	}
294*cdf0e10cSrcweir 
295*cdf0e10cSrcweir     // #96124# Invalidate for every subshell
296*cdf0e10cSrcweir     GetViewShellBase().GetViewShellManager()->InvalidateAllSubShells(this);
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir     mpDrawView->UpdateSelectionClipboard( sal_False );
299*cdf0e10cSrcweir 
300*cdf0e10cSrcweir     GetViewShellBase().GetDrawController().FireSelectionChangeListener();
301*cdf0e10cSrcweir }
302*cdf0e10cSrcweir 
303*cdf0e10cSrcweir 
304*cdf0e10cSrcweir /*************************************************************************
305*cdf0e10cSrcweir |*
306*cdf0e10cSrcweir |* Zoomfaktor setzen
307*cdf0e10cSrcweir |*
308*cdf0e10cSrcweir \************************************************************************/
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir void DrawViewShell::SetZoom( long nZoom )
311*cdf0e10cSrcweir {
312*cdf0e10cSrcweir     // Make sure that the zoom factor will not be recalculated on
313*cdf0e10cSrcweir     // following window resizings.
314*cdf0e10cSrcweir     mbZoomOnPage = sal_False;
315*cdf0e10cSrcweir 	ViewShell::SetZoom( nZoom );
316*cdf0e10cSrcweir 	GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM );
317*cdf0e10cSrcweir 	GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER );
318*cdf0e10cSrcweir 	mpViewOverlayManager->onZoomChanged();
319*cdf0e10cSrcweir }
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir /*************************************************************************
322*cdf0e10cSrcweir |*
323*cdf0e10cSrcweir |* Zoomrechteck fuer aktives Fenster einstellen
324*cdf0e10cSrcweir |*
325*cdf0e10cSrcweir \************************************************************************/
326*cdf0e10cSrcweir 
327*cdf0e10cSrcweir void DrawViewShell::SetZoomRect( const Rectangle& rZoomRect )
328*cdf0e10cSrcweir {
329*cdf0e10cSrcweir 	ViewShell::SetZoomRect( rZoomRect );
330*cdf0e10cSrcweir 	GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOM );
331*cdf0e10cSrcweir 	GetViewFrame()->GetBindings().Invalidate( SID_ATTR_ZOOMSLIDER );
332*cdf0e10cSrcweir 	mpViewOverlayManager->onZoomChanged();
333*cdf0e10cSrcweir }
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir /*************************************************************************
336*cdf0e10cSrcweir |*
337*cdf0e10cSrcweir |* PrepareClose, ggfs. Texteingabe beenden, damit andere Viewshells ein
338*cdf0e10cSrcweir |* aktualisiertes Textobjekt vorfinden
339*cdf0e10cSrcweir |*
340*cdf0e10cSrcweir \************************************************************************/
341*cdf0e10cSrcweir 
342*cdf0e10cSrcweir sal_uInt16 DrawViewShell::PrepareClose( sal_Bool bUI, sal_Bool bForBrowsing )
343*cdf0e10cSrcweir {
344*cdf0e10cSrcweir 	if ( ViewShell::PrepareClose(bUI, bForBrowsing) != sal_True )
345*cdf0e10cSrcweir 		return sal_False;
346*cdf0e10cSrcweir 
347*cdf0e10cSrcweir 	sal_Bool			bRet = sal_True;
348*cdf0e10cSrcweir 
349*cdf0e10cSrcweir 	if( bRet && HasCurrentFunction() )
350*cdf0e10cSrcweir 	{
351*cdf0e10cSrcweir 		sal_uInt16 nID = GetCurrentFunction()->GetSlotID();
352*cdf0e10cSrcweir 		if (nID == SID_TEXTEDIT || nID == SID_ATTR_CHAR)
353*cdf0e10cSrcweir 		{
354*cdf0e10cSrcweir 			mpDrawView->SdrEndTextEdit();
355*cdf0e10cSrcweir 		}
356*cdf0e10cSrcweir 	}
357*cdf0e10cSrcweir 	else if( !bRet )
358*cdf0e10cSrcweir 	{
359*cdf0e10cSrcweir 		maCloseTimer.SetTimeoutHdl( LINK( this, DrawViewShell, CloseHdl ) );
360*cdf0e10cSrcweir 		maCloseTimer.SetTimeout( 20 );
361*cdf0e10cSrcweir 		maCloseTimer.Start();
362*cdf0e10cSrcweir 	}
363*cdf0e10cSrcweir 
364*cdf0e10cSrcweir 	return bRet;
365*cdf0e10cSrcweir }
366*cdf0e10cSrcweir 
367*cdf0e10cSrcweir /*************************************************************************
368*cdf0e10cSrcweir |*
369*cdf0e10cSrcweir |* Status (Enabled/Disabled) von Menue-SfxSlots setzen
370*cdf0e10cSrcweir |*
371*cdf0e10cSrcweir \************************************************************************/
372*cdf0e10cSrcweir 
373*cdf0e10cSrcweir void DrawViewShell::ChangeEditMode(EditMode eEMode, bool bIsLayerModeActive)
374*cdf0e10cSrcweir {
375*cdf0e10cSrcweir 	if (meEditMode != eEMode || mbIsLayerModeActive != bIsLayerModeActive)
376*cdf0e10cSrcweir 	{
377*cdf0e10cSrcweir         ViewShellManager::UpdateLock aLock (GetViewShellBase().GetViewShellManager());
378*cdf0e10cSrcweir 
379*cdf0e10cSrcweir         sal_uInt16 nActualPageNum = 0;
380*cdf0e10cSrcweir 
381*cdf0e10cSrcweir         GetViewShellBase().GetDrawController().FireChangeEditMode (eEMode == EM_MASTERPAGE);
382*cdf0e10cSrcweir         GetViewShellBase().GetDrawController().FireChangeLayerMode (bIsLayerModeActive);
383*cdf0e10cSrcweir 
384*cdf0e10cSrcweir 		if ( mpDrawView->IsTextEdit() )
385*cdf0e10cSrcweir 		{
386*cdf0e10cSrcweir 			mpDrawView->SdrEndTextEdit();
387*cdf0e10cSrcweir 		}
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir 		LayerTabBar* pLayerBar = GetLayerTabControl();
390*cdf0e10cSrcweir         if (pLayerBar != NULL)
391*cdf0e10cSrcweir             pLayerBar->EndEditMode();
392*cdf0e10cSrcweir 		maTabControl.EndEditMode();
393*cdf0e10cSrcweir 
394*cdf0e10cSrcweir 		if (mePageKind == PK_HANDOUT)
395*cdf0e10cSrcweir 		{
396*cdf0e10cSrcweir 			// Bei Handzetteln nur MasterPage zulassen
397*cdf0e10cSrcweir 			eEMode = EM_MASTERPAGE;
398*cdf0e10cSrcweir 		}
399*cdf0e10cSrcweir 
400*cdf0e10cSrcweir 		meEditMode = eEMode;
401*cdf0e10cSrcweir 		mbIsLayerModeActive = bIsLayerModeActive;
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir         // Determine whether to show the master view toolbar.  The master
404*cdf0e10cSrcweir         // page mode has to be active and the shell must not be a handout
405*cdf0e10cSrcweir         // view.
406*cdf0e10cSrcweir         bool bShowMasterViewToolbar (meEditMode == EM_MASTERPAGE
407*cdf0e10cSrcweir              && GetShellType() != ViewShell::ST_HANDOUT);
408*cdf0e10cSrcweir 
409*cdf0e10cSrcweir         // If the master view toolbar is not shown we hide it before
410*cdf0e10cSrcweir         // switching the edit mode.
411*cdf0e10cSrcweir         if (::sd::ViewShell::mpImpl->mbIsInitialized
412*cdf0e10cSrcweir             && IsMainViewShell()
413*cdf0e10cSrcweir             && ! bShowMasterViewToolbar)
414*cdf0e10cSrcweir         {
415*cdf0e10cSrcweir             GetViewShellBase().GetToolBarManager()->ResetToolBars(ToolBarManager::TBG_MASTER_MODE);
416*cdf0e10cSrcweir         }
417*cdf0e10cSrcweir 
418*cdf0e10cSrcweir 		if (meEditMode == EM_PAGE)
419*cdf0e10cSrcweir 		{
420*cdf0e10cSrcweir 			/******************************************************************
421*cdf0e10cSrcweir 			* PAGEMODE
422*cdf0e10cSrcweir 			******************************************************************/
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir 			maTabControl.Clear();
425*cdf0e10cSrcweir 
426*cdf0e10cSrcweir 			SdPage* pPage;
427*cdf0e10cSrcweir 			String aPageName;
428*cdf0e10cSrcweir 			sal_uInt16 nPageCnt = GetDoc()->GetSdPageCount(mePageKind);
429*cdf0e10cSrcweir 
430*cdf0e10cSrcweir 			for (sal_uInt16 i = 0; i < nPageCnt; i++)
431*cdf0e10cSrcweir 			{
432*cdf0e10cSrcweir 				pPage = GetDoc()->GetSdPage(i, mePageKind);
433*cdf0e10cSrcweir 				aPageName = pPage->GetName();
434*cdf0e10cSrcweir 				maTabControl.InsertPage(i + 1, aPageName);
435*cdf0e10cSrcweir 
436*cdf0e10cSrcweir 				if ( pPage->IsSelected() && nActualPageNum == 0 )
437*cdf0e10cSrcweir 				{
438*cdf0e10cSrcweir 					nActualPageNum = i;
439*cdf0e10cSrcweir 				}
440*cdf0e10cSrcweir 			}
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir             maTabControl.SetCurPageId(nActualPageNum + 1);
443*cdf0e10cSrcweir 
444*cdf0e10cSrcweir 			SwitchPage(nActualPageNum);
445*cdf0e10cSrcweir 		}
446*cdf0e10cSrcweir 		else
447*cdf0e10cSrcweir 		{
448*cdf0e10cSrcweir 			/******************************************************************
449*cdf0e10cSrcweir 			* MASTERPAGE
450*cdf0e10cSrcweir 			******************************************************************/
451*cdf0e10cSrcweir 			GetViewFrame()->SetChildWindow(
452*cdf0e10cSrcweir                 AnimationChildWindow::GetChildWindowId(), sal_False );
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir 			if (!mpActualPage)
455*cdf0e10cSrcweir 			{
456*cdf0e10cSrcweir 				// Sofern es keine mpActualPage gibt, wird die erste genommen
457*cdf0e10cSrcweir 				mpActualPage = GetDoc()->GetSdPage(0, mePageKind);
458*cdf0e10cSrcweir 			}
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir 			maTabControl.Clear();
461*cdf0e10cSrcweir 			sal_uInt16 nActualMasterPageNum = 0;
462*cdf0e10cSrcweir 			sal_uInt16 nMasterPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
463*cdf0e10cSrcweir 
464*cdf0e10cSrcweir 			for (sal_uInt16 i = 0; i < nMasterPageCnt; i++)
465*cdf0e10cSrcweir 			{
466*cdf0e10cSrcweir 				SdPage* pMaster = GetDoc()->GetMasterSdPage(i, mePageKind);
467*cdf0e10cSrcweir 				String aLayoutName(pMaster->GetLayoutName());
468*cdf0e10cSrcweir 				aLayoutName.Erase(aLayoutName.SearchAscii(SD_LT_SEPARATOR));
469*cdf0e10cSrcweir 
470*cdf0e10cSrcweir 				maTabControl.InsertPage(i + 1, aLayoutName);
471*cdf0e10cSrcweir 
472*cdf0e10cSrcweir 				if (&(mpActualPage->TRG_GetMasterPage()) == pMaster)
473*cdf0e10cSrcweir 				{
474*cdf0e10cSrcweir 					nActualMasterPageNum = i;
475*cdf0e10cSrcweir 				}
476*cdf0e10cSrcweir 			}
477*cdf0e10cSrcweir 
478*cdf0e10cSrcweir 			maTabControl.SetCurPageId(nActualMasterPageNum + 1);
479*cdf0e10cSrcweir 			SwitchPage(nActualMasterPageNum);
480*cdf0e10cSrcweir 		}
481*cdf0e10cSrcweir 
482*cdf0e10cSrcweir         // If the master view toolbar is to be shown we turn it on after the
483*cdf0e10cSrcweir         // edit mode has been changed.
484*cdf0e10cSrcweir         if (::sd::ViewShell::mpImpl->mbIsInitialized
485*cdf0e10cSrcweir             && IsMainViewShell()
486*cdf0e10cSrcweir             && bShowMasterViewToolbar)
487*cdf0e10cSrcweir         {
488*cdf0e10cSrcweir             GetViewShellBase().GetToolBarManager()->SetToolBar(
489*cdf0e10cSrcweir                 ToolBarManager::TBG_MASTER_MODE,
490*cdf0e10cSrcweir                 ToolBarManager::msMasterViewToolBar);
491*cdf0e10cSrcweir         }
492*cdf0e10cSrcweir 
493*cdf0e10cSrcweir 		if ( ! mbIsLayerModeActive)
494*cdf0e10cSrcweir 		{
495*cdf0e10cSrcweir             maTabControl.Show();
496*cdf0e10cSrcweir             // Set the tab control only for draw pages.  For master page
497*cdf0e10cSrcweir             // this has been done already above.
498*cdf0e10cSrcweir             if (meEditMode == EM_PAGE)
499*cdf0e10cSrcweir                 maTabControl.SetCurPageId (nActualPageNum + 1);
500*cdf0e10cSrcweir 		}
501*cdf0e10cSrcweir         /*AF: The LayerDialogChildWindow is not used anymore (I hope).
502*cdf0e10cSrcweir         if (GetViewFrame()->KnowsChildWindow(
503*cdf0e10cSrcweir             LayerDialogChildWindow::GetChildWindowId()))
504*cdf0e10cSrcweir         {
505*cdf0e10cSrcweir             GetViewFrame()->SetChildWindow(
506*cdf0e10cSrcweir                 LayerDialogChildWindow::GetChildWindowId(),
507*cdf0e10cSrcweir                 IsLayerModeActive());
508*cdf0e10cSrcweir         }
509*cdf0e10cSrcweir         */
510*cdf0e10cSrcweir 		ResetActualLayer();
511*cdf0e10cSrcweir 
512*cdf0e10cSrcweir 		Invalidate( SID_PAGEMODE );
513*cdf0e10cSrcweir 		Invalidate( SID_LAYERMODE );
514*cdf0e10cSrcweir 		Invalidate( SID_MASTERPAGE );
515*cdf0e10cSrcweir         Invalidate( SID_DELETE_MASTER_PAGE );
516*cdf0e10cSrcweir         Invalidate( SID_DELETE_PAGE );
517*cdf0e10cSrcweir 		Invalidate( SID_SLIDE_MASTERPAGE );
518*cdf0e10cSrcweir 		Invalidate( SID_TITLE_MASTERPAGE );
519*cdf0e10cSrcweir 		Invalidate( SID_NOTES_MASTERPAGE );
520*cdf0e10cSrcweir 		Invalidate( SID_HANDOUT_MASTERPAGE );
521*cdf0e10cSrcweir 	}
522*cdf0e10cSrcweir }
523*cdf0e10cSrcweir 
524*cdf0e10cSrcweir 
525*cdf0e10cSrcweir 
526*cdf0e10cSrcweir 
527*cdf0e10cSrcweir bool DrawViewShell::IsLayerModeActive (void) const
528*cdf0e10cSrcweir {
529*cdf0e10cSrcweir     return mbIsLayerModeActive;
530*cdf0e10cSrcweir }
531*cdf0e10cSrcweir 
532*cdf0e10cSrcweir 
533*cdf0e10cSrcweir 
534*cdf0e10cSrcweir 
535*cdf0e10cSrcweir /*************************************************************************
536*cdf0e10cSrcweir |*
537*cdf0e10cSrcweir |* Groesse des TabControls und der ModeButtons zurueckgeben
538*cdf0e10cSrcweir |*
539*cdf0e10cSrcweir \************************************************************************/
540*cdf0e10cSrcweir 
541*cdf0e10cSrcweir long DrawViewShell::GetHCtrlWidth()
542*cdf0e10cSrcweir {
543*cdf0e10cSrcweir     //	return maTabControl.GetSizePixel().Width();
544*cdf0e10cSrcweir     return 0;
545*cdf0e10cSrcweir }
546*cdf0e10cSrcweir 
547*cdf0e10cSrcweir 
548*cdf0e10cSrcweir /*************************************************************************
549*cdf0e10cSrcweir |*
550*cdf0e10cSrcweir |* Horizontales Lineal erzeugen
551*cdf0e10cSrcweir |*
552*cdf0e10cSrcweir \************************************************************************/
553*cdf0e10cSrcweir 
554*cdf0e10cSrcweir SvxRuler* DrawViewShell::CreateHRuler (::sd::Window* pWin, sal_Bool bIsFirst)
555*cdf0e10cSrcweir {
556*cdf0e10cSrcweir 	Ruler* pRuler;
557*cdf0e10cSrcweir 	WinBits  aWBits;
558*cdf0e10cSrcweir 	sal_uInt16	 nFlags = SVXRULER_SUPPORT_OBJECT;
559*cdf0e10cSrcweir 
560*cdf0e10cSrcweir 	if ( bIsFirst )
561*cdf0e10cSrcweir 	{
562*cdf0e10cSrcweir 		aWBits	= WB_HSCROLL | WB_3DLOOK | WB_BORDER | WB_EXTRAFIELD;
563*cdf0e10cSrcweir 		nFlags |= ( SVXRULER_SUPPORT_SET_NULLOFFSET |
564*cdf0e10cSrcweir 					SVXRULER_SUPPORT_TABS |
565*cdf0e10cSrcweir 					SVXRULER_SUPPORT_PARAGRAPH_MARGINS ); // Neu
566*cdf0e10cSrcweir 	}
567*cdf0e10cSrcweir 	else
568*cdf0e10cSrcweir 		aWBits = WB_HSCROLL | WB_3DLOOK | WB_BORDER;
569*cdf0e10cSrcweir 
570*cdf0e10cSrcweir 	pRuler = new Ruler (*this, GetParentWindow(), pWin, nFlags,
571*cdf0e10cSrcweir         GetViewFrame()->GetBindings(), aWBits);
572*cdf0e10cSrcweir 	pRuler->SetSourceUnit(pWin->GetMapMode().GetMapUnit());
573*cdf0e10cSrcweir 
574*cdf0e10cSrcweir 	// Metric ...
575*cdf0e10cSrcweir 	sal_uInt16 nMetric = (sal_uInt16)GetDoc()->GetUIUnit();
576*cdf0e10cSrcweir 
577*cdf0e10cSrcweir 	if( nMetric == 0xffff )
578*cdf0e10cSrcweir 		nMetric = (sal_uInt16)GetViewShellBase().GetViewFrame()->GetDispatcher()->GetModule()->GetFieldUnit();
579*cdf0e10cSrcweir 
580*cdf0e10cSrcweir 	pRuler->SetUnit( FieldUnit( nMetric ) );
581*cdf0e10cSrcweir 
582*cdf0e10cSrcweir 	// ... und auch DefTab am Lineal einstellen
583*cdf0e10cSrcweir 	pRuler->SetDefTabDist( GetDoc()->GetDefaultTabulator() ); // Neu
584*cdf0e10cSrcweir 
585*cdf0e10cSrcweir 	Fraction aUIScale(pWin->GetMapMode().GetScaleX());
586*cdf0e10cSrcweir 	aUIScale *= GetDoc()->GetUIScale();
587*cdf0e10cSrcweir 	pRuler->SetZoom(aUIScale);
588*cdf0e10cSrcweir 
589*cdf0e10cSrcweir 	return pRuler;
590*cdf0e10cSrcweir }
591*cdf0e10cSrcweir 
592*cdf0e10cSrcweir /*************************************************************************
593*cdf0e10cSrcweir |*
594*cdf0e10cSrcweir |* Vertikales Lineal erzeugen
595*cdf0e10cSrcweir |*
596*cdf0e10cSrcweir \************************************************************************/
597*cdf0e10cSrcweir 
598*cdf0e10cSrcweir SvxRuler* DrawViewShell::CreateVRuler(::sd::Window* pWin)
599*cdf0e10cSrcweir {
600*cdf0e10cSrcweir 	Ruler* pRuler;
601*cdf0e10cSrcweir 	WinBits  aWBits = WB_VSCROLL | WB_3DLOOK | WB_BORDER;
602*cdf0e10cSrcweir 	sal_uInt16	 nFlags = SVXRULER_SUPPORT_OBJECT;
603*cdf0e10cSrcweir 
604*cdf0e10cSrcweir 	pRuler = new Ruler(*this, GetParentWindow(), pWin, nFlags,
605*cdf0e10cSrcweir         GetViewFrame()->GetBindings(), aWBits);
606*cdf0e10cSrcweir 	pRuler->SetSourceUnit(pWin->GetMapMode().GetMapUnit());
607*cdf0e10cSrcweir 
608*cdf0e10cSrcweir 	// #96629# Metric same as HRuler, use document setting
609*cdf0e10cSrcweir 	sal_uInt16 nMetric = (sal_uInt16)GetDoc()->GetUIUnit();
610*cdf0e10cSrcweir 
611*cdf0e10cSrcweir 	if( nMetric == 0xffff )
612*cdf0e10cSrcweir 		nMetric = (sal_uInt16)GetViewShellBase().GetViewFrame()->GetDispatcher()->GetModule()->GetFieldUnit();
613*cdf0e10cSrcweir 
614*cdf0e10cSrcweir 	pRuler->SetUnit( FieldUnit( nMetric ) );
615*cdf0e10cSrcweir 
616*cdf0e10cSrcweir 	Fraction aUIScale(pWin->GetMapMode().GetScaleY());
617*cdf0e10cSrcweir 	aUIScale *= GetDoc()->GetUIScale();
618*cdf0e10cSrcweir 	pRuler->SetZoom(aUIScale);
619*cdf0e10cSrcweir 
620*cdf0e10cSrcweir 	return pRuler;
621*cdf0e10cSrcweir }
622*cdf0e10cSrcweir 
623*cdf0e10cSrcweir /*************************************************************************
624*cdf0e10cSrcweir |*
625*cdf0e10cSrcweir |* Horizontales Lineal aktualisieren
626*cdf0e10cSrcweir |*
627*cdf0e10cSrcweir \************************************************************************/
628*cdf0e10cSrcweir 
629*cdf0e10cSrcweir void DrawViewShell::UpdateHRuler()
630*cdf0e10cSrcweir {
631*cdf0e10cSrcweir 	Invalidate( SID_ATTR_LONG_LRSPACE );
632*cdf0e10cSrcweir 	Invalidate( SID_RULER_PAGE_POS );
633*cdf0e10cSrcweir 	Invalidate( SID_RULER_OBJECT );
634*cdf0e10cSrcweir 	Invalidate( SID_RULER_TEXT_RIGHT_TO_LEFT );
635*cdf0e10cSrcweir 
636*cdf0e10cSrcweir     if (mpHorizontalRuler.get() != NULL)
637*cdf0e10cSrcweir         mpHorizontalRuler->ForceUpdate();
638*cdf0e10cSrcweir }
639*cdf0e10cSrcweir 
640*cdf0e10cSrcweir /*************************************************************************
641*cdf0e10cSrcweir |*
642*cdf0e10cSrcweir |* Vertikales Lineal aktualisieren
643*cdf0e10cSrcweir |*
644*cdf0e10cSrcweir \************************************************************************/
645*cdf0e10cSrcweir 
646*cdf0e10cSrcweir void DrawViewShell::UpdateVRuler()
647*cdf0e10cSrcweir {
648*cdf0e10cSrcweir 	Invalidate( SID_ATTR_LONG_LRSPACE );
649*cdf0e10cSrcweir 	Invalidate( SID_RULER_PAGE_POS );
650*cdf0e10cSrcweir 	Invalidate( SID_RULER_OBJECT );
651*cdf0e10cSrcweir 
652*cdf0e10cSrcweir     if (mpVerticalRuler.get() != NULL)
653*cdf0e10cSrcweir         mpVerticalRuler->ForceUpdate();
654*cdf0e10cSrcweir }
655*cdf0e10cSrcweir 
656*cdf0e10cSrcweir /*************************************************************************
657*cdf0e10cSrcweir |*
658*cdf0e10cSrcweir |* Metrik setzen
659*cdf0e10cSrcweir |*
660*cdf0e10cSrcweir \************************************************************************/
661*cdf0e10cSrcweir 
662*cdf0e10cSrcweir void DrawViewShell::SetUIUnit(FieldUnit eUnit)
663*cdf0e10cSrcweir {
664*cdf0e10cSrcweir 	ViewShell::SetUIUnit(eUnit);
665*cdf0e10cSrcweir }
666*cdf0e10cSrcweir 
667*cdf0e10cSrcweir /*************************************************************************
668*cdf0e10cSrcweir |*
669*cdf0e10cSrcweir |* TabControl nach Splitteraenderung aktualisieren
670*cdf0e10cSrcweir |*
671*cdf0e10cSrcweir \************************************************************************/
672*cdf0e10cSrcweir 
673*cdf0e10cSrcweir IMPL_LINK( DrawViewShell, TabSplitHdl, TabBar *, pTab )
674*cdf0e10cSrcweir {
675*cdf0e10cSrcweir     const long int nMax = maViewSize.Width() - maScrBarWH.Width()
676*cdf0e10cSrcweir         - maTabControl.GetPosPixel().X() ;
677*cdf0e10cSrcweir 
678*cdf0e10cSrcweir 	Size aTabSize = maTabControl.GetSizePixel();
679*cdf0e10cSrcweir 	aTabSize.Width() = Min(pTab->GetSplitSize(), (long)(nMax-1));
680*cdf0e10cSrcweir 
681*cdf0e10cSrcweir 	maTabControl.SetSizePixel(aTabSize);
682*cdf0e10cSrcweir 	GetLayerTabControl()->SetSizePixel(aTabSize);
683*cdf0e10cSrcweir 
684*cdf0e10cSrcweir 	Point aPos = maTabControl.GetPosPixel();
685*cdf0e10cSrcweir 	aPos.X() += aTabSize.Width();
686*cdf0e10cSrcweir 
687*cdf0e10cSrcweir 	Size aScrSize(nMax - aTabSize.Width(), maScrBarWH.Height());
688*cdf0e10cSrcweir 	mpHorizontalScrollBar->SetPosSizePixel(aPos, aScrSize);
689*cdf0e10cSrcweir 
690*cdf0e10cSrcweir 	return 0;
691*cdf0e10cSrcweir }
692*cdf0e10cSrcweir 
693*cdf0e10cSrcweir /// inherited from sd::ViewShell
694*cdf0e10cSrcweir SdPage* DrawViewShell::getCurrentPage() const
695*cdf0e10cSrcweir {
696*cdf0e10cSrcweir 	const sal_Int32 nPageCount = (meEditMode == EM_PAGE)?
697*cdf0e10cSrcweir 									GetDoc()->GetSdPageCount(mePageKind):
698*cdf0e10cSrcweir 									GetDoc()->GetMasterSdPageCount(mePageKind);
699*cdf0e10cSrcweir 
700*cdf0e10cSrcweir 	sal_Int32 nCurrentPage = maTabControl.GetCurPageId() - 1;
701*cdf0e10cSrcweir 	DBG_ASSERT( (nPageCount>0) && (nCurrentPage<nPageCount), "sd::DrawViewShell::getCurrentPage(), illegal page index!" );
702*cdf0e10cSrcweir 	if( (nPageCount < 0) || (nCurrentPage>=nPageCount) )
703*cdf0e10cSrcweir 		nCurrentPage = 0; // play safe here
704*cdf0e10cSrcweir 
705*cdf0e10cSrcweir 	if (meEditMode == EM_PAGE)
706*cdf0e10cSrcweir 	{
707*cdf0e10cSrcweir 		return GetDoc()->GetSdPage((sal_uInt16)nCurrentPage, mePageKind);
708*cdf0e10cSrcweir 	}
709*cdf0e10cSrcweir 	else // EM_MASTERPAGE
710*cdf0e10cSrcweir 	{
711*cdf0e10cSrcweir 		return GetDoc()->GetMasterSdPage((sal_uInt16)nCurrentPage, mePageKind);
712*cdf0e10cSrcweir 	}
713*cdf0e10cSrcweir }
714*cdf0e10cSrcweir 
715*cdf0e10cSrcweir /*************************************************************************
716*cdf0e10cSrcweir |*
717*cdf0e10cSrcweir |* neue aktuelle Seite auswaehlen, falls sich die Seitenfolge geaendert
718*cdf0e10cSrcweir |* hat (z. B. durch Undo)
719*cdf0e10cSrcweir |*
720*cdf0e10cSrcweir \************************************************************************/
721*cdf0e10cSrcweir 
722*cdf0e10cSrcweir void DrawViewShell::ResetActualPage()
723*cdf0e10cSrcweir {
724*cdf0e10cSrcweir 	sal_uInt16 nCurrentPage = maTabControl.GetCurPageId() - 1;
725*cdf0e10cSrcweir 	sal_uInt16 nPageCount	= (meEditMode == EM_PAGE)?GetDoc()->GetSdPageCount(mePageKind):GetDoc()->GetMasterSdPageCount(mePageKind);
726*cdf0e10cSrcweir 	if (nPageCount > 0)
727*cdf0e10cSrcweir 		nCurrentPage = Min((sal_uInt16)(nPageCount - 1), nCurrentPage);
728*cdf0e10cSrcweir 	else
729*cdf0e10cSrcweir 		nCurrentPage = 0;
730*cdf0e10cSrcweir 
731*cdf0e10cSrcweir 	if (meEditMode == EM_PAGE)
732*cdf0e10cSrcweir 	{
733*cdf0e10cSrcweir 
734*cdf0e10cSrcweir 		// Update fuer TabControl
735*cdf0e10cSrcweir 		maTabControl.Clear();
736*cdf0e10cSrcweir 
737*cdf0e10cSrcweir 		SdPage* pPage = NULL;
738*cdf0e10cSrcweir 		String aPageName;
739*cdf0e10cSrcweir 
740*cdf0e10cSrcweir 		for (sal_uInt16 i = 0; i < nPageCount; i++)
741*cdf0e10cSrcweir 		{
742*cdf0e10cSrcweir 			pPage = GetDoc()->GetSdPage(i, mePageKind);
743*cdf0e10cSrcweir 			aPageName = pPage->GetName();
744*cdf0e10cSrcweir 			maTabControl.InsertPage(i + 1, aPageName);
745*cdf0e10cSrcweir 
746*cdf0e10cSrcweir 			// Selektionskennungen der Seiten korrigieren
747*cdf0e10cSrcweir 			GetDoc()->SetSelected(pPage, i == nCurrentPage);
748*cdf0e10cSrcweir 		}
749*cdf0e10cSrcweir 
750*cdf0e10cSrcweir 		maTabControl.SetCurPageId(nCurrentPage + 1);
751*cdf0e10cSrcweir 	}
752*cdf0e10cSrcweir 	else // EM_MASTERPAGE
753*cdf0e10cSrcweir 	{
754*cdf0e10cSrcweir 		SdPage* pActualPage = GetDoc()->GetMasterSdPage(nCurrentPage, mePageKind);
755*cdf0e10cSrcweir 		maTabControl.Clear();
756*cdf0e10cSrcweir 		sal_uInt16 nActualMasterPageNum = 0;
757*cdf0e10cSrcweir 
758*cdf0e10cSrcweir 		sal_uInt16 nMasterPageCnt = GetDoc()->GetMasterSdPageCount(mePageKind);
759*cdf0e10cSrcweir 		for (sal_uInt16 i = 0; i < nMasterPageCnt; i++)
760*cdf0e10cSrcweir 		{
761*cdf0e10cSrcweir 			SdPage* pMaster = GetDoc()->GetMasterSdPage(i, mePageKind);
762*cdf0e10cSrcweir 			String aLayoutName(pMaster->GetLayoutName());
763*cdf0e10cSrcweir 			aLayoutName.Erase(aLayoutName.SearchAscii(SD_LT_SEPARATOR));
764*cdf0e10cSrcweir 			maTabControl.InsertPage(i + 1, aLayoutName);
765*cdf0e10cSrcweir 
766*cdf0e10cSrcweir 			if (pActualPage == pMaster)
767*cdf0e10cSrcweir 				nActualMasterPageNum = i;
768*cdf0e10cSrcweir 		}
769*cdf0e10cSrcweir 
770*cdf0e10cSrcweir 		maTabControl.SetCurPageId(nActualMasterPageNum + 1);
771*cdf0e10cSrcweir 		SwitchPage(nActualMasterPageNum);
772*cdf0e10cSrcweir 	}
773*cdf0e10cSrcweir 
774*cdf0e10cSrcweir 	GetViewFrame()->GetDispatcher()->Execute(SID_SWITCHPAGE,
775*cdf0e10cSrcweir 				SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
776*cdf0e10cSrcweir }
777*cdf0e10cSrcweir 
778*cdf0e10cSrcweir /*************************************************************************
779*cdf0e10cSrcweir |*
780*cdf0e10cSrcweir |* Verb auf OLE-Objekt anwenden
781*cdf0e10cSrcweir |*
782*cdf0e10cSrcweir \************************************************************************/
783*cdf0e10cSrcweir 
784*cdf0e10cSrcweir 
785*cdf0e10cSrcweir ErrCode DrawViewShell::DoVerb(long nVerb)
786*cdf0e10cSrcweir {
787*cdf0e10cSrcweir 	if ( mpDrawView->AreObjectsMarked() )
788*cdf0e10cSrcweir 	{
789*cdf0e10cSrcweir 		const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
790*cdf0e10cSrcweir 
791*cdf0e10cSrcweir 		if (rMarkList.GetMarkCount() == 1)
792*cdf0e10cSrcweir 		{
793*cdf0e10cSrcweir 			SdrMark* pMark = rMarkList.GetMark(0);
794*cdf0e10cSrcweir 			SdrObject* pObj = pMark->GetMarkedSdrObj();
795*cdf0e10cSrcweir 
796*cdf0e10cSrcweir 			sal_uInt32 nInv = pObj->GetObjInventor();
797*cdf0e10cSrcweir 			sal_uInt16 nSdrObjKind = pObj->GetObjIdentifier();
798*cdf0e10cSrcweir 
799*cdf0e10cSrcweir 			if (nInv == SdrInventor && nSdrObjKind == OBJ_OLE2)
800*cdf0e10cSrcweir 			{
801*cdf0e10cSrcweir 				ActivateObject( (SdrOle2Obj*) pObj, nVerb);
802*cdf0e10cSrcweir 			}
803*cdf0e10cSrcweir #ifdef STARIMAGE_AVAILABLE
804*cdf0e10cSrcweir 			else if (nInv = SdrInventor && nSdrObjKind == OBJ_GRAF &&
805*cdf0e10cSrcweir 					 ((SdrGrafObj*) pObj)->GetGraphicType() == GRAPHIC_BITMAP &&
806*cdf0e10cSrcweir 					 SFX_APP()->HasFeature(SFX_FEATURE_SIMAGE))
807*cdf0e10cSrcweir 			{
808*cdf0e10cSrcweir 				SdrGrafObj* pSdrGrafObj = (SdrGrafObj*) pObj;
809*cdf0e10cSrcweir 				short nOK = RET_YES;
810*cdf0e10cSrcweir 
811*cdf0e10cSrcweir 				if ( pSdrGrafObj->GetFileName().Len() )
812*cdf0e10cSrcweir 				{
813*cdf0e10cSrcweir 					// Graphik ist gelinkt, soll der Link aufgehoben werden?
814*cdf0e10cSrcweir 					QueryBox aBox(pWindow, WB_YES_NO | WB_DEF_YES,
815*cdf0e10cSrcweir 								  String( SdResId(STR_REMOVE_LINK) ) );
816*cdf0e10cSrcweir 					nOK = aBox.Execute();
817*cdf0e10cSrcweir 
818*cdf0e10cSrcweir 					if (nOK == RET_YES)
819*cdf0e10cSrcweir 					{
820*cdf0e10cSrcweir 						// Link aufheben (File- und Filtername zuruecksetzen)
821*cdf0e10cSrcweir 						pSdrGrafObj->SetGraphicLink(String(), String());
822*cdf0e10cSrcweir 					}
823*cdf0e10cSrcweir 				}
824*cdf0e10cSrcweir 
825*cdf0e10cSrcweir 				if (nOK == RET_YES)
826*cdf0e10cSrcweir 				{
827*cdf0e10cSrcweir 					/**************************************************************
828*cdf0e10cSrcweir 					* OLE-Objekt erzeugen, StarImage starten
829*cdf0e10cSrcweir 					* Grafik-Objekt loeschen (durch OLE-Objekt ersetzt)
830*cdf0e10cSrcweir 					**************************************************************/
831*cdf0e10cSrcweir 					//HMHmpDrView->HideMarkHdl();
832*cdf0e10cSrcweir 
833*cdf0e10cSrcweir 					SvStorageRef aStor = new SvStorage(String());
834*cdf0e10cSrcweir 					SvInPlaceObjectRef aNewIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())
835*cdf0e10cSrcweir 					->CreateAndInit(SimModuleDummy::GetID(SOFFICE_FILEFORMAT_CURRENT), aStor);
836*cdf0e10cSrcweir 					if ( aNewIPObj.Is() )
837*cdf0e10cSrcweir 					{
838*cdf0e10cSrcweir 						SdrGrafObj* pTempSdrGrafObj = (SdrGrafObj*) pSdrGrafObj->Clone ();
839*cdf0e10cSrcweir 
840*cdf0e10cSrcweir 						SvEmbeddedInfoObject * pInfo;
841*cdf0e10cSrcweir 						pInfo = GetViewFrame()->GetObjectShell()->
842*cdf0e10cSrcweir 									   InsertObject( aNewIPObj, String() );
843*cdf0e10cSrcweir 
844*cdf0e10cSrcweir 						String aName;
845*cdf0e10cSrcweir 						if (pInfo)
846*cdf0e10cSrcweir 						{
847*cdf0e10cSrcweir 							aName = pInfo->GetObjName();
848*cdf0e10cSrcweir 						}
849*cdf0e10cSrcweir 
850*cdf0e10cSrcweir 						Rectangle aRect = pObj->GetLogicRect();
851*cdf0e10cSrcweir 						SdrOle2Obj* pSdrOle2Obj = new SdrOle2Obj( aNewIPObj,
852*cdf0e10cSrcweir 																  aName, aRect );
853*cdf0e10cSrcweir 
854*cdf0e10cSrcweir 						SdrPageView* pPV = mpDrawView->GetSdrPageView();
855*cdf0e10cSrcweir 
856*cdf0e10cSrcweir 						pPV->GetObjList()->InsertObject( pSdrOle2Obj );
857*cdf0e10cSrcweir 						mpDrawView->ReplaceObjectAtView( pObj, *pPV, pTempSdrGrafObj );
858*cdf0e10cSrcweir 
859*cdf0e10cSrcweir 						pSdrOle2Obj->SetLogicRect(aRect);
860*cdf0e10cSrcweir 						aNewIPObj->SetVisAreaSize(aRect.GetSize());
861*cdf0e10cSrcweir 
862*cdf0e10cSrcweir 						SimDLL::Update(aNewIPObj, pTempSdrGrafObj->GetGraphic(), pWindow);
863*cdf0e10cSrcweir 						ActivateObject(pSdrOle2Obj, SVVERB_SHOW);
864*cdf0e10cSrcweir 
865*cdf0e10cSrcweir 						Client* pClient = (Client*) GetIPClient();
866*cdf0e10cSrcweir 
867*cdf0e10cSrcweir 						if (pClient)
868*cdf0e10cSrcweir 							pClient->SetSdrGrafObj( pTempSdrGrafObj );
869*cdf0e10cSrcweir 					}
870*cdf0e10cSrcweir 				}
871*cdf0e10cSrcweir 			}
872*cdf0e10cSrcweir #endif
873*cdf0e10cSrcweir 		}
874*cdf0e10cSrcweir 	}
875*cdf0e10cSrcweir 
876*cdf0e10cSrcweir 	return 0;
877*cdf0e10cSrcweir }
878*cdf0e10cSrcweir 
879*cdf0e10cSrcweir 
880*cdf0e10cSrcweir /*************************************************************************
881*cdf0e10cSrcweir |*
882*cdf0e10cSrcweir |* OLE-Object aktivieren
883*cdf0e10cSrcweir |*
884*cdf0e10cSrcweir \************************************************************************/
885*cdf0e10cSrcweir 
886*cdf0e10cSrcweir sal_Bool DrawViewShell::ActivateObject(SdrOle2Obj* pObj, long nVerb)
887*cdf0e10cSrcweir {
888*cdf0e10cSrcweir 	sal_Bool bActivated = sal_False;
889*cdf0e10cSrcweir 
890*cdf0e10cSrcweir 	if ( !GetDocSh()->IsUIActive() )
891*cdf0e10cSrcweir 	{
892*cdf0e10cSrcweir         ToolBarManager::UpdateLock aLock (GetViewShellBase().GetToolBarManager());
893*cdf0e10cSrcweir 
894*cdf0e10cSrcweir 		bActivated = ViewShell::ActivateObject(pObj, nVerb);
895*cdf0e10cSrcweir 
896*cdf0e10cSrcweir         OSL_ASSERT(GetViewShell()!=NULL);
897*cdf0e10cSrcweir         Client* pClient = static_cast<Client*>(GetViewShell()->GetIPClient());
898*cdf0e10cSrcweir 		if (pClient)
899*cdf0e10cSrcweir 			pClient->SetSdrGrafObj(NULL);
900*cdf0e10cSrcweir 	}
901*cdf0e10cSrcweir 
902*cdf0e10cSrcweir 	return(bActivated);
903*cdf0e10cSrcweir }
904*cdf0e10cSrcweir 
905*cdf0e10cSrcweir /*************************************************************************
906*cdf0e10cSrcweir |*
907*cdf0e10cSrcweir |* Auf gewuenschte Seite schalten
908*cdf0e10cSrcweir |* Der Parameter nSelectedPage bezieht sich auf den aktuellen EditMode
909*cdf0e10cSrcweir |*
910*cdf0e10cSrcweir \************************************************************************/
911*cdf0e10cSrcweir 
912*cdf0e10cSrcweir void LclResetFlag (bool& rbFlag) {rbFlag = false;}
913*cdf0e10cSrcweir 
914*cdf0e10cSrcweir sal_Bool DrawViewShell::SwitchPage(sal_uInt16 nSelectedPage)
915*cdf0e10cSrcweir {
916*cdf0e10cSrcweir     /** Under some circumstances there are nested calls to SwitchPage() and
917*cdf0e10cSrcweir         may crash the application (activation of form controls when the
918*cdf0e10cSrcweir         shell of the edit view is not on top of the shell stack, see issue
919*cdf0e10cSrcweir         83888 for details.)  Therefore the nested calls are ignored (they
920*cdf0e10cSrcweir         would jump to the wrong page anyway.)
921*cdf0e10cSrcweir     */
922*cdf0e10cSrcweir     if (mbIsInSwitchPage)
923*cdf0e10cSrcweir         return sal_False;
924*cdf0e10cSrcweir     mbIsInSwitchPage = true;
925*cdf0e10cSrcweir     comphelper::ScopeGuard aGuard (::boost::bind(LclResetFlag, ::boost::ref(mbIsInSwitchPage)));
926*cdf0e10cSrcweir 
927*cdf0e10cSrcweir     if (GetActiveWindow()->IsInPaint())
928*cdf0e10cSrcweir     {
929*cdf0e10cSrcweir         // Switching the current page while a Paint is being executed is
930*cdf0e10cSrcweir         // dangerous.  So, post it for later execution and return.
931*cdf0e10cSrcweir         maAsynchronousSwitchPageCall.Post(::boost::bind(
932*cdf0e10cSrcweir             ::std::mem_fun(&DrawViewShell::SwitchPage),
933*cdf0e10cSrcweir             this,
934*cdf0e10cSrcweir             nSelectedPage));
935*cdf0e10cSrcweir         return sal_False;
936*cdf0e10cSrcweir     }
937*cdf0e10cSrcweir 
938*cdf0e10cSrcweir 	sal_Bool bOK = sal_False;
939*cdf0e10cSrcweir 
940*cdf0e10cSrcweir     // With the current implementation of FuSlideShow there is a problem
941*cdf0e10cSrcweir     // when it dsplays the show in a window: When the show is stopped it
942*cdf0e10cSrcweir     // returns at one point in time SDRPAGE_NOTFOUND as current page index.
943*cdf0e10cSrcweir     // Because FuSlideShow is currently being rewritten this bug is fixed
944*cdf0e10cSrcweir     // here.
945*cdf0e10cSrcweir     // This is not as bad a hack as it may look because making SwitchPage()
946*cdf0e10cSrcweir     // more robust with respect to invalid page numbers is a good thing
947*cdf0e10cSrcweir     // anyway.
948*cdf0e10cSrcweir     if (nSelectedPage == SDRPAGE_NOTFOUND)
949*cdf0e10cSrcweir 	{
950*cdf0e10cSrcweir         nSelectedPage = 0;
951*cdf0e10cSrcweir 	}
952*cdf0e10cSrcweir 	else
953*cdf0e10cSrcweir 	{
954*cdf0e10cSrcweir 	    // Make sure that the given page index points to an existing page.  Move
955*cdf0e10cSrcweir 		// the index into the valid range if necessary.
956*cdf0e10cSrcweir 		sal_uInt16 nPageCount = (meEditMode == EM_PAGE)
957*cdf0e10cSrcweir 			? GetDoc()->GetSdPageCount(mePageKind)
958*cdf0e10cSrcweir 			: GetDoc()->GetMasterSdPageCount(mePageKind);
959*cdf0e10cSrcweir 		if (nSelectedPage >= nPageCount)
960*cdf0e10cSrcweir 			nSelectedPage = nPageCount-1;
961*cdf0e10cSrcweir 	}
962*cdf0e10cSrcweir 
963*cdf0e10cSrcweir 	if (IsSwitchPageAllowed())
964*cdf0e10cSrcweir 	{
965*cdf0e10cSrcweir 		ModifyGuard aGuard2( GetDoc() );
966*cdf0e10cSrcweir 
967*cdf0e10cSrcweir 		bOK = sal_True;
968*cdf0e10cSrcweir 
969*cdf0e10cSrcweir 		if (mpActualPage)
970*cdf0e10cSrcweir 		{
971*cdf0e10cSrcweir             SdPage* pNewPage = NULL;
972*cdf0e10cSrcweir 
973*cdf0e10cSrcweir 			if (meEditMode == EM_MASTERPAGE)
974*cdf0e10cSrcweir 			{
975*cdf0e10cSrcweir 				if( GetDoc()->GetMasterSdPageCount(mePageKind) > nSelectedPage )
976*cdf0e10cSrcweir 					pNewPage = GetDoc()->GetMasterSdPage(nSelectedPage, mePageKind);
977*cdf0e10cSrcweir 
978*cdf0e10cSrcweir 				if( pNewPage )
979*cdf0e10cSrcweir 				{
980*cdf0e10cSrcweir 					SdrPageView* pPV = mpDrawView->GetSdrPageView();
981*cdf0e10cSrcweir 
982*cdf0e10cSrcweir                     String sPageText (pNewPage->GetLayoutName());
983*cdf0e10cSrcweir                     sPageText.Erase(sPageText.SearchAscii(SD_LT_SEPARATOR));
984*cdf0e10cSrcweir 					if (pPV
985*cdf0e10cSrcweir                         && pNewPage == dynamic_cast< SdPage* >( pPV->GetPage() )
986*cdf0e10cSrcweir                         && sPageText == maTabControl.GetPageText(nSelectedPage+1))
987*cdf0e10cSrcweir 					{
988*cdf0e10cSrcweir 						// this slide is already visible
989*cdf0e10cSrcweir 						return sal_True;
990*cdf0e10cSrcweir 					}
991*cdf0e10cSrcweir 				}
992*cdf0e10cSrcweir 			}
993*cdf0e10cSrcweir 			else
994*cdf0e10cSrcweir 			{
995*cdf0e10cSrcweir                 OSL_ASSERT(mpFrameView!=NULL);
996*cdf0e10cSrcweir                 mpFrameView->SetSelectedPage(nSelectedPage);
997*cdf0e10cSrcweir 
998*cdf0e10cSrcweir 				if (GetDoc()->GetSdPageCount(mePageKind) > nSelectedPage)
999*cdf0e10cSrcweir 					pNewPage = GetDoc()->GetSdPage(nSelectedPage, mePageKind);
1000*cdf0e10cSrcweir 
1001*cdf0e10cSrcweir 				if (mpActualPage == pNewPage)
1002*cdf0e10cSrcweir 				{
1003*cdf0e10cSrcweir 					SdrPageView* pPV = mpDrawView->GetSdrPageView();
1004*cdf0e10cSrcweir 
1005*cdf0e10cSrcweir                     SdPage* pCurrentPage = dynamic_cast< SdPage* >( pPV->GetPage());
1006*cdf0e10cSrcweir                     if (pPV
1007*cdf0e10cSrcweir                         && pNewPage == pCurrentPage
1008*cdf0e10cSrcweir                         && pNewPage->GetName() == maTabControl.GetPageText(nSelectedPage+1))
1009*cdf0e10cSrcweir 					{
1010*cdf0e10cSrcweir 						// this slide is already visible
1011*cdf0e10cSrcweir 						return sal_True;
1012*cdf0e10cSrcweir 					}
1013*cdf0e10cSrcweir 				}
1014*cdf0e10cSrcweir 			}
1015*cdf0e10cSrcweir 		}
1016*cdf0e10cSrcweir 
1017*cdf0e10cSrcweir 		if( mpDrawView )
1018*cdf0e10cSrcweir 			mpDrawView->SdrEndTextEdit();
1019*cdf0e10cSrcweir 
1020*cdf0e10cSrcweir 		mpActualPage = NULL;
1021*cdf0e10cSrcweir 
1022*cdf0e10cSrcweir 		if (meEditMode == EM_PAGE)
1023*cdf0e10cSrcweir 		{
1024*cdf0e10cSrcweir 			mpActualPage = GetDoc()->GetSdPage(nSelectedPage, mePageKind);
1025*cdf0e10cSrcweir 		}
1026*cdf0e10cSrcweir 		else
1027*cdf0e10cSrcweir 		{
1028*cdf0e10cSrcweir 			SdPage* pMaster = GetDoc()->GetMasterSdPage(nSelectedPage, mePageKind);
1029*cdf0e10cSrcweir 
1030*cdf0e10cSrcweir 			// Passt die selektierte Seite zur MasterPage?
1031*cdf0e10cSrcweir 			sal_uInt16 nPageCount = GetDoc()->GetSdPageCount(mePageKind);
1032*cdf0e10cSrcweir 			for (sal_uInt16 i = 0; i < nPageCount; i++)
1033*cdf0e10cSrcweir 			{
1034*cdf0e10cSrcweir 				SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind);
1035*cdf0e10cSrcweir 				if(pPage && pPage->IsSelected() && pMaster == &(pPage->TRG_GetMasterPage()))
1036*cdf0e10cSrcweir 				{
1037*cdf0e10cSrcweir 					mpActualPage = pPage;
1038*cdf0e10cSrcweir 					break;
1039*cdf0e10cSrcweir 				}
1040*cdf0e10cSrcweir 			}
1041*cdf0e10cSrcweir 
1042*cdf0e10cSrcweir 			if (!mpActualPage)
1043*cdf0e10cSrcweir 			{
1044*cdf0e10cSrcweir 				// Die erste Seite nehmen, welche zur MasterPage passt
1045*cdf0e10cSrcweir 				for (sal_uInt16 i = 0; i < nPageCount; i++)
1046*cdf0e10cSrcweir 				{
1047*cdf0e10cSrcweir 					SdPage* pPage = GetDoc()->GetSdPage(i, mePageKind);
1048*cdf0e10cSrcweir 					if(pPage && pMaster == &(pPage->TRG_GetMasterPage()))
1049*cdf0e10cSrcweir 					{
1050*cdf0e10cSrcweir 						mpActualPage = pPage;
1051*cdf0e10cSrcweir 						break;
1052*cdf0e10cSrcweir 					}
1053*cdf0e10cSrcweir 				}
1054*cdf0e10cSrcweir 			}
1055*cdf0e10cSrcweir 		}
1056*cdf0e10cSrcweir 
1057*cdf0e10cSrcweir 		for (sal_uInt16 i = 0; i < GetDoc()->GetSdPageCount(mePageKind); i++)
1058*cdf0e10cSrcweir 		{
1059*cdf0e10cSrcweir 			// Alle Seiten deselektieren
1060*cdf0e10cSrcweir 			GetDoc()->SetSelected( GetDoc()->GetSdPage(i, mePageKind), sal_False);
1061*cdf0e10cSrcweir 		}
1062*cdf0e10cSrcweir 
1063*cdf0e10cSrcweir 		if (!mpActualPage)
1064*cdf0e10cSrcweir 		{
1065*cdf0e10cSrcweir 			// Sofern es keine mpActualPage gibt, wird die erste genommen
1066*cdf0e10cSrcweir 			mpActualPage = GetDoc()->GetSdPage(0, mePageKind);
1067*cdf0e10cSrcweir 		}
1068*cdf0e10cSrcweir 
1069*cdf0e10cSrcweir 		// diese Seite auch selektieren (mpActualPage zeigt immer auf Zeichenseite,
1070*cdf0e10cSrcweir 		// nie auf eine Masterpage)
1071*cdf0e10cSrcweir 		GetDoc()->SetSelected(mpActualPage, sal_True);
1072*cdf0e10cSrcweir 
1073*cdf0e10cSrcweir 		rtl::Reference< sd::SlideShow > xSlideshow( SlideShow::GetSlideShow( GetDoc() ) );
1074*cdf0e10cSrcweir         if( !xSlideshow.is() || !xSlideshow->isRunning() || ( xSlideshow->getAnimationMode() != ANIMATIONMODE_SHOW ) )
1075*cdf0e10cSrcweir         {
1076*cdf0e10cSrcweir     		// VisArea zuziehen, um ggf. Objekte zu deaktivieren
1077*cdf0e10cSrcweir             // !!! only if we are not in presentation mode (#96279) !!!
1078*cdf0e10cSrcweir             OSL_ASSERT (GetViewShell()!=NULL);
1079*cdf0e10cSrcweir             GetViewShell()->DisconnectAllClients();
1080*cdf0e10cSrcweir     		VisAreaChanged(Rectangle(Point(), Size(1, 1)));
1081*cdf0e10cSrcweir         }
1082*cdf0e10cSrcweir 
1083*cdf0e10cSrcweir 		if (meEditMode == EM_PAGE)
1084*cdf0e10cSrcweir 		{
1085*cdf0e10cSrcweir 			/**********************************************************************
1086*cdf0e10cSrcweir 			* PAGEMODE
1087*cdf0e10cSrcweir 			**********************************************************************/
1088*cdf0e10cSrcweir 			GetDoc()->SetSelected(mpActualPage, sal_True);
1089*cdf0e10cSrcweir 
1090*cdf0e10cSrcweir 			SdrPageView* pPageView = mpDrawView->GetSdrPageView();
1091*cdf0e10cSrcweir 
1092*cdf0e10cSrcweir 			if (pPageView)
1093*cdf0e10cSrcweir 			{
1094*cdf0e10cSrcweir 				mpFrameView->SetVisibleLayers( pPageView->GetVisibleLayers() );
1095*cdf0e10cSrcweir 				mpFrameView->SetPrintableLayers( pPageView->GetPrintableLayers() );
1096*cdf0e10cSrcweir 				mpFrameView->SetLockedLayers( pPageView->GetLockedLayers() );
1097*cdf0e10cSrcweir 
1098*cdf0e10cSrcweir 				if (mePageKind == PK_NOTES)
1099*cdf0e10cSrcweir 				{
1100*cdf0e10cSrcweir 					mpFrameView->SetNotesHelpLines( pPageView->GetHelpLines() );
1101*cdf0e10cSrcweir 				}
1102*cdf0e10cSrcweir 				else if (mePageKind == PK_HANDOUT)
1103*cdf0e10cSrcweir 				{
1104*cdf0e10cSrcweir 					mpFrameView->SetHandoutHelpLines( pPageView->GetHelpLines() );
1105*cdf0e10cSrcweir 				}
1106*cdf0e10cSrcweir 				else
1107*cdf0e10cSrcweir 				{
1108*cdf0e10cSrcweir 					mpFrameView->SetStandardHelpLines( pPageView->GetHelpLines() );
1109*cdf0e10cSrcweir 				}
1110*cdf0e10cSrcweir 			}
1111*cdf0e10cSrcweir 
1112*cdf0e10cSrcweir 			mpDrawView->HideSdrPage();
1113*cdf0e10cSrcweir 			mpDrawView->ShowSdrPage(mpActualPage);
1114*cdf0e10cSrcweir             GetViewShellBase().GetDrawController().FireSwitchCurrentPage(mpActualPage);
1115*cdf0e10cSrcweir 
1116*cdf0e10cSrcweir 			SdrPageView* pNewPageView = mpDrawView->GetSdrPageView();
1117*cdf0e10cSrcweir 
1118*cdf0e10cSrcweir 			if (pNewPageView)
1119*cdf0e10cSrcweir 			{
1120*cdf0e10cSrcweir 				pNewPageView->SetVisibleLayers( mpFrameView->GetVisibleLayers() );
1121*cdf0e10cSrcweir 				pNewPageView->SetPrintableLayers( mpFrameView->GetPrintableLayers() );
1122*cdf0e10cSrcweir 				pNewPageView->SetLockedLayers( mpFrameView->GetLockedLayers() );
1123*cdf0e10cSrcweir 
1124*cdf0e10cSrcweir 				if (mePageKind == PK_NOTES)
1125*cdf0e10cSrcweir 				{
1126*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetNotesHelpLines() );
1127*cdf0e10cSrcweir 				}
1128*cdf0e10cSrcweir 				else if (mePageKind == PK_HANDOUT)
1129*cdf0e10cSrcweir 				{
1130*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetHandoutHelpLines() );
1131*cdf0e10cSrcweir 				}
1132*cdf0e10cSrcweir 				else
1133*cdf0e10cSrcweir 				{
1134*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetStandardHelpLines() );
1135*cdf0e10cSrcweir 				}
1136*cdf0e10cSrcweir 			}
1137*cdf0e10cSrcweir 
1138*cdf0e10cSrcweir 			maTabControl.SetCurPageId(nSelectedPage+1);
1139*cdf0e10cSrcweir 			String aPageName = mpActualPage->GetName();
1140*cdf0e10cSrcweir 
1141*cdf0e10cSrcweir 			if (maTabControl.GetPageText(nSelectedPage+1) != aPageName)
1142*cdf0e10cSrcweir 			{
1143*cdf0e10cSrcweir 				maTabControl.SetPageText(nSelectedPage+1, aPageName);
1144*cdf0e10cSrcweir 			}
1145*cdf0e10cSrcweir 		}
1146*cdf0e10cSrcweir 		else
1147*cdf0e10cSrcweir 		{
1148*cdf0e10cSrcweir 			/**********************************************************************
1149*cdf0e10cSrcweir 			* MASTERPAGE
1150*cdf0e10cSrcweir 			**********************************************************************/
1151*cdf0e10cSrcweir 			SdrPageView* pPageView = mpDrawView->GetSdrPageView();
1152*cdf0e10cSrcweir 
1153*cdf0e10cSrcweir 			if (pPageView)
1154*cdf0e10cSrcweir 			{
1155*cdf0e10cSrcweir 				mpFrameView->SetVisibleLayers( pPageView->GetVisibleLayers() );
1156*cdf0e10cSrcweir 				mpFrameView->SetPrintableLayers( pPageView->GetPrintableLayers() );
1157*cdf0e10cSrcweir 				mpFrameView->SetLockedLayers( pPageView->GetLockedLayers() );
1158*cdf0e10cSrcweir 
1159*cdf0e10cSrcweir 				if (mePageKind == PK_NOTES)
1160*cdf0e10cSrcweir 				{
1161*cdf0e10cSrcweir 					mpFrameView->SetNotesHelpLines( pPageView->GetHelpLines() );
1162*cdf0e10cSrcweir 				}
1163*cdf0e10cSrcweir 				else if (mePageKind == PK_HANDOUT)
1164*cdf0e10cSrcweir 				{
1165*cdf0e10cSrcweir 					mpFrameView->SetHandoutHelpLines( pPageView->GetHelpLines() );
1166*cdf0e10cSrcweir 				}
1167*cdf0e10cSrcweir 				else
1168*cdf0e10cSrcweir 				{
1169*cdf0e10cSrcweir 					mpFrameView->SetStandardHelpLines( pPageView->GetHelpLines() );
1170*cdf0e10cSrcweir 				}
1171*cdf0e10cSrcweir 			}
1172*cdf0e10cSrcweir 
1173*cdf0e10cSrcweir 			mpDrawView->HideSdrPage();
1174*cdf0e10cSrcweir 
1175*cdf0e10cSrcweir 			SdPage* pMaster = GetDoc()->GetMasterSdPage(nSelectedPage, mePageKind);
1176*cdf0e10cSrcweir 
1177*cdf0e10cSrcweir 			if( !pMaster )              // Falls es diese Page nicht geben sollte
1178*cdf0e10cSrcweir 				pMaster = GetDoc()->GetMasterSdPage(0, mePageKind);
1179*cdf0e10cSrcweir 
1180*cdf0e10cSrcweir 			sal_uInt16 nNum = pMaster->GetPageNum();
1181*cdf0e10cSrcweir 			mpDrawView->ShowSdrPage(mpDrawView->GetModel()->GetMasterPage(nNum));
1182*cdf0e10cSrcweir 
1183*cdf0e10cSrcweir             GetViewShellBase().GetDrawController().FireSwitchCurrentPage(pMaster);
1184*cdf0e10cSrcweir 
1185*cdf0e10cSrcweir 			SdrPageView* pNewPageView = mpDrawView->GetSdrPageView();
1186*cdf0e10cSrcweir 
1187*cdf0e10cSrcweir 			if (pNewPageView)
1188*cdf0e10cSrcweir 			{
1189*cdf0e10cSrcweir 				pNewPageView->SetVisibleLayers( mpFrameView->GetVisibleLayers() );
1190*cdf0e10cSrcweir 				pNewPageView->SetPrintableLayers( mpFrameView->GetPrintableLayers() );
1191*cdf0e10cSrcweir 				pNewPageView->SetLockedLayers( mpFrameView->GetLockedLayers() );
1192*cdf0e10cSrcweir 
1193*cdf0e10cSrcweir 				if (mePageKind == PK_NOTES)
1194*cdf0e10cSrcweir 				{
1195*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetNotesHelpLines() );
1196*cdf0e10cSrcweir 				}
1197*cdf0e10cSrcweir 				else if (mePageKind == PK_HANDOUT)
1198*cdf0e10cSrcweir 				{
1199*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetHandoutHelpLines() );
1200*cdf0e10cSrcweir 				}
1201*cdf0e10cSrcweir 				else
1202*cdf0e10cSrcweir 				{
1203*cdf0e10cSrcweir 					pNewPageView->SetHelpLines( mpFrameView->GetStandardHelpLines() );
1204*cdf0e10cSrcweir 				}
1205*cdf0e10cSrcweir 			}
1206*cdf0e10cSrcweir 
1207*cdf0e10cSrcweir 			String aLayoutName(pMaster->GetLayoutName());
1208*cdf0e10cSrcweir 			aLayoutName.Erase(aLayoutName.SearchAscii(SD_LT_SEPARATOR));
1209*cdf0e10cSrcweir 
1210*cdf0e10cSrcweir 			maTabControl.SetCurPageId(nSelectedPage+1);
1211*cdf0e10cSrcweir 
1212*cdf0e10cSrcweir 			if (maTabControl.GetPageText(nSelectedPage+1) != aLayoutName)
1213*cdf0e10cSrcweir 			{
1214*cdf0e10cSrcweir 				maTabControl.SetPageText(nSelectedPage+1, aLayoutName);
1215*cdf0e10cSrcweir 			}
1216*cdf0e10cSrcweir 
1217*cdf0e10cSrcweir 			if( mePageKind == PK_HANDOUT )
1218*cdf0e10cSrcweir 			{
1219*cdf0e10cSrcweir 				// set pages for all available handout presentation objects
1220*cdf0e10cSrcweir 				sd::ShapeList& rShapeList = pMaster->GetPresentationShapeList();
1221*cdf0e10cSrcweir 				SdrObject* pObj = 0;
1222*cdf0e10cSrcweir 
1223*cdf0e10cSrcweir                 while( (pObj = rShapeList.getNextShape(pObj)) != 0 )
1224*cdf0e10cSrcweir 				{
1225*cdf0e10cSrcweir 					if( pMaster->GetPresObjKind(pObj) == PRESOBJ_HANDOUT )
1226*cdf0e10cSrcweir 					{
1227*cdf0e10cSrcweir                         // #i105146# We want no content to be displayed for PK_HANDOUT,
1228*cdf0e10cSrcweir                         // so just never set a page as content
1229*cdf0e10cSrcweir 						static_cast<SdrPageObj*>(pObj)->SetReferencedPage(0);
1230*cdf0e10cSrcweir 					}
1231*cdf0e10cSrcweir 				}
1232*cdf0e10cSrcweir 			}
1233*cdf0e10cSrcweir 		}
1234*cdf0e10cSrcweir 
1235*cdf0e10cSrcweir 		Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
1236*cdf0e10cSrcweir 		Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
1237*cdf0e10cSrcweir 		VisAreaChanged(aVisAreaWin);
1238*cdf0e10cSrcweir 		mpDrawView->VisAreaChanged(GetActiveWindow());
1239*cdf0e10cSrcweir 
1240*cdf0e10cSrcweir 		// Damit der Navigator (und das Effekte-Window) das mitbekommt (/-men)
1241*cdf0e10cSrcweir 		SfxBindings& rBindings = GetViewFrame()->GetBindings();
1242*cdf0e10cSrcweir 		rBindings.Invalidate(SID_NAVIGATOR_PAGENAME, sal_True, sal_False);
1243*cdf0e10cSrcweir 		rBindings.Invalidate(SID_STATUS_PAGE, sal_True, sal_False);
1244*cdf0e10cSrcweir 		rBindings.Invalidate(SID_DELETE_MASTER_PAGE, sal_True, sal_False);
1245*cdf0e10cSrcweir 		rBindings.Invalidate(SID_DELETE_PAGE, sal_True, sal_False);
1246*cdf0e10cSrcweir 		rBindings.Invalidate(SID_ASSIGN_LAYOUT,sal_True,sal_False);
1247*cdf0e10cSrcweir 		rBindings.Invalidate(SID_INSERTPAGE,sal_True,sal_False);
1248*cdf0e10cSrcweir 		UpdatePreview( mpActualPage );
1249*cdf0e10cSrcweir 
1250*cdf0e10cSrcweir 		mpDrawView->AdjustMarkHdl();
1251*cdf0e10cSrcweir 	}
1252*cdf0e10cSrcweir 
1253*cdf0e10cSrcweir 	return (bOK);
1254*cdf0e10cSrcweir }
1255*cdf0e10cSrcweir 
1256*cdf0e10cSrcweir 
1257*cdf0e10cSrcweir /*************************************************************************
1258*cdf0e10cSrcweir |*
1259*cdf0e10cSrcweir |* Pruefen, ob ein Seitenwechsel erlaubt ist
1260*cdf0e10cSrcweir |*
1261*cdf0e10cSrcweir \************************************************************************/
1262*cdf0e10cSrcweir 
1263*cdf0e10cSrcweir sal_Bool DrawViewShell::IsSwitchPageAllowed() const
1264*cdf0e10cSrcweir {
1265*cdf0e10cSrcweir 	bool bOK = true;
1266*cdf0e10cSrcweir 
1267*cdf0e10cSrcweir     FmFormShell* pFormShell = GetViewShellBase().GetFormShellManager()->GetFormShell();
1268*cdf0e10cSrcweir     if (pFormShell!=NULL && !pFormShell->PrepareClose (sal_False))
1269*cdf0e10cSrcweir         bOK = false;
1270*cdf0e10cSrcweir 
1271*cdf0e10cSrcweir 	return bOK;
1272*cdf0e10cSrcweir }
1273*cdf0e10cSrcweir 
1274*cdf0e10cSrcweir /*************************************************************************
1275*cdf0e10cSrcweir |*
1276*cdf0e10cSrcweir |* neue aktuelle Seite auswaehlen, falls sich die Seitenfolge geaendert
1277*cdf0e10cSrcweir |* hat (z. B. durch Undo)
1278*cdf0e10cSrcweir |*
1279*cdf0e10cSrcweir \************************************************************************/
1280*cdf0e10cSrcweir 
1281*cdf0e10cSrcweir void DrawViewShell::ResetActualLayer()
1282*cdf0e10cSrcweir {
1283*cdf0e10cSrcweir     LayerTabBar* pLayerBar = GetLayerTabControl();
1284*cdf0e10cSrcweir     if (pLayerBar != NULL)
1285*cdf0e10cSrcweir     {
1286*cdf0e10cSrcweir         // remember old layer cound and current layer id
1287*cdf0e10cSrcweir         // this is needed when one layer is renamed to
1288*cdf0e10cSrcweir         // restore current layer
1289*cdf0e10cSrcweir         sal_uInt16 nOldLayerCnt = pLayerBar->GetPageCount();
1290*cdf0e10cSrcweir         sal_uInt16 nOldLayerId = pLayerBar->GetCurPageId();
1291*cdf0e10cSrcweir 
1292*cdf0e10cSrcweir         /*************************************************************
1293*cdf0e10cSrcweir             * Update fuer LayerTab
1294*cdf0e10cSrcweir             *************************************************************/
1295*cdf0e10cSrcweir         pLayerBar->Clear();
1296*cdf0e10cSrcweir 
1297*cdf0e10cSrcweir         String aName;
1298*cdf0e10cSrcweir         String aActiveLayer = mpDrawView->GetActiveLayer();
1299*cdf0e10cSrcweir         String aBackgroundLayer( SdResId(STR_LAYER_BCKGRND) );
1300*cdf0e10cSrcweir         String aBackgroundObjLayer( SdResId(STR_LAYER_BCKGRNDOBJ) );
1301*cdf0e10cSrcweir         String aLayoutLayer( SdResId(STR_LAYER_LAYOUT) );
1302*cdf0e10cSrcweir         String aControlsLayer( SdResId(STR_LAYER_CONTROLS) );
1303*cdf0e10cSrcweir         String aMeasureLinesLayer( SdResId(STR_LAYER_MEASURELINES) );
1304*cdf0e10cSrcweir         sal_uInt16 nActiveLayer = SDRLAYER_NOTFOUND;
1305*cdf0e10cSrcweir         SdrLayerAdmin& rLayerAdmin = GetDoc()->GetLayerAdmin();
1306*cdf0e10cSrcweir         sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount();
1307*cdf0e10cSrcweir 
1308*cdf0e10cSrcweir         for ( sal_uInt16 nLayer = 0; nLayer < nLayerCnt; nLayer++ )
1309*cdf0e10cSrcweir         {
1310*cdf0e10cSrcweir             aName = rLayerAdmin.GetLayer(nLayer)->GetName();
1311*cdf0e10cSrcweir 
1312*cdf0e10cSrcweir             if ( aName == aActiveLayer )
1313*cdf0e10cSrcweir             {
1314*cdf0e10cSrcweir                 nActiveLayer = nLayer;
1315*cdf0e10cSrcweir             }
1316*cdf0e10cSrcweir 
1317*cdf0e10cSrcweir             if ( aName != aBackgroundLayer )
1318*cdf0e10cSrcweir             {
1319*cdf0e10cSrcweir                 if (meEditMode == EM_MASTERPAGE)
1320*cdf0e10cSrcweir                 {
1321*cdf0e10cSrcweir                     // Layer der Page nicht auf MasterPage anzeigen
1322*cdf0e10cSrcweir                     if (aName != aLayoutLayer   &&
1323*cdf0e10cSrcweir                         aName != aControlsLayer &&
1324*cdf0e10cSrcweir                         aName != aMeasureLinesLayer)
1325*cdf0e10cSrcweir                     {
1326*cdf0e10cSrcweir                         pLayerBar->InsertPage(nLayer+1, aName);
1327*cdf0e10cSrcweir 
1328*cdf0e10cSrcweir                         TabBarPageBits nBits = 0;
1329*cdf0e10cSrcweir                         SdrPageView* pPV = mpDrawView->GetSdrPageView();
1330*cdf0e10cSrcweir 
1331*cdf0e10cSrcweir                         if (pPV && !pPV->IsLayerVisible(aName))
1332*cdf0e10cSrcweir                         {
1333*cdf0e10cSrcweir                             // Unsichtbare Layer werden anders dargestellt
1334*cdf0e10cSrcweir                             nBits = TPB_SPECIAL;
1335*cdf0e10cSrcweir                         }
1336*cdf0e10cSrcweir 
1337*cdf0e10cSrcweir                         pLayerBar->SetPageBits(nLayer+1, nBits);
1338*cdf0e10cSrcweir                     }
1339*cdf0e10cSrcweir                 }
1340*cdf0e10cSrcweir                 else
1341*cdf0e10cSrcweir                 {
1342*cdf0e10cSrcweir                     // Layer der MasterPage nicht auf Page anzeigen
1343*cdf0e10cSrcweir                     if ( aName != aBackgroundObjLayer )
1344*cdf0e10cSrcweir                     {
1345*cdf0e10cSrcweir                         pLayerBar->InsertPage(nLayer+1, aName);
1346*cdf0e10cSrcweir 
1347*cdf0e10cSrcweir                         TabBarPageBits nBits = 0;
1348*cdf0e10cSrcweir 
1349*cdf0e10cSrcweir                         if (!mpDrawView->GetSdrPageView()->IsLayerVisible(aName))
1350*cdf0e10cSrcweir                         {
1351*cdf0e10cSrcweir                             // Unsichtbare Layer werden anders dargestellt
1352*cdf0e10cSrcweir                             nBits = TPB_SPECIAL;
1353*cdf0e10cSrcweir                         }
1354*cdf0e10cSrcweir 
1355*cdf0e10cSrcweir                         pLayerBar->SetPageBits(nLayer+1, nBits);
1356*cdf0e10cSrcweir                     }
1357*cdf0e10cSrcweir                 }
1358*cdf0e10cSrcweir             }
1359*cdf0e10cSrcweir         }
1360*cdf0e10cSrcweir 
1361*cdf0e10cSrcweir         if ( nActiveLayer == SDRLAYER_NOTFOUND )
1362*cdf0e10cSrcweir         {
1363*cdf0e10cSrcweir             if( nOldLayerCnt == pLayerBar->GetPageCount() )
1364*cdf0e10cSrcweir             {
1365*cdf0e10cSrcweir                 nActiveLayer = nOldLayerId - 1;
1366*cdf0e10cSrcweir             }
1367*cdf0e10cSrcweir             else
1368*cdf0e10cSrcweir             {
1369*cdf0e10cSrcweir                 nActiveLayer = ( meEditMode == EM_MASTERPAGE ) ? 2 : 0;
1370*cdf0e10cSrcweir             }
1371*cdf0e10cSrcweir 
1372*cdf0e10cSrcweir             mpDrawView->SetActiveLayer( pLayerBar->GetPageText(nActiveLayer + 1) );
1373*cdf0e10cSrcweir         }
1374*cdf0e10cSrcweir 
1375*cdf0e10cSrcweir         pLayerBar->SetCurPageId(nActiveLayer + 1);
1376*cdf0e10cSrcweir         GetViewFrame()->GetBindings().Invalidate( SID_MODIFYLAYER );
1377*cdf0e10cSrcweir         GetViewFrame()->GetBindings().Invalidate( SID_DELETE_LAYER );
1378*cdf0e10cSrcweir     }
1379*cdf0e10cSrcweir }
1380*cdf0e10cSrcweir 
1381*cdf0e10cSrcweir /*************************************************************************
1382*cdf0e10cSrcweir |*
1383*cdf0e10cSrcweir |* Verzoegertes Close ausfuehren
1384*cdf0e10cSrcweir |*
1385*cdf0e10cSrcweir \************************************************************************/
1386*cdf0e10cSrcweir 
1387*cdf0e10cSrcweir IMPL_LINK( DrawViewShell, CloseHdl, Timer*, pTimer )
1388*cdf0e10cSrcweir {
1389*cdf0e10cSrcweir 	pTimer->Stop();
1390*cdf0e10cSrcweir 	GetViewFrame()->GetBindings().Execute( SID_CLOSEWIN );
1391*cdf0e10cSrcweir 	return 0L;
1392*cdf0e10cSrcweir }
1393*cdf0e10cSrcweir 
1394*cdf0e10cSrcweir /*************************************************************************
1395*cdf0e10cSrcweir |*
1396*cdf0e10cSrcweir |* AcceptDrop
1397*cdf0e10cSrcweir |*
1398*cdf0e10cSrcweir \************************************************************************/
1399*cdf0e10cSrcweir 
1400*cdf0e10cSrcweir sal_Int8 DrawViewShell::AcceptDrop (
1401*cdf0e10cSrcweir     const AcceptDropEvent& rEvt,
1402*cdf0e10cSrcweir     DropTargetHelper& rTargetHelper,
1403*cdf0e10cSrcweir     ::sd::Window* pTargetWindow,
1404*cdf0e10cSrcweir     sal_uInt16 nPage,
1405*cdf0e10cSrcweir     sal_uInt16 nLayer )
1406*cdf0e10cSrcweir {
1407*cdf0e10cSrcweir 	if( nPage != SDRPAGE_NOTFOUND )
1408*cdf0e10cSrcweir 		nPage = GetDoc()->GetSdPage( nPage, mePageKind )->GetPageNum();
1409*cdf0e10cSrcweir 
1410*cdf0e10cSrcweir 	if( SlideShow::IsRunning( GetViewShellBase() ) )
1411*cdf0e10cSrcweir 		return DND_ACTION_NONE;
1412*cdf0e10cSrcweir 
1413*cdf0e10cSrcweir 	return mpDrawView->AcceptDrop( rEvt, rTargetHelper, pTargetWindow, nPage, nLayer );
1414*cdf0e10cSrcweir }
1415*cdf0e10cSrcweir 
1416*cdf0e10cSrcweir /*************************************************************************
1417*cdf0e10cSrcweir |*
1418*cdf0e10cSrcweir |* ExecuteDrop
1419*cdf0e10cSrcweir |*
1420*cdf0e10cSrcweir \************************************************************************/
1421*cdf0e10cSrcweir 
1422*cdf0e10cSrcweir sal_Int8 DrawViewShell::ExecuteDrop (
1423*cdf0e10cSrcweir     const ExecuteDropEvent& rEvt,
1424*cdf0e10cSrcweir     DropTargetHelper& rTargetHelper,
1425*cdf0e10cSrcweir     ::sd::Window* pTargetWindow,
1426*cdf0e10cSrcweir     sal_uInt16 nPage,
1427*cdf0e10cSrcweir     sal_uInt16 nLayer)
1428*cdf0e10cSrcweir {
1429*cdf0e10cSrcweir 	if( nPage != SDRPAGE_NOTFOUND )
1430*cdf0e10cSrcweir 		nPage = GetDoc()->GetSdPage( nPage, mePageKind )->GetPageNum();
1431*cdf0e10cSrcweir 
1432*cdf0e10cSrcweir 	if( SlideShow::IsRunning( GetViewShellBase() ) )
1433*cdf0e10cSrcweir 		return DND_ACTION_NONE;
1434*cdf0e10cSrcweir 
1435*cdf0e10cSrcweir     Broadcast(ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_START));
1436*cdf0e10cSrcweir     sal_Int8 nResult (mpDrawView->ExecuteDrop( rEvt, rTargetHelper, pTargetWindow, nPage, nLayer ));
1437*cdf0e10cSrcweir     Broadcast(ViewShellHint(ViewShellHint::HINT_COMPLEX_MODEL_CHANGE_END));
1438*cdf0e10cSrcweir 
1439*cdf0e10cSrcweir     return nResult;
1440*cdf0e10cSrcweir }
1441*cdf0e10cSrcweir 
1442*cdf0e10cSrcweir } // end of namespace sd
1443*cdf0e10cSrcweir 
1444*cdf0e10cSrcweir #ifdef _MSC_VER
1445*cdf0e10cSrcweir #if (_MSC_VER < 1400)
1446*cdf0e10cSrcweir #pragma optimize ( "", on )
1447*cdf0e10cSrcweir #endif
1448*cdf0e10cSrcweir #endif
1449*cdf0e10cSrcweir 
1450