LibreOffice Module sw (master)  1
edtdd.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 <svx/svdview.hxx>
21 #include <editeng/outliner.hxx>
22 #include <svx/svdobj.hxx>
23 #include <sot/exchange.hxx>
24 #include <sot/formats.hxx>
25 #include <sfx2/bindings.hxx>
26 #include <vcl/commandevent.hxx>
27 #include <osl/diagnose.h>
28 
29 #include <sfx2/viewfrm.hxx>
30 #include <fmturl.hxx>
31 #include <frmfmt.hxx>
32 #include <wrtsh.hxx>
33 #include <edtdd.hxx>
34 #include <edtwin.hxx>
35 #include <view.hxx>
36 #include <viewopt.hxx>
37 #include <swdtflvr.hxx>
38 #include <swmodule.hxx>
39 #include <docsh.hxx>
40 #include <wdocsh.hxx>
41 
42 using namespace ::com::sun::star;
43 
44 // no include "dbgoutsw.hxx" here!!!!!!
45 
46 bool g_bExecuteDrag = false;
47 
49 {
50  m_aTimer.SetInvokeHandler(LINK(this, SwEditWin, DDHandler));
51  m_aTimer.SetTimeout(480);
52  m_aTimer.Start();
53  g_bDDTimerStarted = true;
54 }
55 
56 void SwEditWin::StopDDTimer(SwWrtShell *pSh, const Point &rPt)
57 {
58  m_aTimer.Stop();
59  g_bDDTimerStarted = false;
60  if(!pSh->IsSelFrameMode())
61  pSh->CallSetCursor(&rPt, false);
62  m_aTimer.SetInvokeHandler(LINK(this,SwEditWin, TimerHandler));
63 }
64 
65 void SwEditWin::StartDrag( sal_Int8 /*nAction*/, const Point& rPosPixel )
66 {
68  return;
69 
71  if( rSh.GetDrawView() )
72  {
73  CommandEvent aDragEvent( rPosPixel, CommandEventId::StartDrag, true );
74  if( rSh.GetDrawView()->Command( aDragEvent, this ) )
75  {
77  return; // Event evaluated by SdrView
78  }
79  }
80 
81  if ( m_pApplyTempl || rSh.IsDrawCreate() || IsDrawAction())
82  return;
83 
84  bool bStart = false, bDelSelect = false;
85  SdrObject *pObj = nullptr;
86  Point aDocPos( PixelToLogic( rPosPixel ) );
87  const bool bInSelect = rSh.IsInSelect();
88  if (!bInSelect && rSh.TestCurrPam(aDocPos, true))
89  //We are not selecting and aren't at a selection
90  bStart = true;
91  else if ( !g_bFrameDrag && rSh.IsSelFrameMode() &&
92  rSh.IsInsideSelectedObj( aDocPos ) &&
93  nullptr == m_pAnchorMarker)
94  {
95  //We are not dragging internally and are not at an
96  //object (frame, draw object)
97 
98  // #i106131# *and* AnchorDrag is *not* active: When active,
99  // entering global drag mode will destroy the AnchorHdl but
100  // keep the now invalid ptr in place, next access will crash.
101  // It is indeed wrong to enter drag mode when AnchorDrag is
102  // already active
103  bStart = true;
104  }
105  else if( !g_bFrameDrag && m_rView.GetDocShell()->IsReadOnly() &&
106  OBJCNT_NONE != rSh.GetObjCntType( aDocPos, pObj ))
107  {
108  rSh.LockPaint();
109  if( rSh.SelectObj( aDocPos, 0, pObj ))
110  bStart = bDelSelect = true;
111  else
112  rSh.UnlockPaint();
113  }
114  else if (!bInSelect)// tdf#116384 only drag hyperlink if user's not currently setting the selection
115  {
116  SwContentAtPos aSwContentAtPos( IsAttrAtPos::InetAttr );
117  bStart = rSh.GetContentAtPos( aDocPos,
118  aSwContentAtPos );
119  }
120 
121  if ( !bStart || m_bIsInDrag )
122  return;
123 
124  m_bMBPressed = false;
125  ReleaseMouse();
126  g_bFrameDrag = false;
127  g_bExecuteDrag = true;
128  SwEditWin::m_nDDStartPosY = aDocPos.Y();
129  SwEditWin::m_nDDStartPosX = aDocPos.X();
130  m_aMovePos = aDocPos;
132  if( bDelSelect )
133  {
134  rSh.UnSelectFrame();
135  rSh.UnlockPaint();
136  }
137 }
138 
140 {
141  if( !g_bExecuteDrag || m_bIsInDrag )
142  return;
143 
144  m_bIsInDrag = true;
145 
147 
148  pTransfer->StartDrag( this, m_aMovePos );
149 }
150 
152 {
153  DropCleanup();
154  m_aTimer.SetInvokeHandler( LINK(this,SwEditWin, TimerHandler) );
155  m_bIsInDrag = false;
156 }
157 
159 {
160  SwWrtShell &rSh = m_rView.GetWrtShell();
161 
162  // reset statuses
163  g_bNoInterrupt = false;
164  if ( m_bOldIdleSet )
165  {
167  m_bOldIdleSet = false;
168  }
169  if ( m_pUserMarker )
171  else
172  rSh.UnSetVisibleCursor();
173 
174 }
175 
177 {
178  if ( m_pUserMarker )
179  {
180  m_pUserMarker.reset();
181  m_pUserMarkerObj = nullptr;
182  }
183 }
184 
185 //exhibition hack (MA,MBA)
187 {
188  if ( !GetCurShell() )
189  SelectShell();
190 }
191 
193 {
195  DropCleanup();
196  sal_Int8 nRet = DND_ACTION_NONE;
197 
198  //A Drop to an open OutlinerView doesn't concern us (also see QueryDrop)
199  SwWrtShell &rSh = m_rView.GetWrtShell();
200  const Point aDocPt( PixelToLogic( rEvt.maPosPixel ));
201  SdrObject *pObj = nullptr;
202  OutlinerView* pOLV;
203  rSh.GetObjCntType( aDocPt, pObj );
204 
205  if( pObj && nullptr != ( pOLV = rSh.GetDrawView()->GetTextEditOutlinerView() ))
206  {
207  tools::Rectangle aRect( pOLV->GetOutputArea() );
208  aRect.Union( pObj->GetLogicRect() );
209  const Point aPos = pOLV->GetWindow()->PixelToLogic(rEvt.maPosPixel);
210  if ( aRect.IsInside(aPos) )
211  {
212  rSh.StartAllAction();
213  rSh.EndAllAction();
214  return nRet;
215  }
216  }
217 
218  // There's a special treatment for file lists with a single
219  // element, that depends on the actual content of the
220  // Transferable to be accessible. Since the transferable
221  // may only be accessed after the drop has been accepted
222  // (according to KA due to Java D&D), we'll have to
223  // reevaluate the drop action once more _with_ the
224  // Transferable.
225  sal_uInt8 nEventAction;
226  sal_Int8 nUserOpt = rEvt.mbDefault ? EXCHG_IN_ACTION_DEFAULT
227  : rEvt.mnAction;
228  SotExchangeActionFlags nActionFlags;
232  rEvt.mnAction,
233  nUserOpt, m_nDropFormat, nEventAction, SotClipboardFormatId::NONE,
234  &rEvt.maDropEvent.Transferable,
235  &nActionFlags );
236 
237  TransferableDataHelper aData( rEvt.maDropEvent.Transferable );
238  nRet = rEvt.mnAction;
239  if( !SwTransferable::PasteData( aData, rSh, m_nDropAction, nActionFlags, m_nDropFormat,
240  m_nDropDestination, false, rEvt.mbDefault, &aDocPt, nRet))
241  nRet = DND_ACTION_NONE;
242  else if ( SW_MOD()->m_pDragDrop )
243  //Don't clean up anymore at internal D&D!
244  SW_MOD()->m_pDragDrop->SetCleanUp( false );
245 
246  return nRet;
247 }
248 
249 SotExchangeDest SwEditWin::GetDropDestination( const Point& rPixPnt, SdrObject ** ppObj )
250 {
251  SwWrtShell &rSh = m_rView.GetWrtShell();
252  const Point aDocPt( PixelToLogic( rPixPnt ) );
253  if( rSh.TestCurrPam( aDocPt )
254  || rSh.IsOverReadOnlyPos( aDocPt )
255  || rSh.DocPtInsideInputField( aDocPt ) )
256  return SotExchangeDest::NONE;
257 
258  SdrObject *pObj = nullptr;
259  const ObjCntType eType = rSh.GetObjCntType( aDocPt, pObj );
260 
261  //Drop to OutlinerView (TextEdit in Drawing) should decide it on its own!
262  if( pObj )
263  {
265  if ( pOLV )
266  {
267  tools::Rectangle aRect( pOLV->GetOutputArea() );
268  aRect.Union( pObj->GetLogicRect() );
269  const Point aPos = pOLV->GetWindow()->PixelToLogic( rPixPnt );
270  if( aRect.IsInside( aPos ) )
271  return SotExchangeDest::NONE;
272  }
273  }
274 
275  //What do we want to drop on now?
276  SotExchangeDest nDropDestination = SotExchangeDest::NONE;
277 
278  //Did anything else arrive from the DrawingEngine?
279  if( OBJCNT_NONE != eType )
280  {
281  switch ( eType )
282  {
283  case OBJCNT_GRF:
284  {
285  bool bLink,
286  bIMap = nullptr != rSh.GetFormatFromObj( aDocPt )->GetURL().GetMap();
287  OUString aDummy;
288  rSh.GetGrfAtPos( aDocPt, aDummy, bLink );
289  if ( bLink && bIMap )
290  nDropDestination = SotExchangeDest::DOC_LNKD_GRAPH_W_IMAP;
291  else if ( bLink )
292  nDropDestination = SotExchangeDest::DOC_LNKD_GRAPHOBJ;
293  else if ( bIMap )
294  nDropDestination = SotExchangeDest::DOC_GRAPH_W_IMAP;
295  else
296  nDropDestination = SotExchangeDest::DOC_GRAPHOBJ;
297  }
298  break;
299  case OBJCNT_FLY:
300  if( dynamic_cast< const SwWebDocShell *>( rSh.GetView().GetDocShell() ) != nullptr )
301  nDropDestination = SotExchangeDest::DOC_TEXTFRAME_WEB;
302  else
303  nDropDestination = SotExchangeDest::DOC_TEXTFRAME;
304  break;
305  case OBJCNT_OLE: nDropDestination = SotExchangeDest::DOC_OLEOBJ; break;
306  case OBJCNT_CONTROL: /* no Action avail */
307  case OBJCNT_SIMPLE: nDropDestination = SotExchangeDest::DOC_DRAWOBJ; break;
308  case OBJCNT_URLBUTTON: nDropDestination = SotExchangeDest::DOC_URLBUTTON; break;
309  case OBJCNT_GROUPOBJ: nDropDestination = SotExchangeDest::DOC_GROUPOBJ; break;
310 
311  default: OSL_ENSURE( false, "new ObjectType?" );
312  }
313  }
314  if ( !bool(nDropDestination) )
315  {
316  if( dynamic_cast< const SwWebDocShell *>( rSh.GetView().GetDocShell() ) != nullptr )
317  nDropDestination = SotExchangeDest::SWDOC_FREE_AREA_WEB;
318  else
319  nDropDestination = SotExchangeDest::SWDOC_FREE_AREA;
320  }
321  if( ppObj )
322  *ppObj = pObj;
323  return nDropDestination;
324 }
325 
327 {
328  if( rEvt.mbLeaving )
329  {
330  DropCleanup();
331  return rEvt.mnAction;
332  }
333 
334  if( m_rView.GetDocShell()->IsReadOnly() )
335  return DND_ACTION_NONE;
336 
337  SwWrtShell &rSh = m_rView.GetWrtShell();
338 
339  Point aPixPt( rEvt.maPosPixel );
340 
341  // If the cursor is near the inner boundary
342  // we attempt to scroll towards the desired direction.
344  const int nMargin = 10;
345  aWin.AdjustLeft(nMargin );
346  aWin.AdjustTop(nMargin );
347  aWin.AdjustRight( -nMargin );
348  aWin.AdjustBottom( -nMargin );
349  if(!aWin.IsInside(aPixPt)) {
350  static sal_uInt64 last_tick = 0;
351  sal_uInt64 current_tick = tools::Time::GetSystemTicks();
352  if((current_tick-last_tick) > 500) {
353  last_tick = current_tick;
354  if(!m_bOldIdleSet) {
355  m_bOldIdle = rSh.GetViewOptions()->IsIdle();
356  rSh.GetViewOptions()->SetIdle(false);
357  m_bOldIdleSet = true;
358  }
360  if(aPixPt.X() > aWin.Right()) aPixPt.AdjustX(nMargin );
361  if(aPixPt.X() < aWin.Left()) aPixPt.AdjustX( -nMargin );
362  if(aPixPt.Y() > aWin.Bottom()) aPixPt.AdjustY(nMargin );
363  if(aPixPt.Y() < aWin.Top()) aPixPt.AdjustY( -nMargin );
364  Point aDocPt(PixelToLogic(aPixPt));
365  SwRect rect(aDocPt,Size(1,1));
366  rSh.MakeVisible(rect);
367  }
368  }
369 
370  if(m_bOldIdleSet) {
372  m_bOldIdleSet = false;
373  }
374 
375  SdrObject *pObj = nullptr;
376  m_nDropDestination = GetDropDestination( aPixPt, &pObj );
377  if( !bool(m_nDropDestination) )
378  return DND_ACTION_NONE;
379 
380  sal_uInt8 nEventAction;
381  sal_Int8 nUserOpt = rEvt.mbDefault ? EXCHG_IN_ACTION_DEFAULT
382  : rEvt.mnAction;
383 
387  rEvt.mnAction,
388  nUserOpt, m_nDropFormat, nEventAction );
389 
391  {
392  const Point aDocPt( PixelToLogic( aPixPt ) );
393 
394  //With the default action we still want to have a say.
395  SwModule *pMod = SW_MOD();
396  if( pMod->m_pDragDrop )
397  {
398  bool bCleanup = false;
399  //Drawing objects in Headers/Footers are not allowed
400 
401  SwWrtShell *pSrcSh = pMod->m_pDragDrop->GetShell();
402  if( (pSrcSh->GetSelFrameType() == FrameTypeFlags::DRAWOBJ) &&
403  pSrcSh->IsSelContainsControl() &&
404  (rSh.GetFrameType( &aDocPt, false ) & (FrameTypeFlags::HEADER|FrameTypeFlags::FOOTER)) )
405  {
406  bCleanup = true;
407  }
408  // don't more position protected objects!
409  else if( DND_ACTION_MOVE == rEvt.mnAction &&
411  {
412  bCleanup = true;
413  }
414  else if( rEvt.mbDefault )
415  {
416  // internal Drag&Drop: within same Doc a Move
417  // otherwise a Copy - Task 54974
418  nEventAction = pSrcSh->GetDoc() == rSh.GetDoc()
420  : DND_ACTION_COPY;
421  }
422  if ( bCleanup )
423  {
425  rSh.UnSetVisibleCursor();
426  return DND_ACTION_NONE;
427  }
428  }
429  else
430  {
431  //D&D from outside of SW should be a Copy per default.
432  if( EXCHG_IN_ACTION_DEFAULT == nEventAction &&
433  DND_ACTION_MOVE == rEvt.mnAction )
434  nEventAction = DND_ACTION_COPY;
435 
436  if( (SotClipboardFormatId::SBA_FIELDDATAEXCHANGE == m_nDropFormat &&
438  SotClipboardFormatId::SBA_CTRLDATAEXCHANGE == m_nDropFormat )
439  {
440  SdrMarkView* pMView = rSh.GetDrawView();
441  if( pMView && !pMView->IsDesignMode() )
442  return DND_ACTION_NONE;
443  }
444  }
445 
446  if ( EXCHG_IN_ACTION_DEFAULT != nEventAction )
447  nUserOpt = static_cast<sal_Int8>(nEventAction);
448 
449  // show DropCursor or UserMarker ?
450  if( SotExchangeDest::SWDOC_FREE_AREA_WEB == m_nDropDestination ||
451  SotExchangeDest::SWDOC_FREE_AREA == m_nDropDestination )
452  {
455  if(rSh.GetContentAtPos(aDocPt, aCont))
456  rSh.SwCursorShell::SetVisibleCursor( aDocPt );
457  }
458  else
459  {
460  rSh.UnSetVisibleCursor();
461 
462  if ( m_pUserMarkerObj != pObj )
463  {
465  m_pUserMarkerObj = pObj;
466 
467  if(m_pUserMarkerObj)
468  {
470  }
471  }
472  }
473  return nUserOpt;
474  }
475 
477  rSh.UnSetVisibleCursor();
478  return DND_ACTION_NONE;
479 }
480 
481 IMPL_LINK_NOARG(SwEditWin, DDHandler, Timer *, void)
482 {
483  g_bDDTimerStarted = false;
484  m_aTimer.Stop();
485  m_aTimer.SetTimeout(240);
486  m_bMBPressed = false;
487  ReleaseMouse();
488  g_bFrameDrag = false;
489 
490  if ( m_rView.GetViewFrame() )
491  {
492  g_bExecuteDrag = true;
493  StartExecuteDrag();
494  }
495 }
496 
497 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SfxViewFrame * GetViewFrame() const
SwWrtShell * GetShell()
Definition: swdtflvr.hxx:226
const css::datatransfer::dnd::DropTargetDropEvent maDropEvent
bool isContentExtractionLocked() const
SdrView * GetDrawView()
Definition: vnew.cxx:373
tools::Long AdjustRight(tools::Long nHorzMoveDelta)
void StartDDTimer()
Definition: edtdd.cxx:48
#define DND_ACTION_COPY
bool g_bExecuteDrag
Definition: edtdd.cxx:46
signed char sal_Int8
constexpr tools::Long Left() const
const Graphic * GetGrfAtPos(const Point &rDocPos, OUString &rName, bool &rbLink) const
Deliver graphic in rName besides graphic name.
Definition: fefly1.cxx:1584
virtual sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt) override
Definition: edtdd.cxx:326
const SwView & GetView() const
Definition: edtwin.hxx:244
static sal_uInt8 GetExchangeAction(const DataFlavorExVector &rDataFlavorExVector, SotExchangeDest nDestination, sal_uInt16 nSourceOptions, sal_uInt8 nUserAction, SotClipboardFormatId &rFormat, sal_uInt8 &rDefaultAction, SotClipboardFormatId nOnlyTestFormat=SotClipboardFormatId::NONE, const css::uno::Reference< css::datatransfer::XTransferable > *pxTransferable=nullptr, SotExchangeActionFlags *pActionFlags=nullptr)
tools::Rectangle const & GetOutputArea() const
AutoTimer m_aTimer
Definition: edtwin.hxx:75
bool IsDesignMode() const
SdrObject * m_pUserMarkerObj
Definition: edtwin.hxx:93
bool IsInsideSelectedObj(const Point &rPt)
returns enum values
Definition: feshview.cxx:1358
ObjCntType
Definition: fesh.hxx:120
SotExchangeDest
Of course Writer needs its own rectangles.
Definition: swrect.hxx:34
void EndAllAction()
Definition: edws.cxx:97
Point m_aMovePos
Definition: edtwin.hxx:82
SfxShell * GetCurShell()
Definition: view.hxx:575
std::unique_ptr< SdrDropMarkerOverlay > m_pUserMarker
Definition: edtwin.hxx:92
SwWrtShell & GetWrtShell() const
Definition: view.hxx:413
void StartExecuteDrag()
Definition: edtdd.cxx:139
static tools::Long m_nDDStartPosY
Definition: edtwin.hxx:64
#define DND_ACTION_MOVE
SotExchangeDest GetDropDestination(const Point &rPixPnt, SdrObject **ppObj=nullptr)
Definition: edtdd.cxx:249
#define EXCHG_IN_ACTION_DEFAULT
Used by the UI to modify the document model.
Definition: wrtsh.hxx:93
std::unique_ptr< SwAnchorMarker > m_pAnchorMarker
Definition: edtwin.hxx:90
sal_uInt8 m_nDropAction
Definition: edtwin.hxx:102
const SwView & GetView() const
Definition: wrtsh.hxx:431
virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt) override
Definition: edtdd.cxx:192
virtual void SelectShell()
Definition: view.cxx:250
#define EXCHG_INOUT_ACTION_NONE
const DataFlavorExVector & GetDataFlavorExVector() const
#define DND_ACTION_NONE
static bool PasteData(TransferableDataHelper &rData, SwWrtShell &rSh, sal_uInt8 nAction, SotExchangeActionFlags nActionFlags, SotClipboardFormatId nFormat, SotExchangeDest nDestination, bool bIsPasteFormat, bool bIsDefault, const Point *pDDPos=nullptr, sal_Int8 nDropAction=0, bool bPasteSelection=false, RndStdIds nAnchorType=RndStdIds::FLY_AT_PARA, bool bIgnoreComments=false, SwPasteContext *pContext=nullptr, PasteTableType nPaste=PasteTableType::PASTE_DEFAULT)
Definition: swdtflvr.cxx:1660
SwDoc * GetDoc() const
Definition: viewsh.hxx:281
tools::Long AdjustBottom(tools::Long nVertMoveDelta)
std::unique_ptr< SwApplyTemplate > m_pApplyTempl
Definition: edtwin.hxx:89
void MakeVisible(const SwRect &)
Definition: viewsh.cxx:577
constexpr OUStringLiteral aData
Definition: ww8scan.hxx:48
DocumentType eType
IMPL_LINK_NOARG(SwEditWin, DDHandler, Timer *, void)
Definition: edtdd.cxx:481
SotClipboardFormatId m_nDropFormat
Definition: edtwin.hxx:101
#define SW_MOD()
Definition: swmodule.hxx:256
bool m_bOldIdle
Definition: edtwin.hxx:108
bool IsOverReadOnlyPos(const Point &rPt) const
Definition: crsrsh.cxx:2722
Window class for the Writer edit area, this is the one handling mouse and keyboard events and doing t...
Definition: edtwin.hxx:58
SotExchangeActionFlags
bool IsSelContainsControl() const
check whether selected frame contains a control; companion method to GetSelFrameType, used for preventing drag&drop of controls into header
Definition: feshview.cxx:633
SfxBindings & GetBindings()
void CleanupDropUserMarker()
Definition: edtdd.cxx:176
bool IsIdle() const
Definition: viewopt.hxx:209
SotExchangeDest m_nDropDestination
Definition: edtwin.hxx:103
const SwFormatURL & GetURL(bool=true) const
Definition: fmturl.hxx:78
constexpr tools::Long Right() const
virtual void Start(bool bStartTimer=true) override
constexpr tools::Long Top() const
const OutlinerView * GetTextEditOutlinerView() const
bool IsInside(const Point &rPOINT) const
void LockPaint()
Definition: viewsh.hxx:602
void DragFinished()
Definition: edtdd.cxx:151
Point PixelToLogic(const Point &rDevicePt) const
void SetTimeout(sal_uInt64 nTimeoutMs)
static tools::Long m_nDDStartPosX
Definition: edtwin.hxx:63
bool IsInSelect() const
Definition: wrtsh.hxx:141
FlyProtectFlags IsSelObjProtected(FlyProtectFlags eType) const
Which Protection is set at selected object?
Definition: feshview.cxx:2683
SwDocShell * GetDocShell()
Definition: view.cxx:1127
bool IsReadOnly() const
tools::Long CallSetCursor(const Point *pPt, bool bProp)
Definition: wrtsh.hxx:120
void DropCleanup()
Definition: edtdd.cxx:158
tools::Long AdjustTop(tools::Long nVertMoveDelta)
constexpr tools::Long Bottom() const
const ImageMap * GetMap() const
Definition: fmturl.hxx:68
void ReleaseMouse()
bool DocPtInsideInputField(const Point &rDocPt) const
Definition: crstrvl.cxx:944
const SwFrameFormat * GetFormatFromObj(const Point &rPt, SwRect **pRectToFill=nullptr) const
Definition: fefly1.cxx:1622
void Stop()
bool TestCurrPam(const Point &rPt, bool bTstHit=false)
Search in the selected area for a Selection that covers the given point.
Definition: crsrsh.cxx:991
tools::Rectangle & Union(const tools::Rectangle &rRect)
unsigned char sal_uInt8
bool m_bMBPressed
Definition: edtwin.hxx:108
const SwViewOption * GetViewOptions() const
Definition: viewsh.hxx:423
bool m_bIsInDrag
Definition: edtwin.hxx:108
void SetIdle(bool b) const
Definition: viewopt.hxx:216
virtual bool Command(const CommandEvent &rCEvt, vcl::Window *pWin) override
bool g_bDDTimerStarted
Definition: edtwin.cxx:165
vcl::Window * GetWindow() const
void UnSelectFrame()
Definition: select.cxx:323
void SetInvokeHandler(const Link< Timer *, void > &rLink)
bool SelectObj(const Point &rSelPt, sal_uInt8 nFlag=0, SdrObject *pObj=nullptr)
If an object has been given, exactly this object is selected (instead of searching over position)...
Definition: feshview.cxx:177
static sal_uInt64 GetSystemTicks()
SwView & m_rView
Definition: edtwin.hxx:97
Size GetOutputSizePixel() const
void StopDDTimer(SwWrtShell *, const Point &)
Definition: edtdd.cxx:56
void UnSetVisibleCursor()
Definition: crsrsh.hxx:914
#define EXCHG_IN_ACTION_LINK
virtual SfxObjectShell * GetObjectShell() override
bool m_bOldIdleSet
Definition: edtwin.hxx:108
void InvalidateAll(bool bWithMsg)
bool g_bNoInterrupt
Definition: swmodule.cxx:115
tools::Long AdjustLeft(tools::Long nHorzMoveDelta)
virtual const tools::Rectangle & GetLogicRect() const
SwTransferable * m_pDragDrop
Definition: swmodule.hxx:129
void SelectShellForDrop()
Definition: edtdd.cxx:186
bool GetContentAtPos(const Point &rPt, SwContentAtPos &rContentAtPos, bool bSetCursor=false, SwRect *pFieldRect=nullptr)
Definition: crstrvl.cxx:1255
static ObjCntType GetObjCntType(const SdrObject &rObj)
Definition: fefly1.cxx:1669
bool g_bFrameDrag
Definition: edtwin.cxx:162
bool IsDrawAction() const
Definition: edtwin.hxx:208
sal_Int8 mnAction
void StartAllAction()
For all views of this document.
Definition: edws.cxx:86
bool IsDrawCreate() const
Definition: feshview.cxx:2218
FrameTypeFlags GetFrameType(const Point *pPt, bool bStopAtFly) const
For return values see above FrameType.
Definition: fews.cxx:237
virtual void StartDrag(sal_Int8 nAction, const Point &rPosPixel) override
Definition: edtdd.cxx:65
void UnlockPaint(bool bVirDev=false)
Definition: viewsh.hxx:607
bool IsSelFrameMode() const
Definition: wrtsh.hxx:173
FrameTypeFlags GetSelFrameType() const
Definition: feshview.cxx:600