LibreOffice Module sc (master) 1
fusel.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#include <com/sun/star/embed/EmbedVerbs.hpp>
21#include <editeng/flditem.hxx>
22#include <svx/svddrgmt.hxx>
23#include <svx/svdoole2.hxx>
24#include <svx/svdotext.hxx>
25#include <sfx2/dispatch.hxx>
26#include <vcl/imapobj.hxx>
27#include <svx/svdouno.hxx>
28#include <svx/svdomedia.hxx>
29#include <svx/svdpagv.hxx>
30#include <svx/ImageMapInfo.hxx>
31#include <editeng/outlobj.hxx>
32#include <sfx2/app.hxx>
33#include <sfx2/ipclient.hxx>
34#include <sfx2/viewfrm.hxx>
35#include <comphelper/lok.hxx>
36
37#include <fusel.hxx>
38#include <sc.hrc>
39#include <fudraw.hxx>
40#include <futext.hxx>
41#include <drawview.hxx>
42#include <tabvwsh.hxx>
43#include <drwlayer.hxx>
44#include <userdat.hxx>
45#include <scmod.hxx>
46#include <charthelper.hxx>
47#include <docuno.hxx>
48#include <docsh.hxx>
49
50// maximal permitted mouse movement to start Drag&Drop
52#define SC_MAXDRAGMOVE 3
53// Min necessary mouse motion for normal dragging
54#define SC_MINDRAGMOVE 2
55
56using namespace com::sun::star;
57
59 SdrModel* pDoc, const SfxRequest& rReq)
60 : FuDraw(rViewSh, pWin, pViewP, pDoc, rReq)
61{
62}
63
65{
66}
67
69{
70 // remember button state for creation of own MouseEvents
72 const bool bSelectionOnly = rMEvt.IsRight();
73 if ( pView->IsAction() )
74 {
75 if ( bSelectionOnly )
77 return true;
78 }
79
80 bIsInDragMode = false; // somewhere it has to be reset (#50033#)
81
82 bool bReturn = FuDraw::MouseButtonDown(rMEvt);
83 auto aLogicPosition = rMEvt.getLogicPosition();
84 if (aLogicPosition)
85 aMDPos = *aLogicPosition;
86 else
87 aMDPos = pWindow->PixelToLogic(rMEvt.GetPosPixel());
88
90 {
91 ScViewData& rViewData = rViewShell.GetViewData();
92 ScDocument& rDocument = rViewData.GetDocument();
93 if (rDocument.IsNegativePage(rViewData.GetTabNo()))
94 aMDPos.setX(-aMDPos.X());
95 }
96
97 if ( rMEvt.IsLeft() )
98 {
99 SdrHdl* pHdl = pView->PickHandle(aMDPos);
100
101 if ( pHdl!=nullptr || pView->IsMarkedHit(aMDPos) )
102 {
103 // Determine if this is the tail of a SdrCaptionObj i.e.
104 // we need to disable the drag option on the tail of a note
105 // object. Also, disable the ability to use the circular
106 // drag of a note object.
107 bool bDrag = false;
108 const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
109 if( rMarkList.GetMarkCount() == 1 )
110 {
111 SdrObject* pMarkedObj = rMarkList.GetMark( 0 )->GetMarkedSdrObj();
112 if( ScDrawLayer::IsNoteCaption( pMarkedObj ) )
113 {
114 // move using the valid caption handles for note text box.
115 if(pHdl && (pHdl->GetKind() != SdrHdlKind::Poly && pHdl->GetKind() != SdrHdlKind::Circle))
116 bDrag = true;
117 // move the complete note box.
118 else if(!pHdl)
119 bDrag = true;
120 }
121 else
122 bDrag = true; // different object
123 }
124 else
125 bDrag = true; // several objects
126
127 if ( bDrag )
128 {
130 if (pView->BegDragObj(aMDPos, nullptr, pHdl))
132 bReturn = true;
133 }
134 }
135 else
136 {
137 SdrPageView* pPV = nullptr;
138 bool bAlt = rMEvt.IsMod2();
139 SdrObject* pObj = !bAlt ? pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::PICKMACRO) : nullptr;
140 if (pObj)
141 {
142 pView->BegMacroObj(aMDPos, pObj, pPV, pWindow);
143 bReturn = true;
144 }
145 else
146 {
147 OUString sURL, sTarget;
148 pObj = !bAlt ? pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER) : nullptr;
149 if (pObj)
150 {
151 // Support for imported Excel docs
152 // Excel is of course not consistent and allows
153 // a hyperlink to be assigned for an object group
154 // and even though the hyperlink is exported in the Escher layer
155 // its never used, when dealing with a group object the link
156 // associated with the clicked object is used only
157
158 // additionally you can also select a macro in Excel for a grouped
159 // objects and this *usually* results in the macro being set
160 // for the elements in the group and no macro is exported
161 // for the group itself ( this however is not always true )
162 // if a macro and hlink are defined favour the hlink
163 // If a group object has no hyperlink use the hyperlink of the
164 // object clicked
165
166 if ( pObj->IsGroupObject() )
167 {
168 ScMacroInfo* pTmpInfo = ScDrawLayer::GetMacroInfo( pObj );
169 if ( !pTmpInfo || pTmpInfo->GetMacro().isEmpty() )
170 {
171 SdrObject* pHit = pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::DEEP);
172 if (pHit)
173 pObj = pHit;
174 }
175 }
176
177 ScMacroInfo* pInfo = ScDrawLayer::GetMacroInfo( pObj, true );
178 // For interoperability favour links over macros if both are defined
179 if ( !pObj->getHyperlink().isEmpty() )
180 {
181 sURL = pObj->getHyperlink();
182 }
183 else if ( !pInfo->GetMacro().isEmpty() )
184 {
186 if ( pObjSh && SfxApplication::IsXScriptURL( pInfo->GetMacro() ) )
187 {
188 uno::Reference< beans::XPropertySet > xProps( pObj->getUnoShape(), uno::UNO_QUERY );
189 uno::Any aCaller;
190 if ( xProps.is() )
191 {
192 try
193 {
194 aCaller = xProps->getPropertyValue("Name");
195 }
196 catch( uno::Exception& ) {}
197 }
198 uno::Any aRet;
199 uno::Sequence< sal_Int16 > aOutArgsIndex;
200 uno::Sequence< uno::Any > aOutArgs;
201 uno::Sequence< uno::Any > aInArgs;
202 pObjSh->CallXScript( pInfo->GetMacro(),
203 aInArgs, aRet, aOutArgsIndex, aOutArgs, true, &aCaller );
205 return true; // no CaptureMouse etc.
206 }
207 }
208 }
209
210 // URL / ImageMap
211
212 SdrViewEvent aVEvt;
213 if ( !bAlt &&
214 pView->PickAnything( rMEvt, SdrMouseEventKind::BUTTONDOWN, aVEvt ) != SdrHitKind::NONE &&
215 aVEvt.mpObj != nullptr )
216 {
217 if ( SvxIMapInfo::GetIMapInfo( aVEvt.mpObj ) ) // ImageMap
218 {
219 const IMapObject* pIMapObj =
220 SvxIMapInfo::GetHitIMapObject( aVEvt.mpObj, aMDPos, pWindow->GetOutDev() );
221 if ( pIMapObj && !pIMapObj->GetURL().isEmpty() )
222 {
223 sURL = pIMapObj->GetURL();
224 sTarget = pIMapObj->GetTarget();
225 }
226 }
227 if ( aVEvt.meEvent == SdrEventKind::ExecuteUrl && aVEvt.mpURLField ) // URL
228 {
229 sURL = aVEvt.mpURLField->GetURL();
230 sTarget = aVEvt.mpURLField->GetTargetFrame();
231 }
232 }
233
234 // open hyperlink, if found at object or in object's text
235 // Fragments pointing into the current document should be always opened.
236 if ( !sURL.isEmpty() && (ScGlobal::ShouldOpenURL() || sURL.startsWith("#")) )
237 {
238 ScGlobal::OpenURL( sURL, sTarget );
240 return true; // no CaptureMouse etc.
241 }
242
243 // Is another object being edited in this view?
244 // (Editing is ended in MarkListHasChanged - test before UnmarkAll)
246 bool bWasOleActive = ( pClient && pClient->IsObjectInPlaceActive() );
247
248 // Selection
249
250 // do not allow multiselection with note caption
251 bool bCaptionClicked = IsNoteCaptionClicked( aMDPos );
252 if ( !rMEvt.IsShift() || bCaptionClicked || IsNoteCaptionMarked() )
253 pView->UnmarkAll();
254
255 /* Unlock internal layer, if a note caption is clicked. The
256 layer will be relocked in ScDrawView::MarkListHasChanged(). */
257 if( bCaptionClicked )
259
260 // try to select the clicked object
261 if ( pView->MarkObj( aMDPos, -2, false, rMEvt.IsMod1() ) )
262 {
263
264 // move object
265
267 {
268 // Don't start drag timer if inplace editing of an OLE object
269 // was just ended with this mouse click - the view will be moved
270 // (different tool bars) and the object that was clicked on would
271 // be moved unintentionally.
272 if ( !bWasOleActive )
274
275 pHdl=pView->PickHandle(aMDPos);
276 pView->BegDragObj(aMDPos, nullptr, pHdl);
277 bReturn = true;
278 }
279 else // object at the edge
281 bReturn = true;
282 }
283 else
284 {
286 {
287
288 // select object
289
291 bReturn = true;
292 }
293 }
294 }
295 }
296
297 }
298
299 if (!bIsInDragMode)
300 {
301 // VC calls CaptureMouse itself
302 pWindow->CaptureMouse();
303 ForcePointer(&rMEvt);
304 }
305
306 return bReturn;
307}
308
310{
311 bool bReturn = FuDraw::MouseMove(rMEvt);
312
313 if (aDragTimer.IsActive() )
314 {
315 Point aOldPixel = pWindow->LogicToPixel( aMDPos );
316 Point aNewPixel = rMEvt.GetPosPixel();
317 if ( std::abs( aOldPixel.X() - aNewPixel.X() ) > SC_MAXDRAGMOVE ||
318 std::abs( aOldPixel.Y() - aNewPixel.Y() ) > SC_MAXDRAGMOVE )
320 }
321
322 if ( pView->IsAction() )
323 {
324 Point aPix(rMEvt.GetPosPixel());
325 Point aPnt(pWindow->PixelToLogic(aPix));
326
327 ForceScroll(aPix);
328 pView->MovAction(aPnt);
329 bReturn = true;
330 }
331
332 ForcePointer(&rMEvt);
333
334 return bReturn;
335}
336
338{
339 // remember button state for creation of own MouseEvents
341
342 bool bReturn = FuDraw::MouseButtonUp(rMEvt);
343 bool bOle = rViewShell.GetViewFrame()->GetFrame().IsInPlace();
344
345 SdrObject* pObj = nullptr;
346 if (aDragTimer.IsActive() )
347 {
349 }
350
351 sal_uInt16 nDrgLog = sal_uInt16 ( pWindow->PixelToLogic(Size(SC_MINDRAGMOVE,0)).Width() );
352 auto aLogicPosition = rMEvt.getLogicPosition();
353 Point aPnt(aLogicPosition ? *aLogicPosition : pWindow->PixelToLogic(rMEvt.GetPosPixel()));
354
355 bool bCopy = false;
356 ScViewData& rViewData = rViewShell.GetViewData();
357 ScDocument& rDocument = rViewData.GetDocument();
358 SdrPageView* pPageView = ( pView ? pView->GetSdrPageView() : nullptr );
359 SdrPage* pPage = ( pPageView ? pPageView->GetPage() : nullptr );
360 ::std::vector< OUString > aExcludedChartNames;
361 ScRangeListVector aProtectedChartRangesVector;
362
363 if (comphelper::LibreOfficeKit::isActive() && rDocument.IsNegativePage(rViewData.GetTabNo()))
364 aPnt.setX(-aPnt.X());
365
366 if (pView && rMEvt.IsLeft())
367 {
368 if ( pView->IsDragObj() )
369 {
370 // object was moved
371 if ( rMEvt.IsMod1() )
372 {
373 if ( pPage )
374 {
375 ScChartHelper::GetChartNames( aExcludedChartNames, pPage );
376 }
377 if ( pView )
378 {
379 const SdrMarkList& rSdrMarkList = pView->GetMarkedObjectList();
380 const size_t nMarkCount = rSdrMarkList.GetMarkCount();
381 for ( size_t i = 0; i < nMarkCount; ++i )
382 {
383 SdrMark* pMark = rSdrMarkList.GetMark( i );
384 pObj = ( pMark ? pMark->GetMarkedSdrObj() : nullptr );
385 if ( pObj )
386 {
387 ScChartHelper::AddRangesIfProtectedChart( aProtectedChartRangesVector, rDocument, pObj );
388 }
389 }
390 }
391 bCopy = true;
392 }
393
394 if (!rMEvt.IsShift() && !rMEvt.IsMod1() && !rMEvt.IsMod2() &&
395 std::abs(aPnt.X() - aMDPos.X()) < nDrgLog &&
396 std::abs(aPnt.Y() - aMDPos.Y()) < nDrgLog)
397 {
398 /* If a user wants to click on an object in front of a marked
399 one, he releases the mouse button immediately */
400 SdrPageView* pPV = nullptr;
401 pObj = pView->PickObj(aMDPos, pView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER | SdrSearchOptions::BEFOREMARK);
402 if (pObj)
403 {
405 pView->MarkObj(pObj,pPV);
406 return true;
407 }
408 }
409 pView->EndDragObj( rMEvt.IsMod1() );
411
412 bReturn = true;
413 }
414 else if (pView->IsAction() )
415 {
416 // unlock internal layer to include note captions
418 pView->EndAction();
419 if ( pView->AreObjectsMarked() )
420 {
421 bReturn = true;
422
423 /* if multi-selection contains a note caption object, remove
424 all other objects from selection. */
425 const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
426 const size_t nCount = rMarkList.GetMarkCount();
427 if( nCount > 1 )
428 {
429 bool bFound = false;
430 for( size_t nIdx = 0; !bFound && (nIdx < nCount); ++nIdx )
431 {
432 pObj = rMarkList.GetMark( nIdx )->GetMarkedSdrObj();
433 bFound = ScDrawLayer::IsNoteCaption( pObj );
434 if( bFound )
435 {
436 pView->UnMarkAll();
437 pView->MarkObj( pObj, pView->GetSdrPageView() );
438 }
439 }
440 }
441 }
442 }
443 }
444
445 // maybe consider OLE object
447
448 if (pIPClient)
449 {
450 ScModule* pScMod = SC_MOD();
451 bool bUnoRefDialog = pScMod->IsRefDialogOpen() && pScMod->GetCurRefDlgId() == WID_SIMPLE_REF;
452
453 if ( pIPClient->IsObjectInPlaceActive() && !bUnoRefDialog )
454 pIPClient->DeactivateObject();
455 }
456
457 sal_uInt16 nClicks = rMEvt.GetClicks();
458 if (pView && nClicks == 2 && rMEvt.IsLeft())
459 {
460 if ( pView->AreObjectsMarked() )
461 {
462 const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
463 if (rMarkList.GetMarkCount() == 1)
464 {
465 SdrMark* pMark = rMarkList.GetMark(0);
466 pObj = pMark->GetMarkedSdrObj();
467
468 // only activate, when the mouse also is over the selected object
469
470 SdrViewEvent aVEvt;
471 SdrHitKind eHit = pView->PickAnything( rMEvt, SdrMouseEventKind::BUTTONDOWN, aVEvt );
472 if (eHit != SdrHitKind::NONE && aVEvt.mpObj == pObj)
473 {
474 SdrObjKind nSdrObjKind = pObj->GetObjIdentifier();
475
476 // OLE: activate
477
478 if (nSdrObjKind == SdrObjKind::OLE2)
479 {
480 if (!bOle)
481 {
482 if (static_cast<SdrOle2Obj*>(pObj)->GetObjRef().is())
483 {
484 rViewShell.ActivateObject(static_cast<SdrOle2Obj*>(pObj), css::embed::EmbedVerbs::MS_OLEVERB_PRIMARY);
485 }
486 }
487 }
488
489 // Edit text
490 // not in UNO controls
491 // #i32352# not in media objects
492
493 else if ( DynCastSdrTextObj( pObj) != nullptr && dynamic_cast<const SdrUnoObj*>( pObj) == nullptr && dynamic_cast<const SdrMediaObj*>( pObj) == nullptr )
494 {
496 bool bVertical = ( pOPO && pOPO->IsEffectivelyVertical() );
497 sal_uInt16 nTextSlotId = bVertical ? SID_DRAW_TEXT_VERTICAL : SID_DRAW_TEXT;
498
500 Execute(nTextSlotId, SfxCallMode::SYNCHRON | SfxCallMode::RECORD);
501
502 // Get the created FuText now and change into EditMode
504 if ( pPoor && pPoor->GetSlotID() == nTextSlotId ) // has no RTTI
505 {
506 FuText* pText = static_cast<FuText*>(pPoor);
507 Point aMousePixel = rMEvt.GetPosPixel();
508 pText->SetInEditMode( pObj, &aMousePixel );
509 }
510 bReturn = true;
511 }
512 }
513 }
514 }
515 else if ( TestDetective( pView->GetSdrPageView(), aPnt ) )
516 bReturn = true;
517 }
518
519 ForcePointer(&rMEvt);
520
521 if (pWindow->IsMouseCaptured())
522 pWindow->ReleaseMouse();
523
524 // command handler for context menu follows after MouseButtonUp,
525 // therefore here the hard IsLeft call
526 if ( !bReturn && rMEvt.IsLeft() )
529 Execute(SID_OBJECT_SELECT, SfxCallMode::SLOT | SfxCallMode::RECORD);
530
531 if ( bCopy && pPage )
532 {
533 ScDocShell* pDocShell = rViewData.GetDocShell();
534 ScModelObj* pModelObj = ( pDocShell ? comphelper::getFromUnoTunnel<ScModelObj>( pDocShell->GetModel() ) : nullptr );
535 if ( pModelObj )
536 {
537 SCTAB nTab = rViewData.GetTabNo();
538 ScChartHelper::CreateProtectedChartListenersAndNotify( rDocument, pPage, pModelObj, nTab,
539 aProtectedChartRangesVector, aExcludedChartNames );
540 }
541 }
542
543 return bReturn;
544}
545
546/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
::std::vector< ScRangeList > ScRangeListVector
Definition: charthelper.hxx:29
virtual bool BegDragObj(const Point &rPnt, OutputDevice *pOut, SdrHdl *pHdl, short nMinMov=-3, SdrDragMethod *pForcedMeth=nullptr) override
virtual void MovAction(const Point &rPnt) override
Base class for all Drawmodule specific functions.
Definition: fudraw.hxx:28
virtual void ForcePointer(const MouseEvent *pMEvt)
Definition: fudraw.cxx:669
virtual bool MouseMove(const MouseEvent &rMEvt) override
Definition: fudraw.cxx:137
virtual bool MouseButtonUp(const MouseEvent &rMEvt) override
Definition: fudraw.cxx:147
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
Definition: fudraw.cxx:128
Base class for all functions.
Definition: fupoor.hxx:40
Point aMDPos
Definition: fupoor.hxx:57
ScDrawView * pView
Definition: fupoor.hxx:42
bool bIsInDragMode
Definition: fupoor.hxx:56
sal_uInt16 GetSlotID() const
Definition: fupoor.hxx:90
void SetMouseButtonCode(sal_uInt16 nNew)
Definition: fupoor.hxx:70
void ForceScroll(const Point &aPixPos)
Definition: fupoor.cxx:72
ScTabViewShell & rViewShell
Definition: fupoor.hxx:43
Timer aDragTimer
Definition: fupoor.hxx:53
VclPtr< vcl::Window > pWindow
Definition: fupoor.hxx:44
virtual bool MouseButtonUp(const MouseEvent &rMEvt) override
Definition: fusel.cxx:337
virtual bool MouseMove(const MouseEvent &rMEvt) override
Definition: fusel.cxx:309
bool TestDetective(const SdrPageView *pPV, const Point &rPos)
Definition: fusel2.cxx:44
virtual ~FuSelection() override
Definition: fusel.cxx:64
FuSelection(ScTabViewShell &rViewSh, vcl::Window *pWin, ScDrawView *pView, SdrModel *pDoc, const SfxRequest &rReq)
Definition: fusel.cxx:58
virtual bool MouseButtonDown(const MouseEvent &rMEvt) override
Definition: fusel.cxx:68
bool IsNoteCaptionClicked(const Point &rPos) const
Definition: fusel2.cxx:117
bool IsNoteCaptionMarked() const
Definition: fusel2.cxx:103
Base class for Text functions.
Definition: futext.hxx:28
void SetInEditMode(SdrObject *pObj=nullptr, const Point *pMousePixel=nullptr, bool bCursorToEnd=false, const KeyEvent *pInitialKey=nullptr)
Definition: futext.cxx:533
const OUString & GetURL() const
const OUString & GetTarget() const
bool IsMod1() const
const std::optional< Point > & getLogicPosition() const
bool IsMod2() const
sal_uInt16 GetClicks() const
bool IsRight() const
sal_uInt16 GetButtons() const
const Point & GetPosPixel() const
bool IsLeft() const
bool IsShift() const
bool IsEffectivelyVertical() const
static void CreateProtectedChartListenersAndNotify(ScDocument &rDoc, const SdrPage *pPage, ScModelObj *pModelObj, SCTAB nTab, const ScRangeListVector &rRangesVector, const ::std::vector< OUString > &rExcludedChartNames, bool bSameDoc=true)
static void GetChartNames(::std::vector< OUString > &rChartNames, const SdrPage *pPage)
static void AddRangesIfProtectedChart(ScRangeListVector &rRangesVector, const ScDocument &rDocument, SdrObject *pObject)
SC_DLLPUBLIC bool IsNegativePage(SCTAB nTab) const
Definition: document.cxx:1006
static bool IsNoteCaption(SdrObject *pObj)
Returns true, if the passed object is the caption of a cell note.
Definition: drwlayer.cxx:2630
static ScMacroInfo * GetMacroInfo(SdrObject *pObj, bool bCreate=false)
Definition: drwlayer.cxx:2642
void UnlockInternalLayer()
Unlocks the internal layer that contains caption objects of cell notes.
Definition: drawview.hxx:137
static void OpenURL(const OUString &rURL, const OUString &rTarget, bool bIgnoreSettings=false)
Open the specified URL.
Definition: global.cxx:808
static bool ShouldOpenURL()
Whether the URL can be opened according to current security options (Click/Ctrl-Click)
Definition: global.cxx:874
const OUString & GetMacro() const
Definition: userdat.hxx:82
sal_uInt16 GetCurRefDlgId() const
Definition: scmod.hxx:228
bool IsRefDialogOpen()
Definition: scmod.cxx:1662
void ActivateObject(SdrOle2Obj *pObj, sal_Int32 nVerb)
Definition: tabvwshb.cxx:155
void FakeButtonUp(ScSplitPos eWhich)
Definition: tabview3.cxx:214
FuPoor * GetDrawFuncPtr()
Definition: tabview.hxx:323
ScViewData & GetViewData()
Definition: tabview.hxx:335
bool IsDrawSelMode() const
Definition: tabview.hxx:318
SfxDispatcher & GetDispatcher()
Definition: viewdata.cxx:3135
SCTAB GetTabNo() const
Definition: viewdata.hxx:395
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
ScDocShell * GetDocShell() const
Definition: viewdata.hxx:354
ScDBFunc * GetView() const
Definition: viewdata.cxx:863
ScSplitPos GetActivePart() const
Definition: viewdata.hxx:398
virtual bool IsAction() const override
virtual void BckAction() override
virtual void EndAction() override
void SetShiftPressed(bool bShiftPressed)
SdrDragMethod * GetDragMethod() const
bool EndDragObj(bool bCopy=false)
bool IsDragObj() const
void ForceMarkedToAnotherPage()
SdrHdlKind GetKind() const
size_t GetMarkCount() const
SdrMark * GetMark(size_t nNum) const
SdrHdl * PickHandle(const Point &rPnt) const
const SdrMarkList & GetMarkedObjectList() const
bool AreObjectsMarked() const
void BegMarkObj(const Point &rPnt, bool bUnmark=false)
void UnMarkAll(SdrPageView const *pPV=nullptr)
SdrObject * PickObj(const Point &rPnt, short nTol, SdrPageView *&rpPV, SdrSearchOptions nOptions, SdrObject **ppRootObj, bool *pbHitPassDirect=nullptr) const
void UnmarkAllObj(SdrPageView const *pPV=nullptr)
bool IsMarkedHit(const Point &rPnt, short nTol=-2) const
bool MarkObj(const Point &rPnt, short nTol=-2, bool bToggle=false, bool bDeep=false)
SdrObject * GetMarkedSdrObj() const
void BegMacroObj(const Point &rPnt, short nTol, SdrObject *pObj, SdrPageView *pPV, vcl::Window *pWin)
const OUString & getHyperlink() const
virtual OutlinerParaObject * GetOutlinerParaObject() const
virtual css::uno::Reference< css::drawing::XShape > getUnoShape()
bool IsGroupObject() const
virtual SdrObjKind GetObjIdentifier() const
SdrPage * GetPage() const
SdrPageView * GetSdrPageView() const
sal_uInt16 getHitTolLog() const
SdrHitKind PickAnything(const MouseEvent &rMEvt, SdrMouseEventKind nMouseDownOrMoveOrUp, SdrViewEvent &rVEvt) const
void UnmarkAll()
static bool IsXScriptURL(const OUString &rScriptURL)
bool IsInPlace() const
bool IsObjectInPlaceActive() const
void DeactivateObject()
ErrCode CallXScript(const OUString &rScriptURL, const css::uno::Sequence< css::uno::Any > &aParams, css::uno::Any &aRet, css::uno::Sequence< sal_Int16 > &aOutParamIndex, css::uno::Sequence< css::uno::Any > &aOutParam, bool bRaiseError=true, const css::uno::Any *aCaller=nullptr)
css::uno::Reference< css::frame::XModel3 > GetModel() const
static SfxObjectShell * Current()
SfxFrame & GetFrame() const
SfxViewFrame * GetViewFrame() const
SfxInPlaceClient * GetIPClient() const
static SvxIMapInfo * GetIMapInfo(const SdrObject *pObject)
static IMapObject * GetHitIMapObject(const SdrObject *pObj, const Point &rWinPoint, const OutputDevice *pCmpWnd=nullptr)
const OUString & GetTargetFrame() const
const OUString & GetURL() const
bool IsActive() const
void Stop()
virtual void Start(bool bStartTimer=true) override
int nCount
#define SC_MINDRAGMOVE
Definition: fusel.cxx:54
#define SC_MAXDRAGMOVE
fusel,fuconstr,futext - combine them!
Definition: fusel.cxx:52
int i
const ::avmedia::MediaItem * Execute(const SdrMarkView *pSdrView, SfxRequest const &rReq)
#define SC_MOD()
Definition: scmod.hxx:249
SdrObject * mpObj
const SvxURLField * mpURLField
SdrEventKind meEvent
SdrHitKind
SVXCORE_DLLPUBLIC SdrTextObj * DynCastSdrTextObj(SdrObject *)
SdrObjKind
sal_Int16 SCTAB
Definition: types.hxx:22