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