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