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/cjkoptions.hxx>
26#include <sfx2/dispatch.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->GetOutDev());
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
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& rModel = 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, &rModel, rReq, LINK( this, ScTabViewShell, DialogClosedHdl ));
92 return;
93 }
94
95 if ( nNewId == SID_DRAW_SELECT )
96 nNewId = SID_OBJECT_SELECT;
97
98 SdrObjKind eNewFormObjKind = SdrObjKind::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 == SdrObjKind::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, &rModel, 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, &rModel, aNewReq));
234 bCreateDirectly = comphelper::LibreOfficeKit::isActive();
235 break;
236
237 case SID_DRAW_CAPTION:
238 case SID_DRAW_CAPTION_VERTICAL:
239 pTabView->SetDrawFuncPtr(new FuConstRectangle(*this, pWin, pView, &rModel, aNewReq));
240 pView->SetFrameDragSingles( false );
241 rBindings.Invalidate( SID_BEZIER_EDIT );
242 break;
243
244 case SID_DRAW_XPOLYGON:
245 case SID_DRAW_XPOLYGON_NOFILL:
246 case SID_DRAW_POLYGON:
247 case SID_DRAW_POLYGON_NOFILL:
248 case SID_DRAW_BEZIER_NOFILL:
249 case SID_DRAW_BEZIER_FILL:
250 case SID_DRAW_FREELINE:
251 case SID_DRAW_FREELINE_NOFILL:
252 pTabView->SetDrawFuncPtr(new FuConstPolygon(*this, pWin, pView, &rModel, aNewReq));
253 break;
254
255 case SID_DRAW_ARC:
256 case SID_DRAW_PIE:
257 case SID_DRAW_CIRCLECUT:
258 pTabView->SetDrawFuncPtr(new FuConstArc(*this, pWin, pView, &rModel, aNewReq));
259 break;
260
261 case SID_DRAW_TEXT:
262 case SID_DRAW_TEXT_VERTICAL:
263 case SID_DRAW_TEXT_MARQUEE:
264 case SID_DRAW_NOTEEDIT:
265 pTabView->SetDrawFuncPtr(new FuText(*this, pWin, pView, &rModel, aNewReq));
266 bCreateDirectly = comphelper::LibreOfficeKit::isActive();
267 break;
268
269 case SID_FM_CREATE_CONTROL:
270 SetDrawFormShell(true);
271 pTabView->SetDrawFuncPtr(new FuConstUnoControl(*this, pWin, pView, &rModel, aNewReq));
272 eFormObjKind = eNewFormObjKind;
273 break;
274
275 case SID_DRAWTBX_CS_BASIC :
276 case SID_DRAWTBX_CS_SYMBOL :
277 case SID_DRAWTBX_CS_ARROW :
278 case SID_DRAWTBX_CS_FLOWCHART :
279 case SID_DRAWTBX_CS_CALLOUT :
280 case SID_DRAWTBX_CS_STAR :
281 case SID_DRAW_CS_ID :
282 {
283 pTabView->SetDrawFuncPtr(new FuConstCustomShape(*this, pWin, pView, &rModel, aNewReq));
284
285 bCreateDirectly = comphelper::LibreOfficeKit::isActive();
286
287 if ( nNewId != SID_DRAW_CS_ID )
288 {
289 const SfxStringItem* pEnumCommand = rReq.GetArg<SfxStringItem>(nNewId);
290 if ( pEnumCommand )
291 {
293 rBind.Invalidate( nNewId );
294 rBind.Update( nNewId );
295
296 sDrawCustom = pEnumCommand->GetValue(); // to detect when a different shape type is selected
297 }
298 }
299 }
300 break;
301
302 default:
303 break;
304 }
305
306 if (pTabView->GetDrawFuncPtr())
307 pTabView->GetDrawFuncPtr()->Activate();
308
309 rReq.Done();
310
311 Invalidate();
312
313 // Create default drawing objects via keyboard
314 // with qualifier construct directly
315 FuPoor* pFuActual = GetDrawFuncPtr();
316
317 if(!(pFuActual && ((rReq.GetModifier() & KEY_MOD1) || bCreateDirectly)))
318 return;
319
320 // Create default drawing objects via keyboard
321 const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
322 sal_uInt32 nDefaultObjectSizeWidth = rAppOpt.GetDefaultObjectSizeWidth();
323 sal_uInt32 nDefaultObjectSizeHeight = rAppOpt.GetDefaultObjectSizeHeight();
324
325 // calc position and size
326 bool bLOKIsActive = comphelper::LibreOfficeKit::isActive();
327 Point aInsertPos;
328 if(!bLOKIsActive)
329 {
331 aInsertPos = aVisArea.Center();
332 aInsertPos.AdjustX( -sal_Int32(nDefaultObjectSizeWidth / 2) );
333 aInsertPos.AdjustY( -sal_Int32(nDefaultObjectSizeHeight / 2) );
334 }
335 else
336 {
337 ScViewData& rViewData = GetViewData();
338 tools::Long nLayoutSign = rViewData.GetDocument().IsLayoutRTL(rViewData.GetTabNo()) ? -1 : 1;
339 aInsertPos = rViewData.getLOKVisibleArea().Center();
341 comphelper::LibreOfficeKit::Compat::scPrintTwipsMsgs))
342 aInsertPos = rViewData.GetPrintTwipsPosFromTileTwips(aInsertPos);
343
344 aInsertPos.setX(nLayoutSign * convertTwipToMm100(aInsertPos.X()));
345 aInsertPos.setY(convertTwipToMm100(aInsertPos.Y()));
346
347 aInsertPos.AdjustX( -sal_Int32(nDefaultObjectSizeWidth / 2) );
348 aInsertPos.AdjustY( -sal_Int32(nDefaultObjectSizeHeight / 2) );
349 }
350
351 tools::Rectangle aNewObjectRectangle(aInsertPos, Size(nDefaultObjectSizeWidth, nDefaultObjectSizeHeight));
352
353 ScDrawView* pDrView = GetScDrawView();
354
355 if(!pDrView)
356 return;
357
358 SdrPageView* pPageView = pDrView->GetSdrPageView();
359
360 if(!pPageView)
361 return;
362
363 // create the default object
364 rtl::Reference<SdrObject> pObj = pFuActual->CreateDefaultObject(nNewId, aNewObjectRectangle);
365
366 if(!pObj)
367 return;
368
369 // insert into page
370 pView->InsertObjectAtView(pObj.get(), *pPageView);
371
372 switch ( nNewId )
373 {
374 case SID_DRAW_CAPTION:
375 case SID_DRAW_CAPTION_VERTICAL:
376 case SID_DRAW_TEXT:
377 case SID_DRAW_TEXT_VERTICAL:
378 // use KeyInput to start edit mode (FuText is created).
379 // For FuText objects, edit mode is handled within CreateDefaultObject.
380 // KEY_F2 is handled in FuDraw::KeyInput.
381
382 pFuActual->KeyInput( KeyEvent( 0, vcl::KeyCode( KEY_F2 ) ) );
383 break;
384 default:
385 break;
386 }
387}
388
390{
391 SfxWhichIter aIter(rSet);
392 sal_uInt16 nWhich = aIter.FirstWhich();
393
394 while ( nWhich )
395 {
396 switch ( nWhich )
397 {
398 case SID_DRAW_CHART:
399 {
400 bool bOle = GetViewFrame().GetFrame().IsInPlace();
401 if ( bOle || !SvtModuleOptions().IsChart() )
402 rSet.DisableItem( nWhich );
403 }
404 break;
405
406 case SID_DRAW_LINE:
407 case SID_DRAW_XLINE:
408 case SID_LINE_ARROW_END:
409 case SID_LINE_ARROW_CIRCLE:
410 case SID_LINE_ARROW_SQUARE:
411 case SID_LINE_ARROW_START:
412 case SID_LINE_CIRCLE_ARROW:
413 case SID_LINE_SQUARE_ARROW:
414 case SID_LINE_ARROWS:
415 case SID_DRAW_MEASURELINE:
416 case SID_DRAW_RECT:
417 case SID_DRAW_ELLIPSE:
418 case SID_DRAW_POLYGON:
419 case SID_DRAW_POLYGON_NOFILL:
420 case SID_DRAW_XPOLYGON:
421 case SID_DRAW_XPOLYGON_NOFILL:
422 case SID_DRAW_BEZIER_FILL:
423 case SID_DRAW_BEZIER_NOFILL:
424 case SID_DRAW_FREELINE:
425 case SID_DRAW_FREELINE_NOFILL:
426 case SID_DRAW_ARC:
427 case SID_DRAW_PIE:
428 case SID_DRAW_CIRCLECUT:
429 case SID_DRAW_TEXT:
430 case SID_DRAW_TEXT_MARQUEE:
431 case SID_DRAW_CAPTION:
432 rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == nWhich ) );
433 break;
434
435 case SID_DRAW_TEXT_VERTICAL:
436 case SID_DRAW_CAPTION_VERTICAL:
438 rSet.DisableItem( nWhich );
439 else
440 rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == nWhich ) );
441 break;
442
443 case SID_OBJECT_SELECT: // important for the old control-controller
444 rSet.Put( SfxBoolItem( nWhich, nDrawSfxId == SID_OBJECT_SELECT && IsDrawSelMode() ) );
445 break;
446
447 case SID_DRAWTBX_CS_BASIC:
448 case SID_DRAWTBX_CS_SYMBOL:
449 case SID_DRAWTBX_CS_ARROW:
450 case SID_DRAWTBX_CS_FLOWCHART:
451 case SID_DRAWTBX_CS_CALLOUT:
452 case SID_DRAWTBX_CS_STAR:
453 rSet.Put( SfxStringItem( nWhich, nDrawSfxId == nWhich ? sDrawCustom : OUString() ) );
454 break;
455 }
456 nWhich = aIter.NextWhich();
457 }
458}
459
460bool ScTabViewShell::SelectObject( std::u16string_view rName )
461{
463 if (!pView)
464 return false;
465
466 bool bFound = pView->SelectObject( rName );
467 // DrawShell etc. is handled in MarkListHasChanged
468
469 return bFound;
470}
471
472/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
constexpr auto convertTwipToMm100(N n)
sal_uInt16 GetValue() const
const OUString & GetValue() const
Draw rectangle.
Definition: fuconarc.hxx:26
Base class for all functions.
Definition: fuconpol.hxx:26
Draw rectangle.
Definition: fuconrec.hxx:26
Draw Control.
Definition: fuconuno.hxx:30
Base class for all functions.
Definition: fupoor.hxx:40
virtual bool KeyInput(const KeyEvent &rKEvt)
Definition: fupoor.cxx:137
virtual rtl::Reference< SdrObject > CreateDefaultObject(const sal_uInt16 nID, const tools::Rectangle &rRectangle)
Definition: fupoor.cxx:218
virtual void Activate()
Definition: fupoor.cxx:61
void SetWindow(vcl::Window *pWin)
Definition: fupoor.hxx:88
virtual void Deactivate()
Definition: fupoor.cxx:65
Base class for all functions.
Definition: fusel.hxx:28
Base class for Text functions.
Definition: futext.hxx:28
constexpr tools::Long Y() const
void setX(tools::Long nX)
void setY(tools::Long nY)
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
sal_Int32 GetDefaultObjectSizeWidth() const
Definition: appoptio.hxx:71
sal_Int32 GetDefaultObjectSizeHeight() const
Definition: appoptio.hxx:73
SC_DLLPUBLIC bool IsLayoutRTL(SCTAB nTab) const
Definition: document.cxx:974
virtual void MakeVisible(const tools::Rectangle &rRect, vcl::Window &rWin) override
Definition: drawview.cxx:835
bool SelectObject(std::u16string_view rName)
Definition: drawview.cxx:725
void LockBackgroundLayer(bool bLock)
Locks/unlocks the background layer that contains background objects.
Definition: drawview.hxx:131
SdrObjKind eFormObjKind
Definition: tabvwsh.hxx:99
void SetDrawTextShell(bool bActive)
Definition: tabvwsh4.cxx:655
virtual SdrView * GetDrawView() const override
Definition: tabvwsh2.cxx:49
void SetDrawShellOrSub()
Definition: tabvwsh4.cxx:581
void ExecDraw(SfxRequest &)
Definition: tabvwsh2.cxx:71
void SetDrawFormShell(bool bActive)
Definition: tabvwsh4.cxx:730
void UpdateInputHandler(bool bForce=false, bool bStopEditing=true)
Definition: tabvwsha.cxx:690
OUString sDrawCustom
Definition: tabvwsh.hxx:100
bool SelectObject(std::u16string_view rName)
Definition: tabvwsh2.cxx:460
void WindowChanged()
Definition: tabvwsh2.cxx:54
void GetDrawState(SfxItemSet &rSet)
Definition: tabvwsh2.cxx:389
void SetDrawShell(bool bActive)
Definition: tabvwsh4.cxx:613
sal_uInt16 nDrawSfxId
Definition: tabvwsh.hxx:98
FuPoor * GetDrawFuncPtr()
Definition: tabview.hxx:332
void SetDrawFuncOldPtr(FuPoor *pFuncPtr)
Definition: tabview.hxx:331
void SetDrawFuncPtr(FuPoor *pFuncPtr)
Definition: tabview.hxx:330
void MakeDrawLayer()
Definition: tabview2.cxx:1529
ScViewData & GetViewData()
Definition: tabview.hxx:344
ScGridWindow * GetActiveWin()
Definition: tabview.cxx:878
void SetDrawSelMode(bool bNew)
Definition: tabview.hxx:328
ScDrawView * GetScDrawView()
Definition: tabview.hxx:352
bool IsDrawSelMode() const
Definition: tabview.hxx:327
FuPoor * GetDrawFuncOldPtr()
Definition: tabview.hxx:333
void UpdateInputContext()
Definition: tabview3.cxx:3005
SfxDispatcher & GetDispatcher()
Definition: viewdata.cxx:3140
SCTAB GetTabNo() const
Definition: viewdata.hxx:395
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
ScDBFunc * GetView() const
Definition: viewdata.cxx:864
Point GetPrintTwipsPosFromTileTwips(const Point &rTileTwipsPos) const
Definition: viewdata.cxx:2568
const tools::Rectangle & getLOKVisibleArea() const
The visible area in the client (set by setClientVisibleArea).
Definition: viewdata.hxx:573
ScDrawView * GetScDrawView()
Definition: viewdata.cxx:3174
bool InsertObjectAtView(SdrObject *pObj, SdrPageView &rPV, SdrInsertFlags nOptions=SdrInsertFlags::NONE)
size_t GetMarkCount() const
void SetFrameDragSingles(bool bOn=true)
const SdrMarkList & GetMarkedObjectList() const
bool AreObjectsMarked() const
void UnmarkAllObj(SdrPageView const *pPV=nullptr)
const tools::Rectangle & GetAllMarkedRect() const
bool MarkNextObj(bool bPrev=false)
SdrPageView * GetSdrPageView() const
SdrModel & GetModel() const
void SetActualWin(const OutputDevice *pWin)
void Update(sal_uInt16 nId)
void Invalidate(sal_uInt16 nId)
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)
bool IsInPlace() const
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
void DisableItem(sal_uInt16 nWhich)
sal_uInt16 GetSlot() const
const SfxItemSet * GetArgs() const
void SetSlot(sal_uInt16 nNewSlot)
const T * GetArg(sal_uInt16 nSlotId) const
sal_uInt16 GetModifier() const
void Done(bool bRemove=false)
virtual void Invalidate(sal_uInt16 nId=0)
SfxBindings & GetBindings()
SfxFrame & GetFrame() const
SfxViewFrame & GetViewFrame() const
sal_uInt16 FirstWhich()
sal_uInt16 NextWhich()
constexpr Point Center() const
::OutputDevice const * GetOutDev() const
Point PixelToLogic(const Point &rDevicePt) const
Size GetOutputSizePixel() const
constexpr sal_uInt16 KEY_F2
constexpr sal_uInt16 KEY_MOD1
bool IsVerticalTextEnabled()
bool isCompatFlagSet(Compat flag)
long Long
#define SC_MOD()
Definition: scmod.hxx:247
static SfxItemSet & rSet
SdrObjKind