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 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include "fupoor.hxx" 33cdf0e10cSrcweir 34cdf0e10cSrcweir #include <svx/svxids.hrc> 35cdf0e10cSrcweir #include <svl/aeitem.hxx> 36cdf0e10cSrcweir #include <svx/svdpagv.hxx> 37cdf0e10cSrcweir #include <svx/svdoole2.hxx> 38cdf0e10cSrcweir #include <svx/svdograf.hxx> 39cdf0e10cSrcweir #include <vcl/seleng.hxx> 40cdf0e10cSrcweir #include <sfx2/app.hxx> 41cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 42cdf0e10cSrcweir #include <sfx2/bindings.hxx> 43cdf0e10cSrcweir #include <sfx2/request.hxx> 44cdf0e10cSrcweir #include <vcl/dialog.hxx> 45cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 46cdf0e10cSrcweir #include <com/sun/star/drawing/XLayer.hpp> 47cdf0e10cSrcweir #include <com/sun/star/drawing/XLayerManager.hpp> 48cdf0e10cSrcweir #include <com/sun/star/container/XChild.hpp> 49cdf0e10cSrcweir 50cdf0e10cSrcweir #ifndef SD_FRAMW_VIEW_HXX 51cdf0e10cSrcweir #include "FrameView.hxx" 52cdf0e10cSrcweir #endif 53cdf0e10cSrcweir #include "app.hrc" 54cdf0e10cSrcweir #include "fusel.hxx" 55cdf0e10cSrcweir #include "sdpage.hxx" 56cdf0e10cSrcweir #include "drawview.hxx" 57cdf0e10cSrcweir #include "DrawViewShell.hxx" 58cdf0e10cSrcweir #ifndef SD_WINDOW_SHELL_HXX 59cdf0e10cSrcweir #include "Window.hxx" 60cdf0e10cSrcweir #endif 61cdf0e10cSrcweir #include "drawdoc.hxx" 62cdf0e10cSrcweir #include "DrawDocShell.hxx" 63cdf0e10cSrcweir #include "zoomlist.hxx" 64cdf0e10cSrcweir #include "Client.hxx" 65cdf0e10cSrcweir #include "slideshow.hxx" 66cdf0e10cSrcweir #include "LayerTabBar.hxx" 67cdf0e10cSrcweir 68cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 69cdf0e10cSrcweir 70cdf0e10cSrcweir // #97016# IV 71cdf0e10cSrcweir #include <svx/svditer.hxx> 72cdf0e10cSrcweir 73cdf0e10cSrcweir // #98533# 74cdf0e10cSrcweir #include <editeng/editeng.hxx> 75cdf0e10cSrcweir 76cdf0e10cSrcweir using namespace ::com::sun::star; 77cdf0e10cSrcweir using ::com::sun::star::uno::Reference; 78cdf0e10cSrcweir 79cdf0e10cSrcweir namespace sd { 80cdf0e10cSrcweir 81cdf0e10cSrcweir TYPEINIT0( FuPoor ); 82cdf0e10cSrcweir 83cdf0e10cSrcweir /************************************************************************* 84cdf0e10cSrcweir |* 85cdf0e10cSrcweir |* Konstruktor 86cdf0e10cSrcweir |* 87cdf0e10cSrcweir \************************************************************************/ 88cdf0e10cSrcweir 89cdf0e10cSrcweir FuPoor::FuPoor ( 90cdf0e10cSrcweir ViewShell* pViewSh, 91cdf0e10cSrcweir ::sd::Window* pWin, 92cdf0e10cSrcweir ::sd::View* pView, 93cdf0e10cSrcweir SdDrawDocument* pDrDoc, 94cdf0e10cSrcweir SfxRequest& rReq) 95cdf0e10cSrcweir : mpView(pView), 96cdf0e10cSrcweir mpViewShell(pViewSh), 97cdf0e10cSrcweir mpWindow(pWin), 98cdf0e10cSrcweir mpDocSh( pDrDoc->GetDocSh() ), 99cdf0e10cSrcweir mpDoc(pDrDoc), 100cdf0e10cSrcweir nSlotId( rReq.GetSlot() ), 101cdf0e10cSrcweir nSlotValue(0), 102cdf0e10cSrcweir pDialog(NULL), 103cdf0e10cSrcweir bIsInDragMode(sal_False), 104cdf0e10cSrcweir bNoScrollUntilInside (sal_True), 105cdf0e10cSrcweir bScrollable (sal_False), 106cdf0e10cSrcweir bDelayActive (sal_False), 107cdf0e10cSrcweir bFirstMouseMove (sal_False), 108cdf0e10cSrcweir // #95491# remember MouseButton state 109cdf0e10cSrcweir mnCode(0) 110cdf0e10cSrcweir { 111cdf0e10cSrcweir ReceiveRequest(rReq); 112cdf0e10cSrcweir 113cdf0e10cSrcweir aScrollTimer.SetTimeoutHdl( LINK(this, FuPoor, ScrollHdl) ); 114cdf0e10cSrcweir aScrollTimer.SetTimeout(SELENG_AUTOREPEAT_INTERVAL); 115cdf0e10cSrcweir 116cdf0e10cSrcweir aDragTimer.SetTimeoutHdl( LINK(this, FuPoor, DragHdl) ); 117cdf0e10cSrcweir aDragTimer.SetTimeout(SELENG_DRAGDROP_TIMEOUT); 118cdf0e10cSrcweir 119cdf0e10cSrcweir aDelayToScrollTimer.SetTimeoutHdl( LINK(this, FuPoor, DelayHdl) ); 120cdf0e10cSrcweir aDelayToScrollTimer.SetTimeout(2000); 121cdf0e10cSrcweir } 122cdf0e10cSrcweir 123cdf0e10cSrcweir /************************************************************************* 124cdf0e10cSrcweir |* 125cdf0e10cSrcweir |* Destruktor 126cdf0e10cSrcweir |* 127cdf0e10cSrcweir \************************************************************************/ 128cdf0e10cSrcweir 129cdf0e10cSrcweir FuPoor::~FuPoor() 130cdf0e10cSrcweir { 131cdf0e10cSrcweir aDragTimer.Stop(); 132cdf0e10cSrcweir aScrollTimer.Stop(); 133cdf0e10cSrcweir aDelayToScrollTimer.Stop (); 134cdf0e10cSrcweir 135cdf0e10cSrcweir if (pDialog) 136cdf0e10cSrcweir delete pDialog; 137cdf0e10cSrcweir } 138cdf0e10cSrcweir 139cdf0e10cSrcweir /************************************************************************* 140cdf0e10cSrcweir |* 141cdf0e10cSrcweir |* Function aktivieren 142cdf0e10cSrcweir |* 143cdf0e10cSrcweir \************************************************************************/ 144cdf0e10cSrcweir 145cdf0e10cSrcweir void FuPoor::Activate() 146cdf0e10cSrcweir { 147cdf0e10cSrcweir if (pDialog) 148cdf0e10cSrcweir { 149cdf0e10cSrcweir pDialog->Show(); 150cdf0e10cSrcweir } 151cdf0e10cSrcweir } 152cdf0e10cSrcweir 153cdf0e10cSrcweir /************************************************************************* 154cdf0e10cSrcweir |* 155cdf0e10cSrcweir |* Function deaktivieren 156cdf0e10cSrcweir |* 157cdf0e10cSrcweir \************************************************************************/ 158cdf0e10cSrcweir 159cdf0e10cSrcweir void FuPoor::Deactivate() 160cdf0e10cSrcweir { 161cdf0e10cSrcweir aDragTimer.Stop(); 162cdf0e10cSrcweir aScrollTimer.Stop(); 163cdf0e10cSrcweir aDelayToScrollTimer.Stop (); 164cdf0e10cSrcweir bScrollable = 165cdf0e10cSrcweir bDelayActive = sal_False; 166cdf0e10cSrcweir 167cdf0e10cSrcweir if (pDialog) 168cdf0e10cSrcweir { 169cdf0e10cSrcweir pDialog->Hide(); 170cdf0e10cSrcweir } 171cdf0e10cSrcweir 172cdf0e10cSrcweir if (mpWindow) mpWindow->ReleaseMouse (); 173cdf0e10cSrcweir } 174cdf0e10cSrcweir 175cdf0e10cSrcweir /************************************************************************* 176cdf0e10cSrcweir |* 177cdf0e10cSrcweir |* Scrollen bei Erreichen des Fensterrandes; wird von 178cdf0e10cSrcweir |* MouseMove aufgerufen 179cdf0e10cSrcweir |* 180cdf0e10cSrcweir \************************************************************************/ 181cdf0e10cSrcweir 182cdf0e10cSrcweir void FuPoor::ForceScroll(const Point& aPixPos) 183cdf0e10cSrcweir { 184cdf0e10cSrcweir aScrollTimer.Stop(); 185cdf0e10cSrcweir 186cdf0e10cSrcweir if ( !mpView->IsDragHelpLine() && !mpView->IsSetPageOrg() && 187cdf0e10cSrcweir !SlideShow::IsRunning( mpViewShell->GetViewShellBase() ) ) 188cdf0e10cSrcweir { 189cdf0e10cSrcweir /* Size aSize = mpWindow->GetSizePixel(); 190cdf0e10cSrcweir short dx = 0, dy = 0; 191cdf0e10cSrcweir 192cdf0e10cSrcweir if ( aPixPos.X() <= 0 ) dx = -1; 193cdf0e10cSrcweir if ( aPixPos.X() >= aSize.Width() ) dx = 1; 194cdf0e10cSrcweir if ( aPixPos.Y() <= 0 ) dy = -1; 195cdf0e10cSrcweir if ( aPixPos.Y() >= aSize.Height() ) dy = 1; 196cdf0e10cSrcweir */ 197cdf0e10cSrcweir Point aPos = mpWindow->OutputToScreenPixel(aPixPos); 198cdf0e10cSrcweir const Rectangle& rRect = mpViewShell->GetAllWindowRect(); 199cdf0e10cSrcweir 200cdf0e10cSrcweir if ( bNoScrollUntilInside ) 201cdf0e10cSrcweir { 202cdf0e10cSrcweir if ( rRect.IsInside(aPos) ) 203cdf0e10cSrcweir bNoScrollUntilInside = sal_False; 204cdf0e10cSrcweir } 205cdf0e10cSrcweir else 206cdf0e10cSrcweir { 207cdf0e10cSrcweir short dx = 0, dy = 0; 208cdf0e10cSrcweir 209cdf0e10cSrcweir if ( aPos.X() <= rRect.Left() ) dx = -1; 210cdf0e10cSrcweir if ( aPos.X() >= rRect.Right() ) dx = 1; 211cdf0e10cSrcweir if ( aPos.Y() <= rRect.Top() ) dy = -1; 212cdf0e10cSrcweir if ( aPos.Y() >= rRect.Bottom() ) dy = 1; 213cdf0e10cSrcweir 214cdf0e10cSrcweir if ( dx != 0 || dy != 0 ) 215cdf0e10cSrcweir { 216cdf0e10cSrcweir if (bScrollable) 217cdf0e10cSrcweir { 218cdf0e10cSrcweir // Scrollaktion in abgeleiteter Klasse 219cdf0e10cSrcweir ScrollStart(); 220cdf0e10cSrcweir mpViewShell->ScrollLines(dx, dy); 221cdf0e10cSrcweir ScrollEnd(); 222cdf0e10cSrcweir aScrollTimer.Start(); 223cdf0e10cSrcweir } 224cdf0e10cSrcweir else if (! bDelayActive) StartDelayToScrollTimer (); 225cdf0e10cSrcweir } 226cdf0e10cSrcweir } 227cdf0e10cSrcweir } 228cdf0e10cSrcweir } 229cdf0e10cSrcweir 230cdf0e10cSrcweir /************************************************************************* 231cdf0e10cSrcweir |* 232cdf0e10cSrcweir |* Timer-Handler fuer Fensterscrolling 233cdf0e10cSrcweir |* 234cdf0e10cSrcweir \************************************************************************/ 235cdf0e10cSrcweir 236cdf0e10cSrcweir IMPL_LINK_INLINE_START( FuPoor, ScrollHdl, Timer *, EMPTYARG ) 237cdf0e10cSrcweir { 238cdf0e10cSrcweir Point aPnt(mpWindow->GetPointerPosPixel()); 239cdf0e10cSrcweir 240cdf0e10cSrcweir // #95491# use remembered MouseButton state to create correct 241cdf0e10cSrcweir // MouseEvents for this artifical MouseMove. 242cdf0e10cSrcweir MouseMove(MouseEvent(aPnt, 1, 0, GetMouseButtonCode())); 243cdf0e10cSrcweir 244cdf0e10cSrcweir return 0; 245cdf0e10cSrcweir } 246cdf0e10cSrcweir IMPL_LINK_INLINE_END( FuPoor, ScrollHdl, Timer *, pTimer ) 247cdf0e10cSrcweir 248cdf0e10cSrcweir /************************************************************************* 249cdf0e10cSrcweir |* 250cdf0e10cSrcweir |* Tastaturereignisse bearbeiten 251cdf0e10cSrcweir |* 252cdf0e10cSrcweir |* Wird ein KeyEvent bearbeitet, so ist der Return-Wert sal_True, andernfalls 253cdf0e10cSrcweir |* sal_False. 254cdf0e10cSrcweir |* 255cdf0e10cSrcweir \************************************************************************/ 256cdf0e10cSrcweir 257cdf0e10cSrcweir sal_Bool FuPoor::KeyInput(const KeyEvent& rKEvt) 258cdf0e10cSrcweir { 259cdf0e10cSrcweir sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); 260cdf0e10cSrcweir sal_Bool bReturn = sal_False; 261cdf0e10cSrcweir sal_Bool bSlideShow = SlideShow::IsRunning( mpViewShell->GetViewShellBase() ); 262cdf0e10cSrcweir 263cdf0e10cSrcweir switch (nCode) 264cdf0e10cSrcweir { 265cdf0e10cSrcweir // #97016# IV 266cdf0e10cSrcweir case KEY_RETURN: 267cdf0e10cSrcweir { 268cdf0e10cSrcweir if(rKEvt.GetKeyCode().IsMod1()) 269cdf0e10cSrcweir { 270cdf0e10cSrcweir if(mpViewShell && mpViewShell->ISA(DrawViewShell)) 271cdf0e10cSrcweir { 272cdf0e10cSrcweir DrawViewShell* pDrawViewShell = 273cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell); 274cdf0e10cSrcweir SdPage* pActualPage = pDrawViewShell->GetActualPage(); 275cdf0e10cSrcweir SdrTextObj* pCandidate = 0L; 276cdf0e10cSrcweir 277cdf0e10cSrcweir if(pActualPage) 278cdf0e10cSrcweir { 279cdf0e10cSrcweir SdrObjListIter aIter(*pActualPage, IM_DEEPNOGROUPS); 280cdf0e10cSrcweir 281cdf0e10cSrcweir while(aIter.IsMore() && !pCandidate) 282cdf0e10cSrcweir { 283cdf0e10cSrcweir SdrObject* pObj = aIter.Next(); 284cdf0e10cSrcweir 285cdf0e10cSrcweir if(pObj && pObj->ISA(SdrTextObj)) 286cdf0e10cSrcweir { 287cdf0e10cSrcweir sal_uInt32 nInv(pObj->GetObjInventor()); 288cdf0e10cSrcweir sal_uInt16 nKnd(pObj->GetObjIdentifier()); 289cdf0e10cSrcweir 290cdf0e10cSrcweir if(SdrInventor == nInv && 291cdf0e10cSrcweir (OBJ_TITLETEXT == nKnd || OBJ_OUTLINETEXT == nKnd || OBJ_TEXT == nKnd)) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir pCandidate = (SdrTextObj*)pObj; 294cdf0e10cSrcweir } 295cdf0e10cSrcweir } 296cdf0e10cSrcweir } 297cdf0e10cSrcweir } 298cdf0e10cSrcweir 299cdf0e10cSrcweir if(pCandidate) 300cdf0e10cSrcweir { 301cdf0e10cSrcweir mpView->UnMarkAll(); 302cdf0e10cSrcweir mpView->MarkObj(pCandidate, mpView->GetSdrPageView()); 303cdf0e10cSrcweir 304cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( 305cdf0e10cSrcweir SID_ATTR_CHAR, SFX_CALLMODE_ASYNCHRON); 306cdf0e10cSrcweir } 307cdf0e10cSrcweir else 308cdf0e10cSrcweir { 309cdf0e10cSrcweir // insert a new page with the same page layout 310cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( 311cdf0e10cSrcweir SID_INSERTPAGE_QUICK, SFX_CALLMODE_ASYNCHRON); 312cdf0e10cSrcweir } 313cdf0e10cSrcweir 314cdf0e10cSrcweir // consumed 315cdf0e10cSrcweir bReturn = sal_True; 316cdf0e10cSrcweir } 317cdf0e10cSrcweir } 318cdf0e10cSrcweir else 319cdf0e10cSrcweir { 320cdf0e10cSrcweir // #98255# activate OLE object on RETURN for selected object 321cdf0e10cSrcweir // #98198# activate text edit on RETURN for selected object 322cdf0e10cSrcweir const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); 323cdf0e10cSrcweir 324cdf0e10cSrcweir if( !mpView->IsTextEdit() && 1 == rMarkList.GetMarkCount() ) 325cdf0e10cSrcweir { 326cdf0e10cSrcweir SdrObject* pObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj(); 327cdf0e10cSrcweir 328cdf0e10cSrcweir if( pObj && pObj->ISA( SdrOle2Obj ) && !mpDocSh->IsUIActive() ) 329cdf0e10cSrcweir { 330cdf0e10cSrcweir //HMHmpView->HideMarkHdl(); 331cdf0e10cSrcweir mpViewShell->ActivateObject( static_cast< SdrOle2Obj* >( pObj ), 0 ); 332cdf0e10cSrcweir } 333cdf0e10cSrcweir else if( pObj && pObj->IsEmptyPresObj() && pObj->ISA( SdrGrafObj ) ) 334cdf0e10cSrcweir { 335cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_GRAPHIC, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); 336cdf0e10cSrcweir } 337cdf0e10cSrcweir else 338cdf0e10cSrcweir { 339cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( SID_ATTR_CHAR, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD ); 340cdf0e10cSrcweir } 341cdf0e10cSrcweir 342cdf0e10cSrcweir // consumed 343cdf0e10cSrcweir bReturn = sal_True; 344cdf0e10cSrcweir } 345cdf0e10cSrcweir } 346cdf0e10cSrcweir } 347cdf0e10cSrcweir break; 348cdf0e10cSrcweir 349cdf0e10cSrcweir // #97016# II 350cdf0e10cSrcweir case KEY_TAB: 351cdf0e10cSrcweir { 352cdf0e10cSrcweir // #98994# handle Mod1 and Mod2 to get travelling running on different systems 353cdf0e10cSrcweir if(rKEvt.GetKeyCode().IsMod1() || rKEvt.GetKeyCode().IsMod2()) 354cdf0e10cSrcweir { 355cdf0e10cSrcweir // #97016# II do something with a selected handle? 356cdf0e10cSrcweir const SdrHdlList& rHdlList = mpView->GetHdlList(); 357cdf0e10cSrcweir sal_Bool bForward(!rKEvt.GetKeyCode().IsShift()); 358cdf0e10cSrcweir 359cdf0e10cSrcweir ((SdrHdlList&)rHdlList).TravelFocusHdl(bForward); 360cdf0e10cSrcweir 361cdf0e10cSrcweir // guarantee visibility of focused handle 362cdf0e10cSrcweir SdrHdl* pHdl = rHdlList.GetFocusHdl(); 363cdf0e10cSrcweir 364cdf0e10cSrcweir if(pHdl) 365cdf0e10cSrcweir { 366cdf0e10cSrcweir Point aHdlPosition(pHdl->GetPos()); 367cdf0e10cSrcweir Rectangle aVisRect(aHdlPosition - Point(100, 100), Size(200, 200)); 368cdf0e10cSrcweir mpView->MakeVisible(aVisRect, *mpWindow); 369cdf0e10cSrcweir } 370cdf0e10cSrcweir 371cdf0e10cSrcweir // consumed 372cdf0e10cSrcweir bReturn = sal_True; 373cdf0e10cSrcweir } 374cdf0e10cSrcweir } 375cdf0e10cSrcweir break; 376cdf0e10cSrcweir 377cdf0e10cSrcweir case KEY_ESCAPE: 378cdf0e10cSrcweir { 379cdf0e10cSrcweir bReturn = FuPoor::cancel(); 380cdf0e10cSrcweir } 381cdf0e10cSrcweir break; 382cdf0e10cSrcweir 383cdf0e10cSrcweir case KEY_ADD: 384cdf0e10cSrcweir { 385cdf0e10cSrcweir if (!mpView->IsTextEdit() && !bSlideShow && !mpDocSh->IsUIActive()) 386cdf0e10cSrcweir { 387cdf0e10cSrcweir // Zoom vergroessern 388cdf0e10cSrcweir mpViewShell->SetZoom(mpWindow->GetZoom() * 3 / 2); 389cdf0e10cSrcweir 390cdf0e10cSrcweir if (mpViewShell->ISA(DrawViewShell)) 391cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell) 392cdf0e10cSrcweir ->SetZoomOnPage(sal_False); 393cdf0e10cSrcweir 394cdf0e10cSrcweir bReturn = sal_True; 395cdf0e10cSrcweir } 396cdf0e10cSrcweir } 397cdf0e10cSrcweir break; 398cdf0e10cSrcweir 399cdf0e10cSrcweir case KEY_SUBTRACT: 400cdf0e10cSrcweir { 401cdf0e10cSrcweir if (!mpView->IsTextEdit() && !bSlideShow && !mpDocSh->IsUIActive()) 402cdf0e10cSrcweir { 403cdf0e10cSrcweir // Zoom verringern 404cdf0e10cSrcweir mpViewShell->SetZoom(mpWindow->GetZoom() * 2 / 3); 405cdf0e10cSrcweir 406cdf0e10cSrcweir if (mpViewShell->ISA(DrawViewShell)) 407cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell) 408cdf0e10cSrcweir ->SetZoomOnPage(sal_False); 409cdf0e10cSrcweir 410cdf0e10cSrcweir bReturn = sal_True; 411cdf0e10cSrcweir } 412cdf0e10cSrcweir } 413cdf0e10cSrcweir break; 414cdf0e10cSrcweir 415cdf0e10cSrcweir case KEY_MULTIPLY: 416cdf0e10cSrcweir { 417cdf0e10cSrcweir if (!mpView->IsTextEdit() && !bSlideShow) 418cdf0e10cSrcweir { 419cdf0e10cSrcweir // Zoom auf Seite 420cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()-> 421cdf0e10cSrcweir Execute(SID_SIZE_PAGE, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD); 422cdf0e10cSrcweir bReturn = sal_True; 423cdf0e10cSrcweir } 424cdf0e10cSrcweir } 425cdf0e10cSrcweir break; 426cdf0e10cSrcweir 427cdf0e10cSrcweir case KEY_DIVIDE: 428cdf0e10cSrcweir { 429cdf0e10cSrcweir if (!mpView->IsTextEdit() && !bSlideShow) 430cdf0e10cSrcweir { 431cdf0e10cSrcweir // Zoom auf selektierte Objekte 432cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()-> 433cdf0e10cSrcweir Execute(SID_SIZE_OPTIMAL, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD); 434cdf0e10cSrcweir bReturn = sal_True; 435cdf0e10cSrcweir } 436cdf0e10cSrcweir } 437cdf0e10cSrcweir break; 438cdf0e10cSrcweir 439cdf0e10cSrcweir case KEY_POINT: 440cdf0e10cSrcweir { 441cdf0e10cSrcweir ZoomList* pZoomList = mpViewShell->GetZoomList(); 442cdf0e10cSrcweir 443cdf0e10cSrcweir if (!mpView->IsTextEdit() && pZoomList->IsNextPossible() && !bSlideShow && !mpDocSh->IsUIActive()) 444cdf0e10cSrcweir { 445cdf0e10cSrcweir // Naechstes ZoomRect einstellen 446cdf0e10cSrcweir mpViewShell->SetZoomRect(pZoomList->GetNextZoomRect()); 447cdf0e10cSrcweir bReturn = sal_True; 448cdf0e10cSrcweir } 449cdf0e10cSrcweir } 450cdf0e10cSrcweir break; 451cdf0e10cSrcweir 452cdf0e10cSrcweir case KEY_COMMA: 453cdf0e10cSrcweir { 454cdf0e10cSrcweir ZoomList* pZoomList = mpViewShell->GetZoomList(); 455cdf0e10cSrcweir 456cdf0e10cSrcweir if (!mpView->IsTextEdit() && pZoomList->IsPreviousPossible() && !bSlideShow && !mpDocSh->IsUIActive()) 457cdf0e10cSrcweir { 458cdf0e10cSrcweir // Vorheriges ZoomRect einstellen 459cdf0e10cSrcweir mpViewShell->SetZoomRect(pZoomList->GetPreviousZoomRect()); 460cdf0e10cSrcweir bReturn = sal_True; 461cdf0e10cSrcweir } 462cdf0e10cSrcweir } 463cdf0e10cSrcweir break; 464cdf0e10cSrcweir 465cdf0e10cSrcweir case KEY_HOME: 466cdf0e10cSrcweir { 467cdf0e10cSrcweir if (!mpView->IsTextEdit() 468cdf0e10cSrcweir && mpViewShell->ISA(DrawViewShell) 469cdf0e10cSrcweir && !bSlideShow) 470cdf0e10cSrcweir { 471cdf0e10cSrcweir // Sprung zu erster Seite 472cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->SwitchPage(0); 473cdf0e10cSrcweir bReturn = sal_True; 474cdf0e10cSrcweir } 475cdf0e10cSrcweir } 476cdf0e10cSrcweir break; 477cdf0e10cSrcweir 478cdf0e10cSrcweir case KEY_END: 479cdf0e10cSrcweir { 480cdf0e10cSrcweir if (!mpView->IsTextEdit() 481cdf0e10cSrcweir && mpViewShell->ISA(DrawViewShell) 482cdf0e10cSrcweir && !bSlideShow) 483cdf0e10cSrcweir { 484cdf0e10cSrcweir // Sprung zu letzter Seite 485cdf0e10cSrcweir SdPage* pPage = 486cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->GetActualPage(); 487cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell) 488cdf0e10cSrcweir ->SwitchPage(mpDoc->GetSdPageCount( 489cdf0e10cSrcweir pPage->GetPageKind()) - 1); 490cdf0e10cSrcweir bReturn = sal_True; 491cdf0e10cSrcweir } 492cdf0e10cSrcweir } 493cdf0e10cSrcweir break; 494cdf0e10cSrcweir 495cdf0e10cSrcweir case KEY_PAGEUP: 496cdf0e10cSrcweir { 497cdf0e10cSrcweir if( rKEvt.GetKeyCode().IsMod1() && rKEvt.GetKeyCode().IsMod2() ) 498cdf0e10cSrcweir break; 499cdf0e10cSrcweir 500cdf0e10cSrcweir if(mpViewShell->ISA(DrawViewShell) && !bSlideShow) 501cdf0e10cSrcweir { 502cdf0e10cSrcweir // The page-up key switches layers or pages depending on the 503cdf0e10cSrcweir // modifier key. 504cdf0e10cSrcweir if ( ! rKEvt.GetKeyCode().GetAllModifier()) 505cdf0e10cSrcweir { 506cdf0e10cSrcweir // With no modifier pressed we move to the previous 507cdf0e10cSrcweir // slide. 508cdf0e10cSrcweir mpView->SdrEndTextEdit(); 509cdf0e10cSrcweir 510cdf0e10cSrcweir // Previous page. 511cdf0e10cSrcweir bReturn = sal_True; 512cdf0e10cSrcweir SdPage* pPage = static_cast<DrawViewShell*>(mpViewShell)->GetActualPage(); 513cdf0e10cSrcweir sal_uInt16 nSdPage = (pPage->GetPageNum() - 1) / 2; 514cdf0e10cSrcweir 515cdf0e10cSrcweir if (nSdPage > 0) 516cdf0e10cSrcweir { 517cdf0e10cSrcweir // Switch the page and send events regarding 518cdf0e10cSrcweir // deactivation the old page and activating the new 519cdf0e10cSrcweir // one. 520cdf0e10cSrcweir TabControl* pPageTabControl = 521cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell) 522cdf0e10cSrcweir ->GetPageTabControl(); 523cdf0e10cSrcweir if (pPageTabControl->IsReallyShown()) 524cdf0e10cSrcweir pPageTabControl->SendDeactivatePageEvent (); 525cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->SwitchPage(nSdPage - 1); 526cdf0e10cSrcweir if (pPageTabControl->IsReallyShown()) 527cdf0e10cSrcweir pPageTabControl->SendActivatePageEvent (); 528cdf0e10cSrcweir } 529cdf0e10cSrcweir } 530cdf0e10cSrcweir else if (rKEvt.GetKeyCode().IsMod1()) 531cdf0e10cSrcweir { 532cdf0e10cSrcweir // With the CONTROL modifier we switch layers. 533cdf0e10cSrcweir if (static_cast<DrawViewShell*>(mpViewShell)->IsLayerModeActive()) 534cdf0e10cSrcweir { 535cdf0e10cSrcweir // Moves to the previous layer. 536cdf0e10cSrcweir SwitchLayer (-1); 537cdf0e10cSrcweir } 538cdf0e10cSrcweir } 539cdf0e10cSrcweir } 540cdf0e10cSrcweir } 541cdf0e10cSrcweir break; 542cdf0e10cSrcweir 543cdf0e10cSrcweir case KEY_PAGEDOWN: 544cdf0e10cSrcweir { 545cdf0e10cSrcweir if( rKEvt.GetKeyCode().IsMod1() && rKEvt.GetKeyCode().IsMod2() ) 546cdf0e10cSrcweir break; 547cdf0e10cSrcweir if(mpViewShell->ISA(DrawViewShell) && !bSlideShow) 548cdf0e10cSrcweir { 549cdf0e10cSrcweir // The page-down key switches layers or pages depending on the 550cdf0e10cSrcweir // modifier key. 551cdf0e10cSrcweir if ( ! rKEvt.GetKeyCode().GetAllModifier()) 552cdf0e10cSrcweir { 553cdf0e10cSrcweir // With no modifier pressed we move to the next slide. 554cdf0e10cSrcweir mpView->SdrEndTextEdit(); 555cdf0e10cSrcweir 556cdf0e10cSrcweir // Next page. 557cdf0e10cSrcweir bReturn = sal_True; 558cdf0e10cSrcweir SdPage* pPage = static_cast<DrawViewShell*>(mpViewShell)->GetActualPage(); 559cdf0e10cSrcweir sal_uInt16 nSdPage = (pPage->GetPageNum() - 1) / 2; 560cdf0e10cSrcweir 561cdf0e10cSrcweir if (nSdPage < mpDoc->GetSdPageCount(pPage->GetPageKind()) - 1) 562cdf0e10cSrcweir { 563cdf0e10cSrcweir // Switch the page and send events regarding 564cdf0e10cSrcweir // deactivation the old page and activating the new 565cdf0e10cSrcweir // one. 566cdf0e10cSrcweir TabControl* pPageTabControl = 567cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->GetPageTabControl(); 568cdf0e10cSrcweir if (pPageTabControl->IsReallyShown()) 569cdf0e10cSrcweir pPageTabControl->SendDeactivatePageEvent (); 570cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->SwitchPage(nSdPage + 1); 571cdf0e10cSrcweir if (pPageTabControl->IsReallyShown()) 572cdf0e10cSrcweir pPageTabControl->SendActivatePageEvent (); 573cdf0e10cSrcweir } 574cdf0e10cSrcweir } 575cdf0e10cSrcweir else if (rKEvt.GetKeyCode().IsMod1()) 576cdf0e10cSrcweir { 577cdf0e10cSrcweir // With the CONTROL modifier we switch layers. 578cdf0e10cSrcweir if (static_cast<DrawViewShell*>(mpViewShell)->IsLayerModeActive()) 579cdf0e10cSrcweir { 580cdf0e10cSrcweir // With the layer mode active pressing page-down 581cdf0e10cSrcweir // moves to the next layer. 582cdf0e10cSrcweir SwitchLayer (+1); 583cdf0e10cSrcweir } 584cdf0e10cSrcweir } 585cdf0e10cSrcweir } 586cdf0e10cSrcweir } 587cdf0e10cSrcweir break; 588cdf0e10cSrcweir 589cdf0e10cSrcweir // #97016# II change select state when focus is on poly point 590cdf0e10cSrcweir case KEY_SPACE: 591cdf0e10cSrcweir { 592cdf0e10cSrcweir const SdrHdlList& rHdlList = mpView->GetHdlList(); 593cdf0e10cSrcweir SdrHdl* pHdl = rHdlList.GetFocusHdl(); 594cdf0e10cSrcweir 595cdf0e10cSrcweir if(pHdl) 596cdf0e10cSrcweir { 597cdf0e10cSrcweir if(pHdl->GetKind() == HDL_POLY) 598cdf0e10cSrcweir { 599cdf0e10cSrcweir // rescue ID of point with focus 600cdf0e10cSrcweir sal_uInt32 nPol(pHdl->GetPolyNum()); 601cdf0e10cSrcweir sal_uInt32 nPnt(pHdl->GetPointNum()); 602cdf0e10cSrcweir 603cdf0e10cSrcweir if(mpView->IsPointMarked(*pHdl)) 604cdf0e10cSrcweir { 605cdf0e10cSrcweir if(rKEvt.GetKeyCode().IsShift()) 606cdf0e10cSrcweir { 607cdf0e10cSrcweir mpView->UnmarkPoint(*pHdl); 608cdf0e10cSrcweir } 609cdf0e10cSrcweir } 610cdf0e10cSrcweir else 611cdf0e10cSrcweir { 612cdf0e10cSrcweir if(!rKEvt.GetKeyCode().IsShift()) 613cdf0e10cSrcweir { 614cdf0e10cSrcweir mpView->UnmarkAllPoints(); 615cdf0e10cSrcweir } 616cdf0e10cSrcweir 617cdf0e10cSrcweir mpView->MarkPoint(*pHdl); 618cdf0e10cSrcweir } 619cdf0e10cSrcweir 620cdf0e10cSrcweir if(0L == rHdlList.GetFocusHdl()) 621cdf0e10cSrcweir { 622cdf0e10cSrcweir // restore point with focus 623cdf0e10cSrcweir SdrHdl* pNewOne = 0L; 624cdf0e10cSrcweir 625cdf0e10cSrcweir for(sal_uInt32 a(0); !pNewOne && a < rHdlList.GetHdlCount(); a++) 626cdf0e10cSrcweir { 627cdf0e10cSrcweir SdrHdl* pAct = rHdlList.GetHdl(a); 628cdf0e10cSrcweir 629cdf0e10cSrcweir if(pAct 630cdf0e10cSrcweir && pAct->GetKind() == HDL_POLY 631cdf0e10cSrcweir && pAct->GetPolyNum() == nPol 632cdf0e10cSrcweir && pAct->GetPointNum() == nPnt) 633cdf0e10cSrcweir { 634cdf0e10cSrcweir pNewOne = pAct; 635cdf0e10cSrcweir } 636cdf0e10cSrcweir } 637cdf0e10cSrcweir 638cdf0e10cSrcweir if(pNewOne) 639cdf0e10cSrcweir { 640cdf0e10cSrcweir ((SdrHdlList&)rHdlList).SetFocusHdl(pNewOne); 641cdf0e10cSrcweir } 642cdf0e10cSrcweir } 643cdf0e10cSrcweir 644cdf0e10cSrcweir bReturn = sal_True; 645cdf0e10cSrcweir } 646cdf0e10cSrcweir } 647cdf0e10cSrcweir } 648cdf0e10cSrcweir break; 649cdf0e10cSrcweir 650cdf0e10cSrcweir case KEY_UP: 651cdf0e10cSrcweir case KEY_DOWN: 652cdf0e10cSrcweir case KEY_LEFT: 653cdf0e10cSrcweir case KEY_RIGHT: 654cdf0e10cSrcweir { 655cdf0e10cSrcweir if (!mpView->IsTextEdit() && !bSlideShow) 656cdf0e10cSrcweir { 657cdf0e10cSrcweir long nX = 0; 658cdf0e10cSrcweir long nY = 0; 659cdf0e10cSrcweir 660cdf0e10cSrcweir if (nCode == KEY_UP) 661cdf0e10cSrcweir { 662cdf0e10cSrcweir // Scroll nach oben 663cdf0e10cSrcweir nX = 0; 664cdf0e10cSrcweir nY =-1; 665cdf0e10cSrcweir } 666cdf0e10cSrcweir else if (nCode == KEY_DOWN) 667cdf0e10cSrcweir { 668cdf0e10cSrcweir // Scroll nach unten 669cdf0e10cSrcweir nX = 0; 670cdf0e10cSrcweir nY = 1; 671cdf0e10cSrcweir } 672cdf0e10cSrcweir else if (nCode == KEY_LEFT) 673cdf0e10cSrcweir { 674cdf0e10cSrcweir // Scroll nach links 675cdf0e10cSrcweir nX =-1; 676cdf0e10cSrcweir nY = 0; 677cdf0e10cSrcweir } 678cdf0e10cSrcweir else if (nCode == KEY_RIGHT) 679cdf0e10cSrcweir { 680cdf0e10cSrcweir // Scroll nach rechts 681cdf0e10cSrcweir nX = 1; 682cdf0e10cSrcweir nY = 0; 683cdf0e10cSrcweir } 684cdf0e10cSrcweir 685cdf0e10cSrcweir if (mpView->AreObjectsMarked() && !rKEvt.GetKeyCode().IsMod1() && 686cdf0e10cSrcweir !mpDocSh->IsReadOnly()) 687cdf0e10cSrcweir { 688cdf0e10cSrcweir // #97016# II 689cdf0e10cSrcweir const SdrHdlList& rHdlList = mpView->GetHdlList(); 690cdf0e10cSrcweir SdrHdl* pHdl = rHdlList.GetFocusHdl(); 691cdf0e10cSrcweir 692cdf0e10cSrcweir // #109007# 693cdf0e10cSrcweir sal_Bool bIsMoveOfConnectedHandle(sal_False); 694cdf0e10cSrcweir sal_Bool bOldSuppress = false; 695cdf0e10cSrcweir SdrEdgeObj* pEdgeObj = 0L; 696cdf0e10cSrcweir 697cdf0e10cSrcweir if(pHdl && pHdl->GetObj() && pHdl->GetObj()->ISA(SdrEdgeObj) && 0 == pHdl->GetPolyNum()) 698cdf0e10cSrcweir { 699cdf0e10cSrcweir pEdgeObj = (SdrEdgeObj*)pHdl->GetObj(); 700cdf0e10cSrcweir 701cdf0e10cSrcweir if(0L == pHdl->GetPointNum()) 702cdf0e10cSrcweir { 703cdf0e10cSrcweir if(pEdgeObj->GetConnection(sal_True).GetObject()) 704cdf0e10cSrcweir { 705cdf0e10cSrcweir bIsMoveOfConnectedHandle = sal_True; 706cdf0e10cSrcweir } 707cdf0e10cSrcweir } 708cdf0e10cSrcweir if(1L == pHdl->GetPointNum()) 709cdf0e10cSrcweir { 710cdf0e10cSrcweir if(pEdgeObj->GetConnection(sal_False).GetObject()) 711cdf0e10cSrcweir { 712cdf0e10cSrcweir bIsMoveOfConnectedHandle = sal_True; 713cdf0e10cSrcweir } 714cdf0e10cSrcweir } 715cdf0e10cSrcweir } 716cdf0e10cSrcweir 717cdf0e10cSrcweir // #109007# 718cdf0e10cSrcweir if(pEdgeObj) 719cdf0e10cSrcweir { 720cdf0e10cSrcweir // Suppress default connects to inside object and object center 721cdf0e10cSrcweir bOldSuppress = pEdgeObj->GetSuppressDefaultConnect(); 722cdf0e10cSrcweir pEdgeObj->SetSuppressDefaultConnect(sal_True); 723cdf0e10cSrcweir } 724cdf0e10cSrcweir 725cdf0e10cSrcweir // #109007# 726cdf0e10cSrcweir if(bIsMoveOfConnectedHandle) 727cdf0e10cSrcweir { 728cdf0e10cSrcweir sal_uInt16 nMarkHdSiz(mpView->GetMarkHdlSizePixel()); 729cdf0e10cSrcweir Size aHalfConSiz(nMarkHdSiz + 1, nMarkHdSiz + 1); 730cdf0e10cSrcweir aHalfConSiz = mpWindow->PixelToLogic(aHalfConSiz); 731cdf0e10cSrcweir 732cdf0e10cSrcweir if(100 < aHalfConSiz.Width()) 733cdf0e10cSrcweir nX *= aHalfConSiz.Width(); 734cdf0e10cSrcweir else 735cdf0e10cSrcweir nX *= 100; 736cdf0e10cSrcweir 737cdf0e10cSrcweir if(100 < aHalfConSiz.Height()) 738cdf0e10cSrcweir nY *= aHalfConSiz.Height(); 739cdf0e10cSrcweir else 740cdf0e10cSrcweir nY *= 100; 741cdf0e10cSrcweir } 742cdf0e10cSrcweir else if(rKEvt.GetKeyCode().IsMod2()) 743cdf0e10cSrcweir { 744cdf0e10cSrcweir // #97016# move in 1 pixel distance 745cdf0e10cSrcweir Size aLogicSizeOnePixel = (mpWindow) ? mpWindow->PixelToLogic(Size(1,1)) : Size(100, 100); 746cdf0e10cSrcweir nX *= aLogicSizeOnePixel.Width(); 747cdf0e10cSrcweir nY *= aLogicSizeOnePixel.Height(); 748cdf0e10cSrcweir } 749cdf0e10cSrcweir else if(rKEvt.GetKeyCode().IsShift()) 750cdf0e10cSrcweir { 751cdf0e10cSrcweir nX *= 1000; 752cdf0e10cSrcweir nY *= 1000; 753cdf0e10cSrcweir } 754cdf0e10cSrcweir else 755cdf0e10cSrcweir { 756cdf0e10cSrcweir // old, fixed move distance 757cdf0e10cSrcweir nX *= 100; 758cdf0e10cSrcweir nY *= 100; 759cdf0e10cSrcweir } 760cdf0e10cSrcweir 761cdf0e10cSrcweir if(0L == pHdl) 762cdf0e10cSrcweir { 763cdf0e10cSrcweir // #67368# only take action when move is allowed 764cdf0e10cSrcweir if(mpView->IsMoveAllowed()) 765cdf0e10cSrcweir { 766cdf0e10cSrcweir // #90129# restrict movement to WorkArea 767cdf0e10cSrcweir const Rectangle& rWorkArea = mpView->GetWorkArea(); 768cdf0e10cSrcweir 769cdf0e10cSrcweir if(!rWorkArea.IsEmpty()) 770cdf0e10cSrcweir { 771cdf0e10cSrcweir Rectangle aMarkRect(mpView->GetMarkedObjRect()); 772cdf0e10cSrcweir aMarkRect.Move(nX, nY); 773cdf0e10cSrcweir 774cdf0e10cSrcweir if(!aMarkRect.IsInside(rWorkArea)) 775cdf0e10cSrcweir { 776cdf0e10cSrcweir if(aMarkRect.Left() < rWorkArea.Left()) 777cdf0e10cSrcweir { 778cdf0e10cSrcweir nX += rWorkArea.Left() - aMarkRect.Left(); 779cdf0e10cSrcweir } 780cdf0e10cSrcweir 781cdf0e10cSrcweir if(aMarkRect.Right() > rWorkArea.Right()) 782cdf0e10cSrcweir { 783cdf0e10cSrcweir nX -= aMarkRect.Right() - rWorkArea.Right(); 784cdf0e10cSrcweir } 785cdf0e10cSrcweir 786cdf0e10cSrcweir if(aMarkRect.Top() < rWorkArea.Top()) 787cdf0e10cSrcweir { 788cdf0e10cSrcweir nY += rWorkArea.Top() - aMarkRect.Top(); 789cdf0e10cSrcweir } 790cdf0e10cSrcweir 791cdf0e10cSrcweir if(aMarkRect.Bottom() > rWorkArea.Bottom()) 792cdf0e10cSrcweir { 793cdf0e10cSrcweir nY -= aMarkRect.Bottom() - rWorkArea.Bottom(); 794cdf0e10cSrcweir } 795cdf0e10cSrcweir } 796cdf0e10cSrcweir } 797cdf0e10cSrcweir 798cdf0e10cSrcweir // no handle selected 799cdf0e10cSrcweir if(0 != nX || 0 != nY) 800cdf0e10cSrcweir { 801cdf0e10cSrcweir mpView->MoveAllMarked(Size(nX, nY)); 802cdf0e10cSrcweir 803cdf0e10cSrcweir // #97016# II 804cdf0e10cSrcweir mpView->MakeVisible(mpView->GetAllMarkedRect(), *mpWindow); 805cdf0e10cSrcweir } 806cdf0e10cSrcweir } 807cdf0e10cSrcweir } 808cdf0e10cSrcweir else 809cdf0e10cSrcweir { 810cdf0e10cSrcweir // move handle with index nHandleIndex 811cdf0e10cSrcweir if(pHdl && (nX || nY)) 812cdf0e10cSrcweir { 813cdf0e10cSrcweir // now move the Handle (nX, nY) 814cdf0e10cSrcweir Point aStartPoint(pHdl->GetPos()); 815cdf0e10cSrcweir Point aEndPoint(pHdl->GetPos() + Point(nX, nY)); 816cdf0e10cSrcweir const SdrDragStat& rDragStat = mpView->GetDragStat(); 817cdf0e10cSrcweir 818cdf0e10cSrcweir // start dragging 819cdf0e10cSrcweir mpView->BegDragObj(aStartPoint, 0, pHdl, 0); 820cdf0e10cSrcweir 821cdf0e10cSrcweir if(mpView->IsDragObj()) 822cdf0e10cSrcweir { 823cdf0e10cSrcweir FASTBOOL bWasNoSnap = rDragStat.IsNoSnap(); 824cdf0e10cSrcweir sal_Bool bWasSnapEnabled = mpView->IsSnapEnabled(); 825cdf0e10cSrcweir 826cdf0e10cSrcweir // switch snapping off 827cdf0e10cSrcweir if(!bWasNoSnap) 828cdf0e10cSrcweir ((SdrDragStat&)rDragStat).SetNoSnap(sal_True); 829cdf0e10cSrcweir if(bWasSnapEnabled) 830cdf0e10cSrcweir mpView->SetSnapEnabled(sal_False); 831cdf0e10cSrcweir 832cdf0e10cSrcweir mpView->MovAction(aEndPoint); 833cdf0e10cSrcweir mpView->EndDragObj(); 834cdf0e10cSrcweir 835cdf0e10cSrcweir // restore snap 836cdf0e10cSrcweir if(!bWasNoSnap) 837cdf0e10cSrcweir ((SdrDragStat&)rDragStat).SetNoSnap(bWasNoSnap); 838cdf0e10cSrcweir if(bWasSnapEnabled) 839cdf0e10cSrcweir mpView->SetSnapEnabled(bWasSnapEnabled); 840cdf0e10cSrcweir } 841cdf0e10cSrcweir 842cdf0e10cSrcweir // make moved handle visible 843cdf0e10cSrcweir Rectangle aVisRect(aEndPoint - Point(100, 100), Size(200, 200)); 844cdf0e10cSrcweir mpView->MakeVisible(aVisRect, *mpWindow); 845cdf0e10cSrcweir } 846cdf0e10cSrcweir } 847cdf0e10cSrcweir 848cdf0e10cSrcweir // #109007# 849cdf0e10cSrcweir if(pEdgeObj) 850cdf0e10cSrcweir { 851cdf0e10cSrcweir // Restore original suppress value 852cdf0e10cSrcweir pEdgeObj->SetSuppressDefaultConnect(bOldSuppress); 853cdf0e10cSrcweir } 854cdf0e10cSrcweir } 855cdf0e10cSrcweir else 856cdf0e10cSrcweir { 857cdf0e10cSrcweir // Seite scrollen 858cdf0e10cSrcweir ScrollStart(); 859cdf0e10cSrcweir mpViewShell->ScrollLines(nX, nY); 860cdf0e10cSrcweir ScrollEnd(); 861cdf0e10cSrcweir } 862cdf0e10cSrcweir 863cdf0e10cSrcweir bReturn = sal_True; 864cdf0e10cSrcweir } 865cdf0e10cSrcweir } 866cdf0e10cSrcweir break; 867cdf0e10cSrcweir } 868cdf0e10cSrcweir 869cdf0e10cSrcweir if (bReturn) 870cdf0e10cSrcweir { 871cdf0e10cSrcweir mpWindow->ReleaseMouse(); 872cdf0e10cSrcweir } 873cdf0e10cSrcweir 874cdf0e10cSrcweir // #98198# when a text-editable object is selected and the 875cdf0e10cSrcweir // input character is printable, activate text edit on that object 876cdf0e10cSrcweir // and feed character to object 877cdf0e10cSrcweir if(!bReturn && !mpDocSh->IsReadOnly()) 878cdf0e10cSrcweir { 879cdf0e10cSrcweir if(!mpView->IsTextEdit() && mpViewShell) 880cdf0e10cSrcweir { 881cdf0e10cSrcweir const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); 882cdf0e10cSrcweir 883cdf0e10cSrcweir if(1 == rMarkList.GetMarkCount()) 884cdf0e10cSrcweir { 885cdf0e10cSrcweir SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); 886cdf0e10cSrcweir 887*a5258243SPedro Giffuni // #i118485# allow TextInput for OLEs, too 888*a5258243SPedro Giffuni if(pObj->ISA(SdrTextObj) && pObj->HasTextEdit()) 889cdf0e10cSrcweir { 890cdf0e10cSrcweir // #98533# use common IsSimpleCharInput from 891cdf0e10cSrcweir // the EditEngine. 892cdf0e10cSrcweir sal_Bool bPrintable(EditEngine::IsSimpleCharInput(rKEvt)); 893cdf0e10cSrcweir 894cdf0e10cSrcweir if(bPrintable) 895cdf0e10cSrcweir { 896cdf0e10cSrcweir // try to activate textedit mode for the selected object 897cdf0e10cSrcweir SfxStringItem aInputString(SID_ATTR_CHAR, String(rKEvt.GetCharCode())); 898cdf0e10cSrcweir 899cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( 900cdf0e10cSrcweir SID_ATTR_CHAR, 901cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON, 902cdf0e10cSrcweir &aInputString, 903cdf0e10cSrcweir 0L); 904cdf0e10cSrcweir 905cdf0e10cSrcweir // consumed 906cdf0e10cSrcweir bReturn = sal_True; 907cdf0e10cSrcweir } 908cdf0e10cSrcweir } 909cdf0e10cSrcweir } 910cdf0e10cSrcweir else 911cdf0e10cSrcweir { 912cdf0e10cSrcweir // #99039# test if there is a title object there. If yes, try to 913cdf0e10cSrcweir // set it to edit mode and start typing... 914cdf0e10cSrcweir if(mpViewShell->ISA(DrawViewShell) 915cdf0e10cSrcweir && EditEngine::IsSimpleCharInput(rKEvt)) 916cdf0e10cSrcweir { 917cdf0e10cSrcweir DrawViewShell* pDrawViewShell = 918cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell); 919cdf0e10cSrcweir SdPage* pActualPage = pDrawViewShell->GetActualPage(); 920cdf0e10cSrcweir SdrTextObj* pCandidate = 0L; 921cdf0e10cSrcweir 922cdf0e10cSrcweir if(pActualPage) 923cdf0e10cSrcweir { 924cdf0e10cSrcweir SdrObjListIter aIter(*pActualPage, IM_DEEPNOGROUPS); 925cdf0e10cSrcweir 926cdf0e10cSrcweir while(aIter.IsMore() && !pCandidate) 927cdf0e10cSrcweir { 928cdf0e10cSrcweir SdrObject* pObj = aIter.Next(); 929cdf0e10cSrcweir 930cdf0e10cSrcweir if(pObj && pObj->ISA(SdrTextObj)) 931cdf0e10cSrcweir { 932cdf0e10cSrcweir sal_uInt32 nInv(pObj->GetObjInventor()); 933cdf0e10cSrcweir sal_uInt16 nKnd(pObj->GetObjIdentifier()); 934cdf0e10cSrcweir 935cdf0e10cSrcweir if(SdrInventor == nInv && OBJ_TITLETEXT == nKnd) 936cdf0e10cSrcweir { 937cdf0e10cSrcweir pCandidate = (SdrTextObj*)pObj; 938cdf0e10cSrcweir } 939cdf0e10cSrcweir } 940cdf0e10cSrcweir } 941cdf0e10cSrcweir } 942cdf0e10cSrcweir 943cdf0e10cSrcweir // when candidate found and candidate is untouched, start editing text... 944cdf0e10cSrcweir if(pCandidate && pCandidate->IsEmptyPresObj()) 945cdf0e10cSrcweir { 946cdf0e10cSrcweir mpView->UnMarkAll(); 947cdf0e10cSrcweir mpView->MarkObj(pCandidate, mpView->GetSdrPageView()); 948cdf0e10cSrcweir SfxStringItem aInputString(SID_ATTR_CHAR, String(rKEvt.GetCharCode())); 949cdf0e10cSrcweir 950cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute( 951cdf0e10cSrcweir SID_ATTR_CHAR, 952cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON, 953cdf0e10cSrcweir &aInputString, 954cdf0e10cSrcweir 0L); 955cdf0e10cSrcweir 956cdf0e10cSrcweir // consumed 957cdf0e10cSrcweir bReturn = sal_True; 958cdf0e10cSrcweir } 959cdf0e10cSrcweir } 960cdf0e10cSrcweir } 961cdf0e10cSrcweir } 962cdf0e10cSrcweir } 963cdf0e10cSrcweir 964cdf0e10cSrcweir return(bReturn); 965cdf0e10cSrcweir } 966cdf0e10cSrcweir 967cdf0e10cSrcweir sal_Bool FuPoor::MouseMove(const MouseEvent& ) 968cdf0e10cSrcweir { 969cdf0e10cSrcweir return sal_False; 970cdf0e10cSrcweir } 971cdf0e10cSrcweir 972cdf0e10cSrcweir // #97016# II 973cdf0e10cSrcweir void FuPoor::SelectionHasChanged() 974cdf0e10cSrcweir { 975cdf0e10cSrcweir const SdrHdlList& rHdlList = mpView->GetHdlList(); 976cdf0e10cSrcweir ((SdrHdlList&)rHdlList).ResetFocusHdl(); 977cdf0e10cSrcweir } 978cdf0e10cSrcweir 979cdf0e10cSrcweir /************************************************************************* 980cdf0e10cSrcweir |* 981cdf0e10cSrcweir |* Cut object to clipboard 982cdf0e10cSrcweir |* 983cdf0e10cSrcweir \************************************************************************/ 984cdf0e10cSrcweir 985cdf0e10cSrcweir void FuPoor::DoCut() 986cdf0e10cSrcweir { 987cdf0e10cSrcweir if (mpView) 988cdf0e10cSrcweir { 989cdf0e10cSrcweir mpView->DoCut(mpWindow); 990cdf0e10cSrcweir } 991cdf0e10cSrcweir } 992cdf0e10cSrcweir 993cdf0e10cSrcweir /************************************************************************* 994cdf0e10cSrcweir |* 995cdf0e10cSrcweir |* Copy object to clipboard 996cdf0e10cSrcweir |* 997cdf0e10cSrcweir \************************************************************************/ 998cdf0e10cSrcweir 999cdf0e10cSrcweir void FuPoor::DoCopy() 1000cdf0e10cSrcweir { 1001cdf0e10cSrcweir if (mpView) 1002cdf0e10cSrcweir { 1003cdf0e10cSrcweir mpView->DoCopy(mpWindow); 1004cdf0e10cSrcweir } 1005cdf0e10cSrcweir } 1006cdf0e10cSrcweir 1007cdf0e10cSrcweir /************************************************************************* 1008cdf0e10cSrcweir |* 1009cdf0e10cSrcweir |* Paste object from clipboard 1010cdf0e10cSrcweir |* 1011cdf0e10cSrcweir \************************************************************************/ 1012cdf0e10cSrcweir 1013cdf0e10cSrcweir void FuPoor::DoPaste() 1014cdf0e10cSrcweir { 1015cdf0e10cSrcweir if (mpView) 1016cdf0e10cSrcweir { 1017cdf0e10cSrcweir mpView->DoPaste(mpWindow); 1018cdf0e10cSrcweir } 1019cdf0e10cSrcweir } 1020cdf0e10cSrcweir 1021cdf0e10cSrcweir /************************************************************************* 1022cdf0e10cSrcweir |* 1023cdf0e10cSrcweir |* Timer-Handler fuer Drag&Drop 1024cdf0e10cSrcweir |* 1025cdf0e10cSrcweir \************************************************************************/ 1026cdf0e10cSrcweir 1027cdf0e10cSrcweir IMPL_LINK( FuPoor, DragHdl, Timer *, EMPTYARG ) 1028cdf0e10cSrcweir { 1029cdf0e10cSrcweir if( mpView ) 1030cdf0e10cSrcweir { 1031cdf0e10cSrcweir sal_uInt16 nHitLog = sal_uInt16 ( mpWindow->PixelToLogic(Size(HITPIX,0)).Width() ); 1032cdf0e10cSrcweir SdrHdl* pHdl = mpView->PickHandle(aMDPos); 1033cdf0e10cSrcweir 1034cdf0e10cSrcweir if ( pHdl==NULL && mpView->IsMarkedHit(aMDPos, nHitLog) 1035cdf0e10cSrcweir && !mpView->IsPresObjSelected(sal_False, sal_True) ) 1036cdf0e10cSrcweir { 1037cdf0e10cSrcweir mpWindow->ReleaseMouse(); 1038cdf0e10cSrcweir bIsInDragMode = sal_True; 1039cdf0e10cSrcweir mpView->StartDrag( aMDPos, mpWindow ); 1040cdf0e10cSrcweir } 1041cdf0e10cSrcweir } 1042cdf0e10cSrcweir return 0; 1043cdf0e10cSrcweir } 1044cdf0e10cSrcweir 1045cdf0e10cSrcweir /************************************************************************* 1046cdf0e10cSrcweir |* 1047cdf0e10cSrcweir |* Command-event 1048cdf0e10cSrcweir |* 1049cdf0e10cSrcweir \************************************************************************/ 1050cdf0e10cSrcweir 1051cdf0e10cSrcweir sal_Bool FuPoor::Command(const CommandEvent& rCEvt) 1052cdf0e10cSrcweir { 1053cdf0e10cSrcweir return( mpView->Command(rCEvt,mpWindow) ); 1054cdf0e10cSrcweir } 1055cdf0e10cSrcweir 1056cdf0e10cSrcweir /************************************************************************* 1057cdf0e10cSrcweir |* 1058cdf0e10cSrcweir |* Timer-Handler fuer Fensterscrolling 1059cdf0e10cSrcweir |* 1060cdf0e10cSrcweir \************************************************************************/ 1061cdf0e10cSrcweir 1062cdf0e10cSrcweir IMPL_LINK_INLINE_START( FuPoor, DelayHdl, Timer *, EMPTYARG ) 1063cdf0e10cSrcweir { 1064cdf0e10cSrcweir aDelayToScrollTimer.Stop (); 1065cdf0e10cSrcweir bScrollable = sal_True; 1066cdf0e10cSrcweir 1067cdf0e10cSrcweir Point aPnt(mpWindow->GetPointerPosPixel()); 1068cdf0e10cSrcweir 1069cdf0e10cSrcweir // #95491# use remembered MouseButton state to create correct 1070cdf0e10cSrcweir // MouseEvents for this artifical MouseMove. 1071cdf0e10cSrcweir MouseMove(MouseEvent(aPnt, 1, 0, GetMouseButtonCode())); 1072cdf0e10cSrcweir 1073cdf0e10cSrcweir return 0; 1074cdf0e10cSrcweir } 1075cdf0e10cSrcweir IMPL_LINK_INLINE_END( FuPoor, DelayHdl, Timer *, pTimer ) 1076cdf0e10cSrcweir 1077cdf0e10cSrcweir /************************************************************************* 1078cdf0e10cSrcweir |* 1079cdf0e10cSrcweir |* Handler fuer Maustaste 1080cdf0e10cSrcweir |* 1081cdf0e10cSrcweir \************************************************************************/ 1082cdf0e10cSrcweir 1083cdf0e10cSrcweir sal_Bool FuPoor::MouseButtonUp (const MouseEvent& rMEvt) 1084cdf0e10cSrcweir { 1085cdf0e10cSrcweir // #95491# remember button state for creation of own MouseEvents 1086cdf0e10cSrcweir SetMouseButtonCode(rMEvt.GetButtons()); 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir aDelayToScrollTimer.Stop (); 1089cdf0e10cSrcweir return bScrollable = 1090cdf0e10cSrcweir bDelayActive = sal_False; 1091cdf0e10cSrcweir } 1092cdf0e10cSrcweir 1093cdf0e10cSrcweir sal_Bool FuPoor::MouseButtonDown(const MouseEvent& rMEvt) 1094cdf0e10cSrcweir { 1095cdf0e10cSrcweir // #95491# remember button state for creation of own MouseEvents 1096cdf0e10cSrcweir SetMouseButtonCode(rMEvt.GetButtons()); 1097cdf0e10cSrcweir 1098cdf0e10cSrcweir return sal_False; 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir /************************************************************************* 1102cdf0e10cSrcweir |* 1103cdf0e10cSrcweir |* Handler fuer Maustaste 1104cdf0e10cSrcweir |* 1105cdf0e10cSrcweir \************************************************************************/ 1106cdf0e10cSrcweir 1107cdf0e10cSrcweir void FuPoor::StartDelayToScrollTimer () 1108cdf0e10cSrcweir { 1109cdf0e10cSrcweir bDelayActive = sal_True; 1110cdf0e10cSrcweir aDelayToScrollTimer.Start (); 1111cdf0e10cSrcweir } 1112cdf0e10cSrcweir 1113cdf0e10cSrcweir /************************************************************************* 1114cdf0e10cSrcweir |* 1115cdf0e10cSrcweir |* Help-event 1116cdf0e10cSrcweir |* 1117cdf0e10cSrcweir \************************************************************************/ 1118cdf0e10cSrcweir 1119cdf0e10cSrcweir sal_Bool FuPoor::RequestHelp(const HelpEvent& rHEvt) 1120cdf0e10cSrcweir { 1121cdf0e10cSrcweir sal_Bool bReturn = sal_False; 1122cdf0e10cSrcweir 1123cdf0e10cSrcweir SdrPageView* pPV = mpView->GetSdrPageView(); 1124cdf0e10cSrcweir 1125cdf0e10cSrcweir if (pPV) 1126cdf0e10cSrcweir { 1127cdf0e10cSrcweir SdPage* pPage = (SdPage*) pPV->GetPage(); 1128cdf0e10cSrcweir 1129cdf0e10cSrcweir if (pPage) 1130cdf0e10cSrcweir { 1131cdf0e10cSrcweir bReturn = pPage->RequestHelp(mpWindow, mpView, rHEvt); 1132cdf0e10cSrcweir } 1133cdf0e10cSrcweir } 1134cdf0e10cSrcweir 1135cdf0e10cSrcweir return(bReturn); 1136cdf0e10cSrcweir } 1137cdf0e10cSrcweir 1138cdf0e10cSrcweir void FuPoor::Paint(const Rectangle&, ::sd::Window* ) 1139cdf0e10cSrcweir { 1140cdf0e10cSrcweir } 1141cdf0e10cSrcweir 1142cdf0e10cSrcweir /************************************************************************* 1143cdf0e10cSrcweir |* 1144cdf0e10cSrcweir |* Request verarbeiten 1145cdf0e10cSrcweir |* 1146cdf0e10cSrcweir \************************************************************************/ 1147cdf0e10cSrcweir 1148cdf0e10cSrcweir void FuPoor::ReceiveRequest(SfxRequest& rReq) 1149cdf0e10cSrcweir { 1150cdf0e10cSrcweir const SfxItemSet* pSet = rReq.GetArgs(); 1151cdf0e10cSrcweir 1152cdf0e10cSrcweir if (pSet) 1153cdf0e10cSrcweir { 1154cdf0e10cSrcweir if( pSet->GetItemState( nSlotId ) == SFX_ITEM_SET ) 1155cdf0e10cSrcweir { 1156cdf0e10cSrcweir const SfxPoolItem& rItem = pSet->Get( nSlotId ); 1157cdf0e10cSrcweir 1158cdf0e10cSrcweir if( rItem.ISA( SfxAllEnumItem ) ) 1159cdf0e10cSrcweir { 1160cdf0e10cSrcweir nSlotValue = ( ( const SfxAllEnumItem& ) rItem ).GetValue(); 1161cdf0e10cSrcweir } 1162cdf0e10cSrcweir } 1163cdf0e10cSrcweir } 1164cdf0e10cSrcweir } 1165cdf0e10cSrcweir 1166cdf0e10cSrcweir /************************************************************************* 1167cdf0e10cSrcweir |* 1168cdf0e10cSrcweir |* #97016# 1169cdf0e10cSrcweir |* 1170cdf0e10cSrcweir \************************************************************************/ 1171cdf0e10cSrcweir 1172cdf0e10cSrcweir SdrObject* FuPoor::CreateDefaultObject(const sal_uInt16, const Rectangle& ) 1173cdf0e10cSrcweir { 1174cdf0e10cSrcweir // empty base implementation 1175cdf0e10cSrcweir return 0L; 1176cdf0e10cSrcweir } 1177cdf0e10cSrcweir 1178cdf0e10cSrcweir void FuPoor::ImpForceQuadratic(Rectangle& rRect) 1179cdf0e10cSrcweir { 1180cdf0e10cSrcweir if(rRect.GetWidth() > rRect.GetHeight()) 1181cdf0e10cSrcweir { 1182cdf0e10cSrcweir rRect = Rectangle( 1183cdf0e10cSrcweir Point(rRect.Left() + ((rRect.GetWidth() - rRect.GetHeight()) / 2), rRect.Top()), 1184cdf0e10cSrcweir Size(rRect.GetHeight(), rRect.GetHeight())); 1185cdf0e10cSrcweir } 1186cdf0e10cSrcweir else 1187cdf0e10cSrcweir { 1188cdf0e10cSrcweir rRect = Rectangle( 1189cdf0e10cSrcweir Point(rRect.Left(), rRect.Top() + ((rRect.GetHeight() - rRect.GetWidth()) / 2)), 1190cdf0e10cSrcweir Size(rRect.GetWidth(), rRect.GetWidth())); 1191cdf0e10cSrcweir } 1192cdf0e10cSrcweir } 1193cdf0e10cSrcweir 1194cdf0e10cSrcweir 1195cdf0e10cSrcweir 1196cdf0e10cSrcweir 1197cdf0e10cSrcweir void FuPoor::SwitchLayer (sal_Int32 nOffset) 1198cdf0e10cSrcweir { 1199cdf0e10cSrcweir if(mpViewShell && mpViewShell->ISA(DrawViewShell)) 1200cdf0e10cSrcweir { 1201cdf0e10cSrcweir DrawViewShell* pDrawViewShell = 1202cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell); 1203cdf0e10cSrcweir 1204cdf0e10cSrcweir // Calculate the new index. 1205cdf0e10cSrcweir sal_Int32 nIndex = pDrawViewShell->GetActiveTabLayerIndex() + nOffset; 1206cdf0e10cSrcweir 1207cdf0e10cSrcweir // Make sure the new index lies inside the range of valid indices. 1208cdf0e10cSrcweir if (nIndex < 0) 1209cdf0e10cSrcweir nIndex = 0; 1210cdf0e10cSrcweir else if (nIndex >= pDrawViewShell->GetTabLayerCount ()) 1211cdf0e10cSrcweir nIndex = pDrawViewShell->GetTabLayerCount() - 1; 1212cdf0e10cSrcweir 1213cdf0e10cSrcweir // Set the new active layer. 1214cdf0e10cSrcweir if (nIndex != pDrawViewShell->GetActiveTabLayerIndex ()) 1215cdf0e10cSrcweir { 1216cdf0e10cSrcweir LayerTabBar* pLayerTabControl = 1217cdf0e10cSrcweir static_cast<DrawViewShell*>(mpViewShell)->GetLayerTabControl(); 1218cdf0e10cSrcweir if (pLayerTabControl != NULL) 1219cdf0e10cSrcweir pLayerTabControl->SendDeactivatePageEvent (); 1220cdf0e10cSrcweir 1221cdf0e10cSrcweir pDrawViewShell->SetActiveTabLayerIndex (nIndex); 1222cdf0e10cSrcweir 1223cdf0e10cSrcweir if (pLayerTabControl != NULL) 1224cdf0e10cSrcweir pLayerTabControl->SendActivatePageEvent (); 1225cdf0e10cSrcweir } 1226cdf0e10cSrcweir } 1227cdf0e10cSrcweir } 1228cdf0e10cSrcweir 1229cdf0e10cSrcweir /** is called when the currenct function should be aborted. <p> 1230cdf0e10cSrcweir This is used when a function gets a KEY_ESCAPE but can also 1231cdf0e10cSrcweir be called directly. 1232cdf0e10cSrcweir 1233cdf0e10cSrcweir @returns true if a active function was aborted 1234cdf0e10cSrcweir */ 1235cdf0e10cSrcweir bool FuPoor::cancel() 1236cdf0e10cSrcweir { 1237cdf0e10cSrcweir if ( !this->ISA(FuSelection) ) 1238cdf0e10cSrcweir { 1239cdf0e10cSrcweir mpViewShell->GetViewFrame()->GetDispatcher()->Execute(SID_OBJECT_SELECT, SFX_CALLMODE_ASYNCHRON); 1240cdf0e10cSrcweir return true; 1241cdf0e10cSrcweir } 1242cdf0e10cSrcweir 1243cdf0e10cSrcweir return false; 1244cdf0e10cSrcweir } 1245cdf0e10cSrcweir 1246cdf0e10cSrcweir // #i33136# 1247cdf0e10cSrcweir bool FuPoor::doConstructOrthogonal() const 1248cdf0e10cSrcweir { 1249cdf0e10cSrcweir return ( 1250cdf0e10cSrcweir SID_DRAW_XLINE == nSlotId || 1251cdf0e10cSrcweir SID_DRAW_CIRCLEARC == nSlotId || 1252cdf0e10cSrcweir SID_DRAW_SQUARE == nSlotId || 1253cdf0e10cSrcweir SID_DRAW_SQUARE_NOFILL == nSlotId || 1254cdf0e10cSrcweir SID_DRAW_SQUARE_ROUND == nSlotId || 1255cdf0e10cSrcweir SID_DRAW_SQUARE_ROUND_NOFILL == nSlotId || 1256cdf0e10cSrcweir SID_DRAW_CIRCLE == nSlotId || 1257cdf0e10cSrcweir SID_DRAW_CIRCLE_NOFILL == nSlotId || 1258cdf0e10cSrcweir SID_DRAW_CIRCLEPIE == nSlotId || 1259cdf0e10cSrcweir SID_DRAW_CIRCLEPIE_NOFILL == nSlotId || 1260cdf0e10cSrcweir SID_DRAW_CIRCLECUT == nSlotId || 1261cdf0e10cSrcweir SID_DRAW_CIRCLECUT_NOFILL == nSlotId || 1262cdf0e10cSrcweir SID_DRAW_XPOLYGON == nSlotId || 1263cdf0e10cSrcweir SID_DRAW_XPOLYGON_NOFILL == nSlotId || 1264cdf0e10cSrcweir SID_3D_CUBE == nSlotId || 1265cdf0e10cSrcweir SID_3D_SPHERE == nSlotId || 1266cdf0e10cSrcweir SID_3D_SHELL == nSlotId || 1267cdf0e10cSrcweir SID_3D_HALF_SPHERE == nSlotId || 1268cdf0e10cSrcweir SID_3D_TORUS == nSlotId || 1269cdf0e10cSrcweir SID_3D_CYLINDER == nSlotId || 1270cdf0e10cSrcweir SID_3D_CONE == nSlotId || 1271cdf0e10cSrcweir SID_3D_PYRAMID == nSlotId); 1272cdf0e10cSrcweir } 1273cdf0e10cSrcweir 1274cdf0e10cSrcweir void FuPoor::DoExecute( SfxRequest& ) 1275cdf0e10cSrcweir { 1276cdf0e10cSrcweir } 1277cdf0e10cSrcweir 1278cdf0e10cSrcweir } // end of namespace sd 1279