LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/view - viewshe2.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 2 484 0.4 %
Date: 2012-12-27 Functions: 2 43 4.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
      21             : #include <com/sun/star/beans/XPropertySet.hpp>
      22             : #include <com/sun/star/chart2/XChartDocument.hpp>
      23             : #include <com/sun/star/drawing/FillStyle.hpp>
      24             : #include <com/sun/star/drawing/LineStyle.hpp>
      25             : 
      26             : #include "ViewShell.hxx"
      27             : #include "ViewShellHint.hxx"
      28             : 
      29             : #include "ViewShellImplementation.hxx"
      30             : #include "FactoryIds.hxx"
      31             : 
      32             : #include <svx/svxids.hrc>
      33             : #include <vcl/scrbar.hxx>
      34             : #include <svx/svdpagv.hxx>
      35             : #include <sfx2/dispatch.hxx>
      36             : #include <sfx2/app.hxx>
      37             : #include <svx/ruler.hxx>
      38             : #include <editeng/outliner.hxx>
      39             : #include <svtools/ehdl.hxx>
      40             : #include <svx/svdoole2.hxx>
      41             : #include <svtools/sfxecode.hxx>
      42             : #include <svx/fmshell.hxx>
      43             : #include <rtl/ustrbuf.hxx>
      44             : #include <unotools/moduleoptions.hxx>
      45             : #include <svx/dialogs.hrc>
      46             : #include <sot/clsids.hxx>
      47             : 
      48             : #include "strings.hrc"
      49             : #include "app.hrc"
      50             : #include "unokywds.hxx"
      51             : 
      52             : #include "sdundogr.hxx"
      53             : #include "FrameView.hxx"
      54             : #include "undopage.hxx"
      55             : #include "sdresid.hxx"
      56             : #include "drawdoc.hxx"
      57             : #include "View.hxx"
      58             : #include "fupoor.hxx"
      59             : #include "Client.hxx"
      60             : #include "DrawDocShell.hxx"
      61             : #include "fusearch.hxx"
      62             : #include "slideshow.hxx"
      63             : #include "sdpage.hxx"
      64             : #include "DrawViewShell.hxx"
      65             : #include "ViewShellBase.hxx"
      66             : 
      67             : #include "Window.hxx"
      68             : 
      69             : #include <sfx2/viewfrm.hxx>
      70             : #include <svtools/soerr.hxx>
      71             : #include <toolkit/helper/vclunohelper.hxx>
      72             : 
      73             : #ifdef _MSC_VER
      74             : #pragma optimize ( "", off )
      75             : #endif
      76             : 
      77             : using namespace com::sun::star;
      78             : 
      79             : #ifndef DISABLE_DYNLOADING // otherwise use the one in sw...
      80           3 : const String aEmptyStr;
      81             : #endif
      82             : 
      83             : namespace sd {
      84             : 
      85             : /*************************************************************************
      86             : |*
      87             : |* Scrollbar-Update: Thumbpos und VisibleSize anpassen
      88             : |*
      89             : \************************************************************************/
      90             : 
      91           0 : void ViewShell::UpdateScrollBars()
      92             : {
      93           0 :     if (mpHorizontalScrollBar.get() != NULL)
      94             :     {
      95           0 :         long nW = (long)(mpContentWindow->GetVisibleWidth() * 32000);
      96           0 :         long nX = (long)(mpContentWindow->GetVisibleX() * 32000);
      97           0 :         mpHorizontalScrollBar->SetVisibleSize(nW);
      98           0 :         mpHorizontalScrollBar->SetThumbPos(nX);
      99           0 :         nW = 32000 - nW;
     100           0 :         long nLine = (long) (mpContentWindow->GetScrlLineWidth() * nW);
     101           0 :         long nPage = (long) (mpContentWindow->GetScrlPageWidth() * nW);
     102           0 :         mpHorizontalScrollBar->SetLineSize(nLine);
     103           0 :         mpHorizontalScrollBar->SetPageSize(nPage);
     104             :     }
     105             : 
     106           0 :     if (mpVerticalScrollBar.get() != NULL)
     107             :     {
     108           0 :         long nH = (long)(mpContentWindow->GetVisibleHeight() * 32000);
     109           0 :         long nY = (long)(mpContentWindow->GetVisibleY() * 32000);
     110             : 
     111           0 :         if(IsPageFlipMode()) // ie in zoom mode where no panning
     112             :         {
     113           0 :             SdPage* pPage = static_cast<DrawViewShell*>(this)->GetActualPage();
     114           0 :             sal_uInt16 nCurPage = (pPage->GetPageNum() - 1) / 2;
     115           0 :             sal_uInt16 nTotalPages = GetDoc()->GetSdPageCount(pPage->GetPageKind());
     116           0 :             mpVerticalScrollBar->SetRange(Range(0,256*nTotalPages));
     117           0 :             mpVerticalScrollBar->SetVisibleSize(256);
     118           0 :             mpVerticalScrollBar->SetThumbPos(256*nCurPage);
     119           0 :             mpVerticalScrollBar->SetLineSize(256);
     120           0 :             mpVerticalScrollBar->SetPageSize(256);
     121             :         }
     122             :         else
     123             :         {
     124           0 :             mpVerticalScrollBar->SetRange(Range(0,32000));
     125           0 :             mpVerticalScrollBar->SetVisibleSize(nH);
     126           0 :             mpVerticalScrollBar->SetThumbPos(nY);
     127           0 :             nH = 32000 - nH;
     128           0 :             long nLine = (long) (mpContentWindow->GetScrlLineHeight() * nH);
     129           0 :             long nPage = (long) (mpContentWindow->GetScrlPageHeight() * nH);
     130           0 :             mpVerticalScrollBar->SetLineSize(nLine);
     131           0 :             mpVerticalScrollBar->SetPageSize(nPage);
     132             :         }
     133             :     }
     134             : 
     135           0 :     if (mbHasRulers)
     136             :     {
     137           0 :         UpdateHRuler();
     138           0 :         UpdateVRuler();
     139             :     }
     140             : 
     141           0 : }
     142             : /*************************************************************************
     143             : |*
     144             : |* Handling fuer horizontale Scrollbars
     145             : |*
     146             : \************************************************************************/
     147             : 
     148           0 : IMPL_LINK_INLINE_START(ViewShell, HScrollHdl, ScrollBar *, pHScroll )
     149             : {
     150           0 :     return VirtHScrollHdl(pHScroll);
     151             : }
     152           0 : IMPL_LINK_INLINE_END(ViewShell, HScrollHdl, ScrollBar *, pHScroll )
     153             : 
     154             : /*************************************************************************
     155             : |*
     156             : |* virtueller Scroll-Handler fuer horizontale Scrollbars
     157             : |*
     158             : \************************************************************************/
     159             : 
     160           0 : long ViewShell::VirtHScrollHdl(ScrollBar* pHScroll)
     161             : {
     162           0 :     long nDelta = pHScroll->GetDelta();
     163             : 
     164           0 :     if (nDelta != 0)
     165             :     {
     166           0 :         double fX = (double) pHScroll->GetThumbPos() / pHScroll->GetRange().Len();
     167             : 
     168             :         // alle Fenster der Spalte scrollen
     169           0 :         ::sd::View* pView = GetView();
     170           0 :         OutlinerView* pOLV = NULL;
     171             : 
     172           0 :         if (pView)
     173           0 :             pOLV = pView->GetTextEditOutlinerView();
     174             : 
     175           0 :         if (pOLV)
     176           0 :             pOLV->HideCursor();
     177             : 
     178           0 :         mpContentWindow->SetVisibleXY(fX, -1);
     179             : 
     180           0 :         Rectangle aVisArea = GetDocSh()->GetVisArea(ASPECT_CONTENT);
     181           0 :         Point aVisAreaPos = GetActiveWindow()->PixelToLogic( Point(0,0) );
     182           0 :         aVisArea.SetPos(aVisAreaPos);
     183           0 :         GetDocSh()->SetVisArea(aVisArea);
     184             : 
     185           0 :         Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     186           0 :         Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     187           0 :         VisAreaChanged(aVisAreaWin);
     188             : 
     189           0 :         if (pView)
     190             :         {
     191           0 :             pView->VisAreaChanged(GetActiveWindow());
     192             :         }
     193             : 
     194           0 :         if (pOLV)
     195           0 :             pOLV->ShowCursor();
     196             : 
     197           0 :         if (mbHasRulers)
     198           0 :             UpdateHRuler();
     199             : 
     200             :     }
     201             : 
     202           0 :     return 0;
     203             : }
     204             : 
     205             : /*************************************************************************
     206             : |*
     207             : |* Handling fuer vertikale Scrollbars
     208             : |*
     209             : \************************************************************************/
     210             : 
     211           0 : IMPL_LINK_INLINE_START(ViewShell, VScrollHdl, ScrollBar *, pVScroll )
     212             : {
     213           0 :     return VirtVScrollHdl(pVScroll);
     214             : }
     215           0 : IMPL_LINK_INLINE_END(ViewShell, VScrollHdl, ScrollBar *, pVScroll )
     216             : 
     217             : /*************************************************************************
     218             : |*
     219             : |* Handling fuer vertikale Scrollbars
     220             : |*
     221             : \************************************************************************/
     222             : 
     223           0 : long ViewShell::VirtVScrollHdl(ScrollBar* pVScroll)
     224             : {
     225           0 :     if(IsPageFlipMode())
     226             :     {
     227           0 :         SdPage* pPage = static_cast<DrawViewShell*>(this)->GetActualPage();
     228           0 :         sal_uInt16 nCurPage = (pPage->GetPageNum() - 1) >> 1;
     229           0 :         sal_uInt16 nNewPage = (sal_uInt16)pVScroll->GetThumbPos()/256;
     230           0 :         if( nCurPage != nNewPage )
     231           0 :             static_cast<DrawViewShell*>(this)->SwitchPage(nNewPage);
     232             :     }
     233             :     else //panning mode
     234             :     {
     235           0 :         double fY = (double) pVScroll->GetThumbPos() / pVScroll->GetRange().Len();
     236             : 
     237           0 :         ::sd::View* pView = GetView();
     238           0 :         OutlinerView* pOLV = NULL;
     239             : 
     240           0 :         if (pView)
     241           0 :             pOLV = pView->GetTextEditOutlinerView();
     242             : 
     243           0 :         if (pOLV)
     244           0 :             pOLV->HideCursor();
     245             : 
     246           0 :         mpContentWindow->SetVisibleXY(-1, fY);
     247             : 
     248           0 :         Rectangle aVisArea = GetDocSh()->GetVisArea(ASPECT_CONTENT);
     249           0 :         Point aVisAreaPos = GetActiveWindow()->PixelToLogic( Point(0,0) );
     250           0 :         aVisArea.SetPos(aVisAreaPos);
     251           0 :         GetDocSh()->SetVisArea(aVisArea);
     252             : 
     253           0 :         Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     254           0 :         Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     255           0 :         VisAreaChanged(aVisAreaWin);
     256             : 
     257           0 :         if (pView)
     258             :         {
     259           0 :             pView->VisAreaChanged(GetActiveWindow());
     260             :         }
     261             : 
     262           0 :         if (pOLV)
     263           0 :             pOLV->ShowCursor();
     264             : 
     265           0 :         if (mbHasRulers)
     266           0 :             UpdateVRuler();
     267             : 
     268             :     }
     269             : 
     270           0 :     return 0;
     271             : }
     272             : 
     273           0 : SvxRuler* ViewShell::CreateHRuler(::sd::Window* , sal_Bool )
     274             : {
     275           0 :     return NULL;
     276             : }
     277             : 
     278           0 : SvxRuler* ViewShell::CreateVRuler(::sd::Window* )
     279             : {
     280           0 :     return NULL;
     281             : }
     282             : 
     283           0 : void ViewShell::UpdateHRuler()
     284             : {
     285           0 : }
     286             : 
     287           0 : void ViewShell::UpdateVRuler()
     288             : {
     289           0 : }
     290             : 
     291           0 : long ViewShell::GetHCtrlWidth()
     292             : {
     293           0 :     return 0;
     294             : }
     295             : 
     296             : /*************************************************************************
     297             : |*
     298             : |* Eine bestimmte Anzahl von Zeilen scrollen (wird beim automatischen
     299             : |* Scrollen (Zeichen/Draggen) verwendet)
     300             : |*
     301             : \************************************************************************/
     302             : 
     303           0 : void ViewShell::ScrollLines(long nLinesX, long nLinesY)
     304             : {
     305           0 :     if ( nLinesX )
     306             :     {
     307           0 :         nLinesX *= mpHorizontalScrollBar->GetLineSize();
     308             :     }
     309           0 :     if ( nLinesY )
     310             :     {
     311           0 :         nLinesY *= mpVerticalScrollBar->GetLineSize();
     312             :     }
     313             : 
     314           0 :     Scroll(nLinesX, nLinesY);
     315           0 : }
     316             : 
     317             : /*************************************************************************
     318             : |*
     319             : |* Window um nScrollX, nScrollY scrollen
     320             : |*
     321             : \************************************************************************/
     322             : 
     323           0 : void ViewShell::Scroll(long nScrollX, long nScrollY)
     324             : {
     325           0 :     if (nScrollX)
     326             :     {
     327           0 :         long nNewThumb = mpHorizontalScrollBar->GetThumbPos() + nScrollX;
     328           0 :         mpHorizontalScrollBar->SetThumbPos(nNewThumb);
     329             :     }
     330           0 :     if (nScrollY)
     331             :     {
     332           0 :         long nNewThumb = mpVerticalScrollBar->GetThumbPos() + nScrollY;
     333           0 :         mpVerticalScrollBar->SetThumbPos(nNewThumb);
     334             :     }
     335           0 :     double  fX = (double) mpHorizontalScrollBar->GetThumbPos() /
     336           0 :                             mpHorizontalScrollBar->GetRange().Len();
     337           0 :     double  fY = (double) mpVerticalScrollBar->GetThumbPos() /
     338           0 :                             mpVerticalScrollBar->GetRange().Len();
     339             : 
     340           0 :     GetActiveWindow()->SetVisibleXY(fX, fY);
     341             : 
     342           0 :     Rectangle aVisArea = GetDocSh()->GetVisArea(ASPECT_CONTENT);
     343           0 :     Point aVisAreaPos = GetActiveWindow()->PixelToLogic( Point(0,0) );
     344           0 :     aVisArea.SetPos(aVisAreaPos);
     345           0 :     GetDocSh()->SetVisArea(aVisArea);
     346             : 
     347           0 :     Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     348           0 :     Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     349           0 :     VisAreaChanged(aVisAreaWin);
     350             : 
     351           0 :     ::sd::View* pView = GetView();
     352           0 :     if (pView)
     353             :     {
     354           0 :         pView->VisAreaChanged(GetActiveWindow());
     355             :     }
     356             : 
     357           0 :     if (mbHasRulers)
     358             :     {
     359           0 :         UpdateHRuler();
     360           0 :         UpdateVRuler();
     361             :     }
     362           0 : }
     363             : 
     364             : /*************************************************************************
     365             : |*
     366             : |* Den Zoomfaktor fuer alle Split-Windows setzen
     367             : |*
     368             : \************************************************************************/
     369             : 
     370           0 : void ViewShell::SetZoom(long nZoom)
     371             : {
     372           0 :     Fraction aUIScale(nZoom, 100);
     373           0 :     aUIScale *= GetDoc()->GetUIScale();
     374             : 
     375           0 :     if (mpHorizontalRuler.get() != NULL)
     376           0 :         mpHorizontalRuler->SetZoom(aUIScale);
     377             : 
     378           0 :     if (mpVerticalRuler.get() != NULL)
     379           0 :         mpVerticalRuler->SetZoom(aUIScale);
     380             : 
     381           0 :     if (mpContentWindow.get() != NULL)
     382             :     {
     383           0 :         mpContentWindow->SetZoomIntegral(nZoom);
     384             : 
     385             :         // #i74769# Here is a 2nd way (besides Window::Scroll) to set the visible prt
     386             :         // of the window. It needs - like Scroll(SCROLL_CHILDREN) does - also to move
     387             :         // the child windows. I am trying INVALIDATE_CHILDREN here which makes things better,
     388             :         // but does not solve the problem completely. Neet to ask PL.
     389           0 :         mpContentWindow->Invalidate(INVALIDATE_CHILDREN);
     390             :     }
     391             : 
     392           0 :     Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     393           0 :     Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     394           0 :     VisAreaChanged(aVisAreaWin);
     395             : 
     396           0 :     ::sd::View* pView = GetView();
     397           0 :     if (pView)
     398             :     {
     399           0 :         pView->VisAreaChanged(GetActiveWindow());
     400             :     }
     401             : 
     402           0 :     UpdateScrollBars();
     403           0 : }
     404             : 
     405             : /*************************************************************************
     406             : |*
     407             : |* Zoomrechteck fuer aktives Fenster einstellen und alle Split-Windows
     408             : |* auf den gleichen Zoomfaktor setzen
     409             : |*
     410             : \************************************************************************/
     411             : 
     412           0 : void ViewShell::SetZoomRect(const Rectangle& rZoomRect)
     413             : {
     414           0 :     long nZoom = GetActiveWindow()->SetZoomRect(rZoomRect);
     415           0 :     Fraction aUIScale(nZoom, 100);
     416           0 :     aUIScale *= GetDoc()->GetUIScale();
     417             : 
     418           0 :     Point aPos = GetActiveWindow()->GetWinViewPos();
     419             : 
     420           0 :     if (mpHorizontalRuler.get() != NULL)
     421           0 :         mpHorizontalRuler->SetZoom(aUIScale);
     422             : 
     423           0 :     if (mpVerticalRuler.get() != NULL)
     424           0 :         mpVerticalRuler->SetZoom(aUIScale);
     425             : 
     426           0 :     if (mpContentWindow.get() != NULL)
     427             :     {
     428           0 :         Point aNewPos = mpContentWindow->GetWinViewPos();
     429           0 :         aNewPos.X() = aPos.X();
     430           0 :         aNewPos.Y() = aPos.Y();
     431           0 :         mpContentWindow->SetZoomIntegral(nZoom);
     432           0 :         mpContentWindow->SetWinViewPos(aNewPos);
     433           0 :         mpContentWindow->UpdateMapOrigin();
     434             : 
     435             :         // #i74769# see above
     436           0 :         mpContentWindow->Invalidate(INVALIDATE_CHILDREN);
     437             :     }
     438             : 
     439           0 :     Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     440           0 :     Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     441           0 :     VisAreaChanged(aVisAreaWin);
     442             : 
     443           0 :     ::sd::View* pView = GetView();
     444           0 :     if (pView)
     445             :     {
     446           0 :         pView->VisAreaChanged(GetActiveWindow());
     447             :     }
     448             : 
     449           0 :     UpdateScrollBars();
     450           0 : }
     451             : 
     452             : /*************************************************************************
     453             : |*
     454             : |* Abbildungsparameter fuer alle Split-Windows initialisieren
     455             : |*
     456             : \************************************************************************/
     457             : 
     458           0 : void ViewShell::InitWindows(const Point& rViewOrigin, const Size& rViewSize,
     459             :                               const Point& rWinPos, sal_Bool bUpdate)
     460             : {
     461           0 :     if (mpContentWindow.get() != NULL)
     462             :     {
     463           0 :         mpContentWindow->SetViewOrigin(rViewOrigin);
     464           0 :         mpContentWindow->SetViewSize(rViewSize);
     465           0 :         mpContentWindow->SetWinViewPos(rWinPos);
     466             : 
     467           0 :         if ( bUpdate )
     468             :         {
     469           0 :             mpContentWindow->UpdateMapOrigin();
     470           0 :             mpContentWindow->Invalidate();
     471             :         }
     472             :     }
     473             : 
     474           0 :     Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
     475           0 :     Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
     476           0 :     VisAreaChanged(aVisAreaWin);
     477             : 
     478           0 :     ::sd::View* pView = GetView();
     479           0 :     if (pView)
     480             :     {
     481           0 :         pView->VisAreaChanged(GetActiveWindow());
     482             :     }
     483           0 : }
     484             : 
     485             : /*************************************************************************
     486             : |*
     487             : |* Alle Split-Windows unter dem uebergebenen Rechteck invalidieren
     488             : |*
     489             : \************************************************************************/
     490             : 
     491           0 : void ViewShell::InvalidateWindows()
     492             : {
     493           0 :     if (mpContentWindow.get() != NULL)
     494           0 :         mpContentWindow->Invalidate();
     495           0 : }
     496             : 
     497             : 
     498             : /*************************************************************************
     499             : |*
     500             : |* Auf allen Split-Windows ein Markierungsrechteck mit dem
     501             : |* uebergebenen Pen zeichnen
     502             : |*
     503             : \************************************************************************/
     504             : 
     505           0 : void ViewShell::DrawMarkRect(const Rectangle& rRect) const
     506             : {
     507           0 :     if (mpContentWindow.get() != NULL)
     508             :     {
     509           0 :         mpContentWindow->InvertTracking(rRect, SHOWTRACK_OBJECT | SHOWTRACK_WINDOW);
     510             :     }
     511           0 : }
     512             : 
     513             : /*************************************************************************
     514             : |*
     515             : |* Groesse und Raender aller Seiten setzen
     516             : |*
     517             : \************************************************************************/
     518             : 
     519           0 : void ViewShell::SetPageSizeAndBorder(PageKind ePageKind, const Size& rNewSize,
     520             :                                        long nLeft, long nRight,
     521             :                                        long nUpper, long nLower, sal_Bool bScaleAll,
     522             :                                        Orientation eOrientation, sal_uInt16 nPaperBin,
     523             :                                        sal_Bool bBackgroundFullSize)
     524             : {
     525           0 :     SdPage* pPage = 0;
     526           0 :     SdUndoGroup* pUndoGroup = NULL;
     527           0 :     pUndoGroup = new SdUndoGroup(GetDoc());
     528           0 :     String aString(SdResId(STR_UNDO_CHANGE_PAGEFORMAT));
     529           0 :     pUndoGroup->SetComment(aString);
     530           0 :     SfxViewShell* pViewShell = GetViewShell();
     531             :     OSL_ASSERT (pViewShell!=NULL);
     532             : 
     533           0 :     sal_uInt16 i, nPageCnt = GetDoc()->GetMasterSdPageCount(ePageKind);
     534             : 
     535           0 :     Broadcast (ViewShellHint(ViewShellHint::HINT_PAGE_RESIZE_START));
     536             : 
     537           0 :     for (i = 0; i < nPageCnt; i++)
     538             :     {
     539             :         /**********************************************************************
     540             :         * Erst alle MasterPages bearbeiten
     541             :         **********************************************************************/
     542           0 :         pPage = GetDoc()->GetMasterSdPage(i, ePageKind);
     543             : 
     544             :         SdUndoAction* pUndo = new SdPageFormatUndoAction(GetDoc(), pPage,
     545           0 :                             pPage->GetSize(),
     546           0 :                             pPage->GetLftBorder(), pPage->GetRgtBorder(),
     547           0 :                             pPage->GetUppBorder(), pPage->GetLwrBorder(),
     548           0 :                             pPage->GetOrientation(),
     549           0 :                             pPage->GetPaperBin(),
     550           0 :                             pPage->IsBackgroundFullSize(),
     551             :                             rNewSize,
     552             :                             nLeft, nRight,
     553             :                             nUpper, nLower,
     554             :                             bScaleAll,
     555             :                             eOrientation,
     556             :                             nPaperBin,
     557           0 :                             bBackgroundFullSize);
     558           0 :         pUndoGroup->AddAction(pUndo);
     559             : 
     560           0 :         if (rNewSize.Width() > 0 ||
     561             :             nLeft  >= 0 || nRight >= 0 || nUpper >= 0 || nLower >= 0)
     562             :         {
     563           0 :             Rectangle aNewBorderRect(nLeft, nUpper, nRight, nLower);
     564           0 :             pPage->ScaleObjects(rNewSize, aNewBorderRect, bScaleAll);
     565             : 
     566           0 :             if (rNewSize.Width() > 0)
     567           0 :                 pPage->SetSize(rNewSize);
     568             :         }
     569             : 
     570           0 :         if( nLeft  >= 0 || nRight >= 0 || nUpper >= 0 || nLower >= 0 )
     571             :         {
     572           0 :             pPage->SetBorder(nLeft, nUpper, nRight, nLower);
     573             :         }
     574             : 
     575           0 :         pPage->SetOrientation(eOrientation);
     576           0 :         pPage->SetPaperBin( nPaperBin );
     577           0 :         pPage->SetBackgroundFullSize( bBackgroundFullSize );
     578             : 
     579           0 :         if ( ePageKind == PK_STANDARD )
     580           0 :             GetDoc()->GetMasterSdPage(i, PK_NOTES)->CreateTitleAndLayout();
     581             : 
     582           0 :         pPage->CreateTitleAndLayout();
     583             :     }
     584             : 
     585           0 :     nPageCnt = GetDoc()->GetSdPageCount(ePageKind);
     586             : 
     587           0 :     for (i = 0; i < nPageCnt; i++)
     588             :     {
     589             :         /**********************************************************************
     590             :         * Danach alle Pages bearbeiten
     591             :         **********************************************************************/
     592           0 :         pPage = GetDoc()->GetSdPage(i, ePageKind);
     593             : 
     594             :         SdUndoAction* pUndo = new SdPageFormatUndoAction(GetDoc(), pPage,
     595           0 :                                 pPage->GetSize(),
     596           0 :                                 pPage->GetLftBorder(), pPage->GetRgtBorder(),
     597           0 :                                 pPage->GetUppBorder(), pPage->GetLwrBorder(),
     598           0 :                                 pPage->GetOrientation(),
     599           0 :                                 pPage->GetPaperBin(),
     600           0 :                                 pPage->IsBackgroundFullSize(),
     601             :                                 rNewSize,
     602             :                                 nLeft, nRight,
     603             :                                 nUpper, nLower,
     604             :                                 bScaleAll,
     605             :                                 eOrientation,
     606             :                                 nPaperBin,
     607           0 :                                 bBackgroundFullSize);
     608           0 :         pUndoGroup->AddAction(pUndo);
     609             : 
     610           0 :         if (rNewSize.Width() > 0 ||
     611             :             nLeft  >= 0 || nRight >= 0 || nUpper >= 0 || nLower >= 0)
     612             :         {
     613           0 :             Rectangle aNewBorderRect(nLeft, nUpper, nRight, nLower);
     614           0 :             pPage->ScaleObjects(rNewSize, aNewBorderRect, bScaleAll);
     615             : 
     616           0 :             if (rNewSize.Width() > 0)
     617           0 :                 pPage->SetSize(rNewSize);
     618             :         }
     619             : 
     620           0 :         if( nLeft  >= 0 || nRight >= 0 || nUpper >= 0 || nLower >= 0 )
     621             :         {
     622           0 :             pPage->SetBorder(nLeft, nUpper, nRight, nLower);
     623             :         }
     624             : 
     625           0 :         pPage->SetOrientation(eOrientation);
     626           0 :         pPage->SetPaperBin( nPaperBin );
     627           0 :         pPage->SetBackgroundFullSize( bBackgroundFullSize );
     628             : 
     629           0 :         if ( ePageKind == PK_STANDARD )
     630             :         {
     631           0 :             SdPage* pNotesPage = GetDoc()->GetSdPage(i, PK_NOTES);
     632           0 :             pNotesPage->SetAutoLayout( pNotesPage->GetAutoLayout() );
     633             :         }
     634             : 
     635           0 :         pPage->SetAutoLayout( pPage->GetAutoLayout() );
     636             :     }
     637             : 
     638             :     // Handoutseite an neues Format der Standardseiten anpassen
     639           0 :     if( (ePageKind == PK_STANDARD) || (ePageKind == PK_HANDOUT) )
     640           0 :         GetDoc()->GetSdPage(0, PK_HANDOUT)->CreateTitleAndLayout(sal_True);
     641             : 
     642             :     // Undo Gruppe dem Undo Manager uebergeben
     643           0 :     pViewShell->GetViewFrame()->GetObjectShell()
     644           0 :         ->GetUndoManager()->AddUndoAction(pUndoGroup);
     645             : 
     646           0 :     long nWidth = pPage->GetSize().Width();
     647           0 :     long nHeight = pPage->GetSize().Height();
     648             : 
     649           0 :     Point aPageOrg = Point(nWidth, nHeight / 2);
     650           0 :     Size aViewSize = Size(nWidth * 3, nHeight * 2);
     651             : 
     652           0 :     InitWindows(aPageOrg, aViewSize, Point(-1, -1), sal_True);
     653             : 
     654           0 :     Point aVisAreaPos;
     655             : 
     656           0 :     if ( GetDocSh()->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
     657             :     {
     658           0 :         aVisAreaPos = GetDocSh()->GetVisArea(ASPECT_CONTENT).TopLeft();
     659             :     }
     660             : 
     661           0 :     ::sd::View* pView = GetView();
     662           0 :     if (pView)
     663             :     {
     664           0 :         pView->SetWorkArea(Rectangle(Point() - aVisAreaPos - aPageOrg, aViewSize));
     665             :     }
     666             : 
     667           0 :     UpdateScrollBars();
     668             : 
     669           0 :     Point aNewOrigin(pPage->GetLftBorder(), pPage->GetUppBorder());
     670             : 
     671           0 :     if (pView)
     672             :     {
     673           0 :         pView->GetSdrPageView()->SetPageOrigin(aNewOrigin);
     674             :     }
     675             : 
     676           0 :     pViewShell->GetViewFrame()->GetBindings().Invalidate(SID_RULER_NULL_OFFSET);
     677             : 
     678             :     // auf (neue) Seitengroesse zoomen
     679             :     pViewShell->GetViewFrame()->GetDispatcher()->Execute(SID_SIZE_PAGE,
     680           0 :             SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
     681             : 
     682           0 :     Broadcast (ViewShellHint(ViewShellHint::HINT_PAGE_RESIZE_END));
     683           0 : }
     684             : 
     685             : /*************************************************************************
     686             : |*
     687             : |* Zoom-Faktor fuer InPlace einstellen
     688             : |*
     689             : \************************************************************************/
     690             : 
     691           0 : void ViewShell::SetZoomFactor(const Fraction& rZoomX, const Fraction&)
     692             : {
     693           0 :     long nZoom = (long)((double) rZoomX * 100);
     694           0 :     SetZoom(nZoom);
     695           0 : }
     696             : 
     697             : 
     698             : /*************************************************************************
     699             : |*
     700             : |* Aktives Fenster setzen
     701             : |*
     702             : \************************************************************************/
     703             : 
     704           0 : void ViewShell::SetActiveWindow (::sd::Window* pWin)
     705             : {
     706           0 :     SfxViewShell* pViewShell = GetViewShell();
     707             :     OSL_ASSERT (pViewShell!=NULL);
     708             : 
     709           0 :     if (pViewShell->GetWindow() != pWin)
     710             :     {
     711             :         // #i31551# was wrong, it may have been a problem with the repaint at that time.
     712             :         // For transparent form controls, it is necessary to have that flag set, all apps
     713             :         // do set it. Enabling again.
     714           0 :         if (pWin)
     715             :         {
     716           0 :             pWin->EnableChildTransparentMode();
     717             :         }
     718             :     }
     719             : 
     720           0 :     if (mpActiveWindow != pWin)
     721           0 :         mpActiveWindow = pWin;
     722             : 
     723             :     // The rest of this function is not guarded anymore against calling this
     724             :     // method with an already active window because the functions may still
     725             :     // point to the old window when the new one has already been assigned to
     726             :     // pWindow elsewhere.
     727           0 :     ::sd::View* pView = GetView();
     728           0 :     if (pView)
     729             :     {
     730           0 :         pView->SetActualWin(pWin);
     731             :     }
     732           0 :     if(HasCurrentFunction())
     733             :     {
     734           0 :         GetCurrentFunction()->SetWindow(pWin);
     735             :     }
     736           0 : }
     737             : 
     738             : 
     739             : 
     740             : /*************************************************************************
     741             : |*
     742             : |* RequestHelp event
     743             : |*
     744             : \************************************************************************/
     745             : 
     746           0 : sal_Bool ViewShell::RequestHelp(const HelpEvent& rHEvt, ::sd::Window*)
     747             : {
     748           0 :     sal_Bool bReturn = sal_False;
     749             : 
     750           0 :     if (rHEvt.GetMode())
     751             :     {
     752           0 :         if( GetView() )
     753           0 :             bReturn = GetView()->getSmartTags().RequestHelp(rHEvt);
     754             : 
     755           0 :         if(!bReturn && HasCurrentFunction())
     756             :         {
     757           0 :             bReturn = GetCurrentFunction()->RequestHelp(rHEvt);
     758             :         }
     759             :     }
     760             : 
     761           0 :     return(bReturn);
     762             : }
     763             : 
     764             : 
     765             : 
     766             : 
     767           0 : FrameView* ViewShell::GetFrameView (void)
     768             : {
     769           0 :     return mpFrameView;
     770             : }
     771             : 
     772             : 
     773             : 
     774             : 
     775           0 : void ViewShell::SetFrameView (FrameView* pNewFrameView)
     776             : {
     777           0 :     mpFrameView = pNewFrameView;
     778           0 :     ReadFrameViewData (mpFrameView);
     779           0 : }
     780             : 
     781             : 
     782             : 
     783             : 
     784             : /*************************************************************************
     785             : |*
     786             : |* Read FrameViews data and set actual views data
     787             : |*
     788             : \************************************************************************/
     789             : 
     790           0 : void ViewShell::ReadFrameViewData(FrameView*)
     791             : {
     792           0 : }
     793             : 
     794             : 
     795             : 
     796             : /*************************************************************************
     797             : |*
     798             : |* Write actual views data to FrameView
     799             : |*
     800             : \************************************************************************/
     801             : 
     802           0 : void ViewShell::WriteFrameViewData()
     803             : {
     804           0 : }
     805             : 
     806             : /*************************************************************************
     807             : |*
     808             : |* OLE-Object aktivieren
     809             : |*
     810             : \************************************************************************/
     811             : 
     812           0 : sal_Bool ViewShell::ActivateObject(SdrOle2Obj* pObj, long nVerb)
     813             : {
     814           0 :     ErrCode aErrCode = 0;
     815             : 
     816           0 :     SfxErrorContext aEC(ERRCTX_SO_DOVERB, GetActiveWindow(), RID_SO_ERRCTX);
     817           0 :     sal_Bool bAbort = sal_False;
     818           0 :     GetDocSh()->SetWaitCursor( sal_True );
     819           0 :     SfxViewShell* pViewShell = GetViewShell();
     820             :     OSL_ASSERT (pViewShell!=NULL);
     821           0 :     bool bChangeDefaultsForChart = false;
     822           0 :     rtl::OUString aName;
     823             : 
     824           0 :     uno::Reference < embed::XEmbeddedObject > xObj = pObj->GetObjRef();
     825           0 :     if ( !xObj.is() )
     826             :     {
     827             :         /**********************************************************
     828             :         * Leeres OLE-Objekt mit OLE-Objekt versehen
     829             :         **********************************************************/
     830           0 :         aName = pObj->GetProgName();
     831           0 :         ::rtl::OUString aObjName;
     832           0 :         SvGlobalName aClass;
     833             : 
     834           0 :         if( aName == "StarChart"  || aName == "StarOrg" )
     835             :         {
     836           0 :             if( SvtModuleOptions().IsChart() )
     837             :             {
     838           0 :                 aClass = SvGlobalName( SO3_SCH_CLASSID );
     839           0 :                 bChangeDefaultsForChart = true;
     840             :             }
     841             :         }
     842           0 :         else if( aName == "StarCalc" )
     843             :         {
     844           0 :             if( SvtModuleOptions().IsCalc() )
     845           0 :                 aClass = SvGlobalName( SO3_SC_CLASSID );
     846             :         }
     847           0 :         else if( aName == "StarMath" )
     848             :         {
     849           0 :             if( SvtModuleOptions().IsMath() )
     850           0 :                 aClass = SvGlobalName( SO3_SM_CLASSID );
     851             :         }
     852             : 
     853           0 :         if ( aClass != SvGlobalName() )
     854           0 :             xObj = GetDocSh()->GetEmbeddedObjectContainer().CreateEmbeddedObject( aClass.GetByteSequence(), aObjName );
     855             : 
     856           0 :         if( !xObj.is() )
     857             :         {
     858           0 :             aName = "";
     859             : 
     860             :             // Dialog "OLE-Objekt einfuegen" aufrufen
     861           0 :             GetDocSh()->SetWaitCursor( sal_False );
     862             :             pViewShell->GetViewFrame()->GetDispatcher()->Execute(
     863             :                 SID_INSERT_OBJECT,
     864           0 :                 SFX_CALLMODE_SYNCHRON | SFX_CALLMODE_RECORD);
     865           0 :             xObj = pObj->GetObjRef();
     866           0 :             GetDocSh()->SetWaitCursor( sal_True );
     867             : 
     868           0 :             if (!xObj.is())
     869             :             {
     870           0 :                 bAbort = sal_True;
     871             :             }
     872             :         }
     873             : 
     874           0 :         if ( xObj.is() )
     875             :         {
     876             :             /******************************************************
     877             :             * OLE-Objekt ist nicht mehr leer
     878             :             ******************************************************/
     879           0 :             pObj->SetEmptyPresObj(sal_False);
     880           0 :             pObj->SetOutlinerParaObject(NULL);
     881           0 :             pObj->SetGraphic(NULL);
     882             : 
     883             :             /******************************************************
     884             :             * Das leere OLE-Objekt bekommt ein neues IPObj
     885             :             ******************************************************/
     886           0 :             if (!aName.isEmpty())
     887             :             {
     888           0 :                 pObj->SetObjRef(xObj);
     889           0 :                 pObj->SetName(aObjName);
     890           0 :                 pObj->SetPersistName(aObjName);
     891             :             }
     892             :             else
     893             :             {
     894             :                 // Das Einfuegen hat der Dialog schon gemacht
     895           0 :                 pObj->SetObjRef(xObj);
     896             :             }
     897             : 
     898           0 :             Rectangle aRect = pObj->GetLogicRect();
     899             : 
     900           0 :             if ( pObj->GetAspect() != embed::Aspects::MSOLE_ICON )
     901             :             {
     902           0 :                 awt::Size aSz;
     903           0 :                 aSz.Width = aRect.GetWidth();
     904           0 :                 aSz.Height = aRect.GetHeight();
     905           0 :                 xObj->setVisualAreaSize( pObj->GetAspect(), aSz );
     906             :             }
     907             : 
     908           0 :             GetViewShellBase().SetVerbs( xObj->getSupportedVerbs() );
     909             : 
     910           0 :             nVerb = SVVERB_SHOW;
     911             :         }
     912             :         else
     913             :         {
     914           0 :             aErrCode = ERRCODE_SFX_OLEGENERAL;
     915           0 :         }
     916             :     }
     917             : 
     918           0 :     if( aErrCode == 0 )
     919             :     {
     920           0 :         ::sd::View* pView = GetView();
     921             : 
     922           0 :         if (pView->IsTextEdit())
     923             :         {
     924           0 :             pView->SdrEndTextEdit();
     925             :         }
     926             : 
     927             :         SfxInPlaceClient* pSdClient =
     928             :             static_cast<Client*>(pViewShell->FindIPClient(
     929           0 :                 pObj->GetObjRef(), GetActiveWindow()));
     930             : 
     931           0 :         if ( !pSdClient )
     932             :         {
     933           0 :             pSdClient = new Client(pObj, this, GetActiveWindow());
     934             :         }
     935             : 
     936           0 :         Rectangle aRect = pObj->GetLogicRect();
     937             : 
     938             :         {
     939             :             // #i118485# center on BoundRect for activation,
     940             :             // OLE may be sheared/rotated now
     941           0 :             const Rectangle& rBoundRect = pObj->GetCurrentBoundRect();
     942           0 :             const Point aDelta(rBoundRect.Center() - aRect.Center());
     943           0 :             aRect.Move(aDelta.X(), aDelta.Y());
     944             :         }
     945             : 
     946           0 :         Size aDrawSize = aRect.GetSize();
     947             : 
     948           0 :         MapMode aMapMode( GetDoc()->GetScaleUnit() );
     949           0 :         Size aObjAreaSize = pObj->GetOrigObjSize( &aMapMode );
     950           0 :         if( pObj->IsChart() ) //charts never should be stretched see #i84323# for example
     951           0 :             aObjAreaSize = aDrawSize;
     952             : 
     953           0 :         Fraction aScaleWidth (aDrawSize.Width(),  aObjAreaSize.Width() );
     954           0 :         Fraction aScaleHeight(aDrawSize.Height(), aObjAreaSize.Height() );
     955           0 :         aScaleWidth.ReduceInaccurate(10);       // kompatibel zum SdrOle2Obj
     956           0 :         aScaleHeight.ReduceInaccurate(10);
     957           0 :         pSdClient->SetSizeScale(aScaleWidth, aScaleHeight);
     958             : 
     959             :         // sichtbarer Ausschnitt wird nur inplace veraendert!
     960           0 :         aRect.SetSize(aObjAreaSize);
     961             :         // the object area size must be set after scaling, since it triggers the resizing
     962           0 :         pSdClient->SetObjArea(aRect);
     963             : 
     964           0 :         if( bChangeDefaultsForChart && xObj.is())
     965             :         {
     966           0 :             AdaptDefaultsForChart( xObj );
     967             :         }
     968             : 
     969           0 :         pSdClient->DoVerb(nVerb);   // ErrCode wird ggf. vom Sfx ausgegeben
     970           0 :         pViewShell->GetViewFrame()->GetBindings().Invalidate(
     971           0 :             SID_NAVIGATOR_STATE, sal_True, sal_False);
     972             :     }
     973             : 
     974           0 :     GetDocSh()->SetWaitCursor( sal_False );
     975             : 
     976           0 :     if (aErrCode != 0 && !bAbort)
     977             :     {
     978           0 :         ErrorHandler::HandleError(* new StringErrorInfo(aErrCode, String() ) );
     979             :     }
     980             : 
     981           0 :     return aErrCode == 0;
     982             : }
     983             : 
     984             : /*************************************************************************
     985             : |*
     986             : |* umschliessendes Rechteck aller (Split-)Fenster zurueckgeben.
     987             : |*
     988             : \************************************************************************/
     989             : 
     990           0 : const Rectangle& ViewShell::GetAllWindowRect()
     991             : {
     992             :     maAllWindowRectangle.SetPos(
     993           0 :         mpContentWindow->OutputToScreenPixel(Point(0,0)));
     994           0 :     return maAllWindowRectangle;
     995             : }
     996             : 
     997             : /*************************************************************************
     998             : |*
     999             : |* Read user data
    1000             : |*
    1001             : \************************************************************************/
    1002           0 : void ViewShell::ReadUserData(const String&)
    1003             : {
    1004             :     // Auf an FrameView gemerkte VisArea zoomen
    1005             :     GetViewShell()->GetViewFrame()->GetDispatcher()->Execute(SID_SIZE_VISAREA,
    1006           0 :         SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
    1007           0 : }
    1008             : 
    1009             : /*************************************************************************
    1010             : |*
    1011             : |* Write user data
    1012             : |*
    1013             : \************************************************************************/
    1014             : 
    1015           0 : void ViewShell::WriteUserData(String&)
    1016             : {
    1017             :     // Das Schreiben unserer Daten erfolgt stets in WriteFrameViewData()
    1018           0 :     WriteFrameViewData();
    1019           0 : }
    1020             : 
    1021             : 
    1022             : /*************************************************************************
    1023             : |*
    1024             : |* Lineale ein- / ausschalten
    1025             : |*
    1026             : \************************************************************************/
    1027             : 
    1028           0 : void ViewShell::SetRuler(sal_Bool bRuler)
    1029             : {
    1030           0 :     mbHasRulers = ( bRuler && !GetDocSh()->IsPreview() ); // no rulers on preview mode
    1031             : 
    1032           0 :     if (mpHorizontalRuler.get() != NULL)
    1033             :     {
    1034           0 :         if (mbHasRulers)
    1035             :         {
    1036           0 :             mpHorizontalRuler->Show();
    1037             :         }
    1038             :         else
    1039             :         {
    1040           0 :             mpHorizontalRuler->Hide();
    1041             :         }
    1042             :     }
    1043             : 
    1044           0 :     if (mpVerticalRuler.get() != NULL)
    1045             :     {
    1046           0 :         if (mbHasRulers)
    1047             :         {
    1048           0 :             mpVerticalRuler->Show();
    1049             :         }
    1050             :         else
    1051             :         {
    1052           0 :             mpVerticalRuler->Hide();
    1053             :         }
    1054             :     }
    1055             : 
    1056             :     OSL_ASSERT(GetViewShell()!=NULL);
    1057           0 :     if (IsMainViewShell())
    1058           0 :         GetViewShell()->InvalidateBorder();
    1059           0 : }
    1060             : 
    1061             : /*************************************************************************
    1062             : |*
    1063             : |* AcceptDrop
    1064             : |*
    1065             : \************************************************************************/
    1066             : 
    1067           0 : sal_Int8 ViewShell::AcceptDrop (
    1068             :     const AcceptDropEvent& rEvt,
    1069             :     DropTargetHelper& rTargetHelper,
    1070             :     ::sd::Window* pTargetWindow,
    1071             :     sal_uInt16 nPage,
    1072             :     sal_uInt16 nLayer)
    1073             : {
    1074           0 :     ::sd::View* pView = GetView();
    1075           0 :     return( pView ? pView->AcceptDrop( rEvt, rTargetHelper, pTargetWindow, nPage, nLayer ) : DND_ACTION_NONE );
    1076             : }
    1077             : 
    1078             : /*************************************************************************
    1079             : |*
    1080             : |* ExecuteDrop
    1081             : |*
    1082             : \************************************************************************/
    1083             : 
    1084           0 : sal_Int8 ViewShell::ExecuteDrop (
    1085             :     const ExecuteDropEvent& rEvt,
    1086             :     DropTargetHelper& rTargetHelper,
    1087             :     ::sd::Window* pTargetWindow,
    1088             :     sal_uInt16 nPage,
    1089             :     sal_uInt16 nLayer)
    1090             : {
    1091           0 :     ::sd::View* pView = GetView();
    1092           0 :     return( pView ? pView->ExecuteDrop( rEvt, rTargetHelper, pTargetWindow, nPage, nLayer ) : DND_ACTION_NONE );
    1093             : }
    1094             : 
    1095             : #ifdef _MSC_VER
    1096             : #pragma optimize ( "", on )
    1097             : #endif
    1098             : 
    1099           0 : void ViewShell::WriteUserDataSequence ( ::com::sun::star::uno::Sequence <
    1100             :     ::com::sun::star::beans::PropertyValue >& rSequence, sal_Bool bBrowse)
    1101             : {
    1102           0 :     const sal_Int32 nIndex = rSequence.getLength();
    1103           0 :     rSequence.realloc( nIndex + 1 );
    1104             : 
    1105             :     OSL_ASSERT (GetViewShell()!=NULL);
    1106             :     // Get the view id from the view shell in the center pane.  This will
    1107             :     // usually be the called view shell, but to be on the safe side we call
    1108             :     // the main view shell explicitly.
    1109           0 :     sal_uInt16 nViewID (IMPRESS_FACTORY_ID);
    1110           0 :     if (GetViewShellBase().GetMainViewShell().get() != NULL)
    1111           0 :         nViewID = GetViewShellBase().GetMainViewShell()->mpImpl->GetViewId();
    1112           0 :     rSequence[nIndex].Name = rtl::OUString( sUNO_View_ViewId );
    1113           0 :     rtl::OUStringBuffer sBuffer( "view" );
    1114           0 :     sBuffer.append( static_cast<sal_Int32>(nViewID));
    1115           0 :     rSequence[nIndex].Value <<= sBuffer.makeStringAndClear();
    1116             : 
    1117           0 :     mpFrameView->WriteUserDataSequence( rSequence, bBrowse );
    1118           0 : }
    1119             : 
    1120             : 
    1121           0 : void ViewShell::ReadUserDataSequence ( const ::com::sun::star::uno::Sequence < ::com::sun::star::beans::PropertyValue >& rSequence, sal_Bool bBrowse )
    1122             : {
    1123           0 :     mpFrameView->ReadUserDataSequence( rSequence, bBrowse );
    1124           0 : }
    1125             : 
    1126           0 : void ViewShell::VisAreaChanged(const Rectangle& rRect)
    1127             : {
    1128             :     OSL_ASSERT (GetViewShell()!=NULL);
    1129           0 :     GetViewShell()->VisAreaChanged(rRect);
    1130           0 : }
    1131             : 
    1132           0 : void ViewShell::SetWinViewPos(const Point& rWinPos, bool bUpdate)
    1133             : {
    1134           0 :     if (mpContentWindow.get() != NULL)
    1135             :     {
    1136           0 :         mpContentWindow->SetWinViewPos(rWinPos);
    1137             : 
    1138           0 :         if ( bUpdate )
    1139             :         {
    1140           0 :             mpContentWindow->UpdateMapOrigin();
    1141           0 :             mpContentWindow->Invalidate();
    1142             :         }
    1143             :     }
    1144             : 
    1145           0 :     if (mbHasRulers)
    1146             :     {
    1147           0 :         UpdateHRuler();
    1148           0 :         UpdateVRuler();
    1149             :     }
    1150             : 
    1151           0 :     UpdateScrollBars();
    1152             : 
    1153           0 :     Size aVisSizePixel = GetActiveWindow()->GetOutputSizePixel();
    1154           0 :     Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), aVisSizePixel) );
    1155           0 :     VisAreaChanged(aVisAreaWin);
    1156             : 
    1157           0 :     ::sd::View* pView = GetView();
    1158           0 :     if (pView)
    1159             :     {
    1160           0 :         pView->VisAreaChanged(GetActiveWindow());
    1161             :     }
    1162           0 : }
    1163             : 
    1164           0 : Point ViewShell::GetWinViewPos() const
    1165             : {
    1166           0 :     return mpContentWindow->GetWinViewPos();
    1167             : }
    1168             : 
    1169           0 : Point ViewShell::GetViewOrigin() const
    1170             : {
    1171           0 :     return mpContentWindow->GetViewOrigin();
    1172             : }
    1173             : 
    1174           0 : void ViewShell::AdaptDefaultsForChart(
    1175             :     const uno::Reference < embed::XEmbeddedObject > & xEmbObj )
    1176             : {
    1177           0 :     if( xEmbObj.is())
    1178             :     {
    1179           0 :         uno::Reference< chart2::XChartDocument > xChartDoc( xEmbObj->getComponent(), uno::UNO_QUERY );
    1180             :         OSL_ENSURE( xChartDoc.is(), "Trying to set chart property to non-chart OLE" );
    1181           0 :         if( !xChartDoc.is())
    1182           0 :             return;
    1183             : 
    1184             :         try
    1185             :         {
    1186             :             // set background to transparent (none)
    1187           0 :             uno::Reference< beans::XPropertySet > xPageProp( xChartDoc->getPageBackground());
    1188           0 :             if( xPageProp.is())
    1189           0 :                 xPageProp->setPropertyValue( "FillStyle" , uno::makeAny( drawing::FillStyle_NONE ));
    1190             :             // set no border
    1191           0 :             if( xPageProp.is())
    1192           0 :                 xPageProp->setPropertyValue( "LineStyle" , uno::makeAny( drawing::LineStyle_NONE ));
    1193             :         }
    1194           0 :         catch( const uno::Exception & )
    1195             :         {
    1196             :             OSL_FAIL( "Exception caught in AdaptDefaultsForChart" );
    1197           0 :         }
    1198             :     }
    1199             : }
    1200             : 
    1201           9 : } // end of namespace sd
    1202             : 
    1203             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10