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