LibreOffice Module sc (master)  1
tabvwsh2.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 <comphelper/lok.hxx>
21 #include <sfx2/bindings.hxx>
22 #include <sfx2/viewfrm.hxx>
23 #include <svl/whiter.hxx>
25 #include <svl/languageoptions.hxx>
26 #include <sfx2/dispatch.hxx>
27 
28 #include <tabvwsh.hxx>
29 #include <drawview.hxx>
30 #include <fupoor.hxx>
31 #include <fuconrec.hxx>
32 #include <fuconpol.hxx>
33 #include <fuconarc.hxx>
34 #include <fuconuno.hxx>
35 #include <fusel.hxx>
36 #include <futext.hxx>
37 #include <fuinsert.hxx>
38 #include <sc.hrc>
39 #include <scmod.hxx>
40 #include <appoptio.hxx>
41 #include <gridwin.hxx>
42 
43 // Create default drawing objects via keyboard
44 #include <svx/svdpagv.hxx>
45 #include <svl/stritem.hxx>
46 #include <fuconcustomshape.hxx>
47 
49 {
50  return const_cast<ScTabViewShell*>(this)->GetScDrawView(); // GetScDrawView is non-const
51 }
52 
54 {
55  vcl::Window* pWin = GetActiveWin();
56 
57  ScDrawView* pDrView = GetScDrawView();
58  if (pDrView)
59  pDrView->SetActualWin(pWin);
60 
61  FuPoor* pFunc = GetDrawFuncPtr();
62  if (pFunc)
63  pFunc->SetWindow(pWin);
64 
65  // when font from InputContext is used,
66  // this must be moved to change of cursor position:
68 }
69 
71 {
72  SC_MOD()->InputEnterHandler();
74 
75  MakeDrawLayer();
76 
77  ScTabView* pTabView = GetViewData().GetView();
78  SfxBindings& rBindings = GetViewFrame()->GetBindings();
79 
80  vcl::Window* pWin = pTabView->GetActiveWin();
81  ScDrawView* pView = pTabView->GetScDrawView();
82  SdrModel* pDoc = pView->GetModel();
83 
84  const SfxItemSet *pArgs = rReq.GetArgs();
85  sal_uInt16 nNewId = rReq.GetSlot();
86 
87  if ( nNewId == SID_DRAW_CHART )
88  {
89  // #i71254# directly insert a chart instead of drawing its output rectangle
90  FuInsertChart(*this, pWin, pView, pDoc, rReq, LINK( this, ScTabViewShell, DialogClosedHdl ));
91  return;
92  }
93 
94  if ( nNewId == SID_DRAW_SELECT )
95  nNewId = SID_OBJECT_SELECT;
96 
97  sal_uInt16 nNewFormId = 0;
98  if ( nNewId == SID_FM_CREATE_CONTROL && pArgs )
99  {
100  const SfxPoolItem* pItem;
101  if ( pArgs->GetItemState( SID_FM_CONTROL_IDENTIFIER, true, &pItem ) == SfxItemState::SET &&
102  dynamic_cast<const SfxUInt16Item*>( pItem) != nullptr )
103  nNewFormId = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
104  }
105 
106  OUString sStringItemValue;
107  if ( pArgs )
108  {
109  const SfxPoolItem* pItem;
110  if ( pArgs->GetItemState( nNewId, true, &pItem ) == SfxItemState::SET && dynamic_cast<const SfxStringItem*>( pItem) != nullptr )
111  sStringItemValue = static_cast<const SfxStringItem*>(pItem)->GetValue();
112  }
113  bool bSwitchCustom = ( !sStringItemValue.isEmpty() && !sDrawCustom.isEmpty() && sStringItemValue != sDrawCustom );
114 
115  if (nNewId == SID_INSERT_FRAME) // from Tbx button
116  nNewId = SID_DRAW_TEXT;
117 
118  // CTRL-SID_OBJECT_SELECT is used to select the first object,
119  // but not if SID_OBJECT_SELECT is the result of clicking a create function again,
120  // so this must be tested before changing nNewId below.
121  bool bSelectFirst = ( nNewId == SID_OBJECT_SELECT && (rReq.GetModifier() & KEY_MOD1) );
122 
123  bool bEx = IsDrawSelMode();
124  if ( rReq.GetModifier() & KEY_MOD1 )
125  {
126  // always allow keyboard selection also on background layer
127  // also allow creation of default objects if the same object type
128  // was already active
129  bEx = true;
130  }
131  else if ( nNewId == nDrawSfxId && ( nNewId != SID_FM_CREATE_CONTROL ||
132  nNewFormId == nFormSfxId || nNewFormId == 0 ) && !bSwitchCustom )
133  {
134  // #i52871# if a different custom shape is selected, the slot id can be the same,
135  // so the custom shape type string has to be compared, too.
136 
137  // SID_FM_CREATE_CONTROL with nNewFormId==0 (without parameter) comes
138  // from FuConstruct::SimpleMouseButtonUp when deactivating
139  // Execute for the form shell, to deselect the controller
140  if ( nNewId == SID_FM_CREATE_CONTROL )
141  {
142  GetViewData().GetDispatcher().Execute(SID_FM_LEAVE_CREATE);
145  }
146 
147  bEx = !bEx;
148  nNewId = SID_OBJECT_SELECT;
149  }
150  else
151  bEx = true;
152 
153  if ( nDrawSfxId == SID_FM_CREATE_CONTROL && nNewId != nDrawSfxId )
154  {
155  // switching from control- to paint function -> deselect in control-controller
156  GetViewData().GetDispatcher().Execute(SID_FM_LEAVE_CREATE);
159  }
160 
161  SetDrawSelMode(bEx);
162 
163  pView->LockBackgroundLayer( !bEx );
164 
165  if ( bSelectFirst )
166  {
167  // select first draw object if none is selected yet
168  if(!pView->AreObjectsMarked())
169  {
170  // select first object
171  pView->UnmarkAllObj();
172  pView->MarkNextObj(true);
173 
174  // ...and make it visible
175  if(pView->AreObjectsMarked())
176  pView->MakeVisible(pView->GetAllMarkedRect(), *pWin);
177  }
178  }
179 
180  nDrawSfxId = nNewId;
181  sDrawCustom.clear(); // value is set below for custom shapes
182 
183  if (nNewId == SID_DRAW_TEXT || nNewId == SID_DRAW_TEXT_VERTICAL
184  || nNewId == SID_DRAW_TEXT_MARQUEE || nNewId == SID_DRAW_NOTEEDIT)
185  SetDrawTextShell(true);
186  else
187  {
188  if (bEx || pView->GetMarkedObjectList().GetMarkCount() != 0)
190  else
191  SetDrawShell(false);
192  }
193 
194  if (pTabView->GetDrawFuncPtr())
195  {
196  if (pTabView->GetDrawFuncOldPtr() != pTabView->GetDrawFuncPtr())
197  delete pTabView->GetDrawFuncOldPtr();
198 
199  pTabView->GetDrawFuncPtr()->Deactivate();
200  pTabView->SetDrawFuncOldPtr(pTabView->GetDrawFuncPtr());
201  pTabView->SetDrawFuncPtr(nullptr);
202  }
203 
204  SfxRequest aNewReq(rReq);
205  aNewReq.SetSlot(nDrawSfxId);
206 
207  assert(nNewId != SID_DRAW_CHART); //#i71254# handled already above
208 
209  // for LibreOfficeKit - choosing a shape should construct it directly
210  bool bCreateDirectly = false;
211 
212  switch (nNewId)
213  {
214  case SID_OBJECT_SELECT:
215  // not always switch back
216  if(pView->GetMarkedObjectList().GetMarkCount() == 0) SetDrawShell(bEx);
217  pTabView->SetDrawFuncPtr(new FuSelection(*this, pWin, pView, pDoc, aNewReq));
218  break;
219 
220  case SID_DRAW_LINE:
221  case SID_DRAW_XLINE:
222  case SID_LINE_ARROW_END:
223  case SID_LINE_ARROW_CIRCLE:
224  case SID_LINE_ARROW_SQUARE:
225  case SID_LINE_ARROW_START:
226  case SID_LINE_CIRCLE_ARROW:
227  case SID_LINE_SQUARE_ARROW:
228  case SID_LINE_ARROWS:
229  case SID_DRAW_RECT:
230  case SID_DRAW_ELLIPSE:
231  case SID_DRAW_MEASURELINE:
232  pTabView->SetDrawFuncPtr(new FuConstRectangle(*this, pWin, pView, pDoc, aNewReq));
233  break;
234 
235  case SID_DRAW_CAPTION:
236  case SID_DRAW_CAPTION_VERTICAL:
237  pTabView->SetDrawFuncPtr(new FuConstRectangle(*this, pWin, pView, pDoc, aNewReq));
238  pView->SetFrameDragSingles( false );
239  rBindings.Invalidate( SID_BEZIER_EDIT );
240  break;
241 
242  case SID_DRAW_XPOLYGON:
243  case SID_DRAW_XPOLYGON_NOFILL:
244  case SID_DRAW_POLYGON:
245  case SID_DRAW_POLYGON_NOFILL:
246  case SID_DRAW_BEZIER_NOFILL:
247  case SID_DRAW_BEZIER_FILL:
248  case SID_DRAW_FREELINE:
249  case SID_DRAW_FREELINE_NOFILL:
250  pTabView->SetDrawFuncPtr(new FuConstPolygon(*this, pWin, pView, pDoc, aNewReq));
251  break;
252 
253  case SID_DRAW_ARC:
254  case SID_DRAW_PIE:
255  case SID_DRAW_CIRCLECUT:
256  pTabView->SetDrawFuncPtr(new FuConstArc(*this, pWin, pView, pDoc, aNewReq));
257  break;
258 
259  case SID_DRAW_TEXT:
260  case SID_DRAW_TEXT_VERTICAL:
261  case SID_DRAW_TEXT_MARQUEE:
262  case SID_DRAW_NOTEEDIT:
263  pTabView->SetDrawFuncPtr(new FuText(*this, pWin, pView, pDoc, aNewReq));
264  break;
265 
266  case SID_FM_CREATE_CONTROL:
267  SetDrawFormShell(true);
268  pTabView->SetDrawFuncPtr(new FuConstUnoControl(*this, pWin, pView, pDoc, aNewReq));
269  nFormSfxId = nNewFormId;
270  break;
271 
272  case SID_DRAWTBX_CS_BASIC :
273  case SID_DRAWTBX_CS_SYMBOL :
274  case SID_DRAWTBX_CS_ARROW :
275  case SID_DRAWTBX_CS_FLOWCHART :
276  case SID_DRAWTBX_CS_CALLOUT :
277  case SID_DRAWTBX_CS_STAR :
278  case SID_DRAW_CS_ID :
279  {
280  pTabView->SetDrawFuncPtr(new FuConstCustomShape(*this, pWin, pView, pDoc, aNewReq));
281 
282  bCreateDirectly = comphelper::LibreOfficeKit::isActive();
283 
284  if ( nNewId != SID_DRAW_CS_ID )
285  {
286  const SfxStringItem* pEnumCommand = rReq.GetArg<SfxStringItem>(nNewId);
287  if ( pEnumCommand )
288  {
289  SfxBindings& rBind = GetViewFrame()->GetBindings();
290  rBind.Invalidate( nNewId );
291  rBind.Update( nNewId );
292 
293  sDrawCustom = pEnumCommand->GetValue(); // to detect when a different shape type is selected
294  }
295  }
296  }
297  break;
298 
299  default:
300  break;
301  }
302 
303  if (pTabView->GetDrawFuncPtr())
304  pTabView->GetDrawFuncPtr()->Activate();
305 
306  rReq.Done();
307 
308  Invalidate();
309 
310  // Create default drawing objects via keyboard
311  // with qualifier construct directly
312  FuPoor* pFuActual = GetDrawFuncPtr();
313 
314  if(!(pFuActual && ((rReq.GetModifier() & KEY_MOD1) || bCreateDirectly)))
315  return;
316 
317  // Create default drawing objects via keyboard
318  const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
319  sal_uInt32 nDefaultObjectSizeWidth = rAppOpt.GetDefaultObjectSizeWidth();
320  sal_uInt32 nDefaultObjectSizeHeight = rAppOpt.GetDefaultObjectSizeHeight();
321 
322  // calc position and size
323  bool bLOKIsActive = comphelper::LibreOfficeKit::isActive();
324  Point aInsertPos;
325  if(!bLOKIsActive)
326  {
327  tools::Rectangle aVisArea = pWin->PixelToLogic(tools::Rectangle(Point(0,0), pWin->GetOutputSizePixel()));
328  aInsertPos = aVisArea.Center();
329  aInsertPos.AdjustX( -sal_Int32(nDefaultObjectSizeWidth / 2) );
330  aInsertPos.AdjustY( -sal_Int32(nDefaultObjectSizeHeight / 2) );
331  }
332  else
333  {
334  ScViewData& rViewData = GetViewData();
335  aInsertPos = rViewData.getLOKVisibleArea().Center();
337  comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
338  aInsertPos = rViewData.GetPrintTwipsPosFromTileTwips(aInsertPos);
339 
340  aInsertPos.setX(sc::TwipsToHMM(aInsertPos.X()));
341  aInsertPos.setY(sc::TwipsToHMM(aInsertPos.Y()));
342 
343  aInsertPos.AdjustX( -sal_Int32(nDefaultObjectSizeWidth / 2) );
344  aInsertPos.AdjustY( -sal_Int32(nDefaultObjectSizeHeight / 2) );
345  }
346 
347  tools::Rectangle aNewObjectRectangle(aInsertPos, Size(nDefaultObjectSizeWidth, nDefaultObjectSizeHeight));
348 
349  ScDrawView* pDrView = GetScDrawView();
350 
351  if(!pDrView)
352  return;
353 
354  SdrPageView* pPageView = pDrView->GetSdrPageView();
355 
356  if(!pPageView)
357  return;
358 
359  // create the default object
360  SdrObjectUniquePtr pObj = pFuActual->CreateDefaultObject(nNewId, aNewObjectRectangle);
361 
362  if(!pObj)
363  return;
364 
365  // insert into page
366  pView->InsertObjectAtView(pObj.release(), *pPageView);
367 
368  if ( nNewId == SID_DRAW_CAPTION || nNewId == SID_DRAW_CAPTION_VERTICAL )
369  {
370  // use KeyInput to start edit mode (FuText is created).
371  // For FuText objects, edit mode is handled within CreateDefaultObject.
372  // KEY_F2 is handled in FuDraw::KeyInput.
373 
374  pFuActual->KeyInput( KeyEvent( 0, vcl::KeyCode( KEY_F2 ) ) );
375  }
376 }
377 
379 {
380  SfxWhichIter aIter(rSet);
381  sal_uInt16 nWhich = aIter.FirstWhich();
382 
383  while ( nWhich )
384  {
385  switch ( nWhich )
386  {
387  case SID_DRAW_CHART:
388  {
389  bool bOle = GetViewFrame()->GetFrame().IsInPlace();
390  if ( bOle || !SvtModuleOptions().IsChart() )
391  rSet.DisableItem( nWhich );
392  }
393  break;
394 
395  case SID_DRAW_LINE:
396  case SID_DRAW_XLINE:
397  case SID_LINE_ARROW_END:
398  case SID_LINE_ARROW_CIRCLE:
399  case SID_LINE_ARROW_SQUARE:
400  case SID_LINE_ARROW_START:
401  case SID_LINE_CIRCLE_ARROW:
402  case SID_LINE_SQUARE_ARROW:
403  case SID_LINE_ARROWS:
404  case SID_DRAW_MEASURELINE:
405  case SID_DRAW_RECT:
406  case SID_DRAW_ELLIPSE:
407  case SID_DRAW_POLYGON:
408  case SID_DRAW_POLYGON_NOFILL:
409  case SID_DRAW_XPOLYGON:
410  case SID_DRAW_XPOLYGON_NOFILL:
411  case SID_DRAW_BEZIER_FILL:
412  case SID_DRAW_BEZIER_NOFILL:
413  case SID_DRAW_FREELINE:
414  case SID_DRAW_FREELINE_NOFILL:
415  case SID_DRAW_ARC:
416  case SID_DRAW_PIE:
417  case SID_DRAW_CIRCLECUT:
418  case SID_DRAW_TEXT:
419  case SID_DRAW_TEXT_MARQUEE:
420  case SID_DRAW_CAPTION:
421  rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == nWhich ) );
422  break;
423 
424  case SID_DRAW_TEXT_VERTICAL:
425  case SID_DRAW_CAPTION_VERTICAL:
426  if ( !SvtLanguageOptions().IsVerticalTextEnabled() )
427  rSet.DisableItem( nWhich );
428  else
429  rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == nWhich ) );
430  break;
431 
432  case SID_OBJECT_SELECT: // important for the old control-controller
433  rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == SID_OBJECT_SELECT && IsDrawSelMode() ) );
434  break;
435 
436  case SID_DRAWTBX_CS_BASIC:
437  case SID_DRAWTBX_CS_SYMBOL:
438  case SID_DRAWTBX_CS_ARROW:
439  case SID_DRAWTBX_CS_FLOWCHART:
440  case SID_DRAWTBX_CS_CALLOUT:
441  case SID_DRAWTBX_CS_STAR:
442  rSet.Put( SfxStringItem( nWhich, nDrawSfxId == nWhich ? sDrawCustom : OUString() ) );
443  break;
444  }
445  nWhich = aIter.NextWhich();
446  }
447 }
448 
449 bool ScTabViewShell::SelectObject( const OUString& rName )
450 {
451  ScDrawView* pView = GetViewData().GetScDrawView();
452  if (!pView)
453  return false;
454 
455  bool bFound = pView->SelectObject( rName );
456  // DrawShell etc. is handled in MarkListHasChanged
457 
458  return bFound;
459 }
460 
461 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SfxViewFrame * GetViewFrame() const
void UnmarkAllObj(SdrPageView const *pPV=nullptr)
OUString sDrawCustom
Definition: tabvwsh.hxx:98
bool IsDrawSelMode() const
Definition: tabview.hxx:315
size_t GetMarkCount() const
constexpr sal_uInt16 KEY_MOD1
const tools::Rectangle & getLOKVisibleArea() const
The visible area in the client (set by setClientVisibleArea).
Definition: viewdata.hxx:555
std::string GetValue
void UpdateInputContext()
Definition: tabview3.cxx:2966
bool AreObjectsMarked() const
sal_uInt16 FirstWhich()
void ExecDraw(SfxRequest &)
Definition: tabvwsh2.cxx:70
void Done(bool bRemove=false)
Base class for all functions.
Definition: fusel.hxx:28
void SetFrameDragSingles(bool bOn=true)
const SfxItemSet * GetArgs() const
void Invalidate(sal_uInt16 nId)
bool InsertObjectAtView(SdrObject *pObj, SdrPageView &rPV, SdrInsertFlags nOptions=SdrInsertFlags::NONE)
Draw rectangle.
Definition: fuconarc.hxx:26
sal_uInt16 NextWhich()
void LockBackgroundLayer(bool bLock)
Locks/unlocks the background layer that contains background objects.
Definition: drawview.hxx:132
void SetSlot(sal_uInt16 nNewSlot)
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
void SetWindow(vcl::Window *pWin)
Definition: fupoor.hxx:89
void SetDrawFuncPtr(FuPoor *pFuncPtr)
Definition: tabview.hxx:318
SfxFrame & GetFrame() const
bool isCompatFlagSet(Compat flag)
constexpr sal_uInt16 KEY_F2
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
Definition: tabvwsha.cxx:638
virtual bool KeyInput(const KeyEvent &rKEvt)
Definition: fupoor.cxx:135
ScDrawView * GetScDrawView()
Definition: viewdata.cxx:3074
ScViewData & GetViewData()
Definition: tabview.hxx:332
ScGridWindow * GetActiveWin()
Definition: tabview.cxx:883
Base class for Text functions.
Definition: futext.hxx:28
Base class for all functions.
Definition: fuconpol.hxx:26
void SetDrawTextShell(bool bActive)
Definition: tabvwsh4.cxx:638
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
void WindowChanged()
Definition: tabvwsh2.cxx:53
Draw rectangle.
Definition: fuconrec.hxx:26
sal_uInt16 GetModifier() const
virtual SdrView * GetDrawView() const override
Definition: tabvwsh2.cxx:48
#define SC_MOD()
Definition: scmod.hxx:253
Draw Control.
Definition: fuconuno.hxx:28
SfxBindings & GetBindings()
const OUString & GetValue() const
const SdrMarkList & GetMarkedObjectList() const
const T * GetArg(sal_uInt16 nSlotId) const
void SetDrawShell(bool bActive)
Definition: tabvwsh4.cxx:596
Point GetPrintTwipsPosFromTileTwips(const Point &rTileTwipsPos) const
Definition: viewdata.cxx:2477
virtual SdrObjectUniquePtr CreateDefaultObject(const sal_uInt16 nID, const tools::Rectangle &rRectangle)
Definition: fupoor.cxx:217
Size GetOutputSizePixel() const
sal_uInt16 nDrawSfxId
Definition: tabvwsh.hxx:96
void SetActualWin(const OutputDevice *pWin)
Base class for all functions.
Definition: fupoor.hxx:40
bool MarkNextObj(bool bPrev=false)
sal_uInt16 nFormSfxId
Definition: tabvwsh.hxx:97
const tools::Rectangle & GetAllMarkedRect() const
ScDBFunc * GetView() const
Definition: viewdata.cxx:852
Point PixelToLogic(const Point &rDevicePt) const
bool SelectObject(const OUString &rName)
Definition: drawview.cxx:730
void Update(sal_uInt16 nId)
void SetDrawFormShell(bool bActive)
Definition: tabvwsh4.cxx:694
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
sal_uInt16 GetSlot() const
void MakeDrawLayer()
Definition: tabview2.cxx:1393
void DisableItem(sal_uInt16 nWhich)
bool SelectObject(const OUString &rName)
Definition: tabvwsh2.cxx:449
ScDrawView * GetScDrawView()
Definition: tabview.hxx:340
void SetDrawFuncOldPtr(FuPoor *pFuncPtr)
Definition: tabview.hxx:319
bool IsInPlace() const
void SetDrawShellOrSub()
Definition: tabvwsh4.cxx:564
virtual void Invalidate(sal_uInt16 nId=0)
inline::tools::Long TwipsToHMM(::tools::Long nTwips)
Definition: global.hxx:109
SfxDispatcher & GetDispatcher()
Definition: viewdata.cxx:3040
FuPoor * GetDrawFuncPtr()
Definition: tabview.hxx:320
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
SdrPageView * GetSdrPageView() const
void InvalidateAll(bool bWithMsg)
const SfxPoolItem * Execute(sal_uInt16 nSlot, SfxCallMode nCall=SfxCallMode::SLOT, const SfxPoolItem **pArgs=nullptr, sal_uInt16 nModi=0, const SfxPoolItem **pInternalArgs=nullptr)
FuPoor * GetDrawFuncOldPtr()
Definition: tabview.hxx:321
virtual void MakeVisible(const tools::Rectangle &rRect, vcl::Window &rWin) override
Definition: drawview.cxx:840
SdrModel * GetModel() const
sal_Int32 GetDefaultObjectSizeWidth() const
Definition: appoptio.hxx:72
virtual void Activate()
Definition: fupoor.cxx:59
sal_Int32 GetDefaultObjectSizeHeight() const
Definition: appoptio.hxx:74
Point Center() const
void GetDrawState(SfxItemSet &rSet)
Definition: tabvwsh2.cxx:378
void SetDrawSelMode(bool bNew)
Definition: tabview.hxx:316
virtual void Deactivate()
Definition: fupoor.cxx:63