LibreOffice Module sc (master) 1
cellsh4.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 <sfx2/request.hxx>
21#include <osl/diagnose.h>
22
23#include <cellsh.hxx>
24#include <tabvwsh.hxx>
25#include <global.hxx>
26#include <scmod.hxx>
27#include <inputhdl.hxx>
28#include <inputwin.hxx>
29#include <document.hxx>
30#include <sc.hrc>
31
33{
34 ScViewData& rData = GetViewData();
35 ScTabViewShell* pTabViewShell = rData.GetViewShell();
36 const SfxItemSet* pReqArgs = rReq.GetArgs();
37 sal_uInt16 nSlotId = rReq.GetSlot();
38 SCCOLROW nRepeat = 1;
39 bool bSel = false;
40 bool bKeep = false;
41
42 if ( pReqArgs != nullptr )
43 {
44 const SfxPoolItem* pItem;
45 if (pReqArgs->HasItem(FN_PARAM_1, &pItem))
46 nRepeat = static_cast<SCCOLROW>(static_cast<const SfxInt16Item*>(pItem)->GetValue());
47 if (pReqArgs->HasItem(FN_PARAM_2, &pItem))
48 bSel = static_cast<const SfxBoolItem*>(pItem)->GetValue();
49 }
50 else
51 {
52 // evaluate locked selection mode
53
54 sal_uInt16 nLocked = pTabViewShell->GetLockedModifiers();
55 if ( nLocked & KEY_SHIFT )
56 bSel = true; // EXT
57 else if ( nLocked & KEY_MOD1 )
58 {
59 // ADD mode: keep the selection, start a new block when marking with shift again
60 bKeep = true;
61 }
62 }
63
64 if (bSel)
65 {
66 switch (nSlotId)
67 {
68 case SID_CURSORDOWN:
69 rReq.SetSlot(SID_CURSORDOWN_SEL);
70 break;
71 case SID_CURSORUP:
72 rReq.SetSlot(SID_CURSORUP_SEL);
73 break;
74 case SID_CURSORRIGHT:
75 rReq.SetSlot(SID_CURSORRIGHT_SEL);
76 break;
77 case SID_CURSORLEFT:
78 rReq.SetSlot(SID_CURSORLEFT_SEL);
79 break;
80 case SID_CURSORPAGEDOWN:
81 rReq.SetSlot(SID_CURSORPAGEDOWN_SEL);
82 break;
83 case SID_CURSORPAGEUP:
84 rReq.SetSlot(SID_CURSORPAGEUP_SEL);
85 break;
86 case SID_CURSORBLKDOWN:
87 rReq.SetSlot(SID_CURSORBLKDOWN_SEL);
88 break;
89 case SID_CURSORBLKUP:
90 rReq.SetSlot(SID_CURSORBLKUP_SEL);
91 break;
92 case SID_CURSORBLKRIGHT:
93 rReq.SetSlot(SID_CURSORBLKRIGHT_SEL);
94 break;
95 case SID_CURSORBLKLEFT:
96 rReq.SetSlot(SID_CURSORBLKLEFT_SEL);
97 break;
98 default:
99 ;
100 }
101 ExecuteCursorSel(rReq);
102 return;
103 }
104
105 SCCOLROW nRTLSign = 1;
106 if ( rData.GetDocument().IsLayoutRTL( rData.GetTabNo() ) )
107 {
109 nRTLSign = -1;
110 }
111
112 // once extra, so that the cursor will not be painted too often with ExecuteInputDirect:
113 pTabViewShell->HideAllCursors();
114
115 // #i123629#
116 if( pTabViewShell->GetCurObjectSelectionType() == OST_Editing )
117 pTabViewShell->SetForceFocusOnCurCell(true);
118 else
119 pTabViewShell->SetForceFocusOnCurCell(false);
120
121 // If ScrollLock key is active, cell cursor stays on the current cell while
122 // scrolling the grid.
123 bool bScrollLock = false;
124 KeyIndicatorState eState = pFrameWin->GetIndicatorState();
125 if (eState & KeyIndicatorState::SCROLLLOCK)
126 bScrollLock = true;
127
128 //OS: once for all should do, however!
129 pTabViewShell->ExecuteInputDirect();
130 switch ( nSlotId )
131 {
132 case SID_CURSORDOWN:
133 if (bScrollLock)
134 pTabViewShell->ScrollY( nRepeat, SC_SPLIT_BOTTOM );
135 else
136 pTabViewShell->MoveCursorRel( 0, nRepeat, SC_FOLLOW_LINE, bSel, bKeep );
137 break;
138
139 case SID_CURSORBLKDOWN:
140 pTabViewShell->MoveCursorArea( 0, nRepeat, SC_FOLLOW_JUMP, bSel, bKeep );
141 break;
142
143 case SID_CURSORUP:
144 if (bScrollLock)
145 pTabViewShell->ScrollY( -nRepeat, SC_SPLIT_BOTTOM);
146 else
147 pTabViewShell->MoveCursorRel( 0, -nRepeat, SC_FOLLOW_LINE, bSel, bKeep );
148 break;
149
150 case SID_CURSORBLKUP:
151 pTabViewShell->MoveCursorArea( 0, -nRepeat, SC_FOLLOW_JUMP, bSel, bKeep );
152 break;
153
154 case SID_CURSORLEFT:
155 if (bScrollLock)
156 pTabViewShell->ScrollX( static_cast<SCCOL>(-nRepeat * nRTLSign), SC_SPLIT_LEFT);
157 else
158 pTabViewShell->MoveCursorRel( static_cast<SCCOL>(-nRepeat * nRTLSign), 0, SC_FOLLOW_LINE, bSel, bKeep );
159 break;
160
161 case SID_CURSORBLKLEFT:
162 pTabViewShell->MoveCursorArea( static_cast<SCCOL>(-nRepeat * nRTLSign), 0, SC_FOLLOW_JUMP, bSel, bKeep );
163 break;
164
165 case SID_CURSORRIGHT:
166 if (bScrollLock)
167 pTabViewShell->ScrollX( static_cast<SCCOL>(nRepeat * nRTLSign), SC_SPLIT_LEFT);
168 else
169 pTabViewShell->MoveCursorRel( static_cast<SCCOL>(nRepeat * nRTLSign), 0, SC_FOLLOW_LINE, bSel, bKeep );
170 break;
171
172 case SID_CURSORBLKRIGHT:
173 pTabViewShell->MoveCursorArea( static_cast<SCCOL>(nRepeat * nRTLSign), 0, SC_FOLLOW_JUMP, bSel, bKeep );
174 break;
175
176 case SID_CURSORPAGEDOWN:
177 if (bScrollLock)
178 {
179 SCCOL nPageX;
180 SCROW nPageY;
181 pTabViewShell->GetPageMoveEndPosition( 0, nRepeat, nPageX, nPageY);
182 pTabViewShell->ScrollY( nPageY, SC_SPLIT_BOTTOM);
183 }
184 else
185 pTabViewShell->MoveCursorPage( 0, nRepeat, SC_FOLLOW_FIX, bSel, bKeep );
186 break;
187
188 case SID_CURSORPAGEUP:
189 if (bScrollLock)
190 {
191 SCCOL nPageX;
192 SCROW nPageY;
193 pTabViewShell->GetPageMoveEndPosition( 0, nRepeat, nPageX, nPageY);
194 pTabViewShell->ScrollY( -nPageY, SC_SPLIT_BOTTOM);
195 }
196 else
197 pTabViewShell->MoveCursorPage( 0, -nRepeat, SC_FOLLOW_FIX, bSel, bKeep );
198 break;
199
200 case SID_CURSORPAGERIGHT_: //XXX !!!
201 if (bScrollLock)
202 {
203 SCCOL nPageX;
204 SCROW nPageY;
205 pTabViewShell->GetPageMoveEndPosition( static_cast<SCCOL>(nRepeat), 0, nPageX, nPageY);
206 pTabViewShell->ScrollX( nPageX, SC_SPLIT_LEFT);
207 }
208 else
209 pTabViewShell->MoveCursorPage( static_cast<SCCOL>(nRepeat), 0, SC_FOLLOW_FIX, bSel, bKeep );
210 break;
211
212 case SID_CURSORPAGELEFT_: //XXX !!!
213 if (bScrollLock)
214 {
215 SCCOL nPageX;
216 SCROW nPageY;
217 pTabViewShell->GetPageMoveEndPosition( static_cast<SCCOL>(nRepeat), 0, nPageX, nPageY);
218 pTabViewShell->ScrollX( -nPageX, SC_SPLIT_LEFT);
219 }
220 else
221 pTabViewShell->MoveCursorPage( static_cast<SCCOL>(-nRepeat), 0, SC_FOLLOW_FIX, bSel, bKeep );
222 break;
223
224 default:
225 OSL_FAIL("Unknown message in ViewShell (Cursor)");
226 return;
227 }
228
229 pTabViewShell->ShowAllCursors();
230
231 rReq.AppendItem( SfxInt16Item(FN_PARAM_1, static_cast<sal_Int16>(nRepeat)) );
232 rReq.AppendItem( SfxBoolItem(FN_PARAM_2, bSel) );
233 rReq.Done();
234}
235
236void ScCellShell::GetStateCursor( SAL_UNUSED_PARAMETER SfxItemSet& /* rSet */ )
237{
238}
239
241{
242 sal_uInt16 nSlotId = rReq.GetSlot();
243 ScTabViewShell* pViewShell = GetViewData().GetViewShell();
244 ScInputHandler* pInputHdl = pViewShell->GetInputHandler();
245 pViewShell->HideAllCursors();
246 if (pInputHdl && pInputHdl->IsInputMode())
247 {
248 // the current cell is in edit mode. Commit the text before moving on.
249 pViewShell->ExecuteInputDirect();
250 }
251
252 SCCOLROW nRepeat = 1;
253 const SfxItemSet* pReqArgs = rReq.GetArgs();
254 // get repetition
255 if ( pReqArgs != nullptr )
256 {
257 const SfxPoolItem* pItem;
258 if (pReqArgs->HasItem(FN_PARAM_1, &pItem))
259 nRepeat = static_cast<SCCOLROW>(static_cast<const SfxInt16Item*>(pItem)->GetValue());
260 }
261
262 SCROW nMovY = nRepeat;
263 // Horizontal direction depends on whether or not the UI language is RTL.
264 SCCOL nMovX = nRepeat;
266 {
267 // mirror horizontal movement for right-to-left mode.
268 nMovX = -nRepeat;
269 }
270
271 switch (nSlotId)
272 {
273 case SID_CURSORDOWN_SEL:
274 pViewShell->ExpandBlock(0, nMovY, SC_FOLLOW_LINE);
275 break;
276 case SID_CURSORUP_SEL:
277 pViewShell->ExpandBlock(0, -nMovY, SC_FOLLOW_LINE);
278 break;
279 case SID_CURSORRIGHT_SEL:
280 pViewShell->ExpandBlock(nMovX, 0, SC_FOLLOW_LINE);
281 break;
282 case SID_CURSORLEFT_SEL:
283 pViewShell->ExpandBlock(-nMovX, 0, SC_FOLLOW_LINE);
284 break;
285 case SID_CURSORPAGEUP_SEL:
286 pViewShell->ExpandBlockPage(0, -nMovY);
287 break;
288 case SID_CURSORPAGEDOWN_SEL:
289 pViewShell->ExpandBlockPage(0, nMovY);
290 break;
291 case SID_CURSORPAGERIGHT_SEL:
292 pViewShell->ExpandBlockPage(nMovX, 0);
293 break;
294 case SID_CURSORPAGELEFT_SEL:
295 pViewShell->ExpandBlockPage(-nMovX, 0);
296 break;
297 case SID_CURSORBLKDOWN_SEL:
298 pViewShell->ExpandBlockArea(0, nMovY);
299 break;
300 case SID_CURSORBLKUP_SEL:
301 pViewShell->ExpandBlockArea(0, -nMovY);
302 break;
303 case SID_CURSORBLKRIGHT_SEL:
304 pViewShell->ExpandBlockArea(nMovX , 0);
305 break;
306 case SID_CURSORBLKLEFT_SEL:
307 pViewShell->ExpandBlockArea(-nMovX, 0);
308 break;
309 default:
310 ;
311 }
312 pViewShell->ShowAllCursors();
313
314 rReq.AppendItem( SfxInt16Item(FN_PARAM_1,static_cast<sal_Int16>(nRepeat)) );
315 rReq.Done();
316}
317
319{
320 ScTabViewShell* pTabViewShell = GetViewData().GetViewShell();
321 sal_uInt16 nSlotId = rReq.GetSlot();
322 const SfxItemSet* pReqArgs = rReq.GetArgs();
323
324 if(nSlotId != SID_CURSORTOPOFSCREEN && nSlotId != SID_CURSORENDOFSCREEN)
325 pTabViewShell->ExecuteInputDirect();
326 switch ( nSlotId )
327 {
328 case SID_NEXT_TABLE:
329 case SID_NEXT_TABLE_SEL:
330 pTabViewShell->SelectNextTab( 1, (nSlotId == SID_NEXT_TABLE_SEL) );
331 break;
332
333 case SID_PREV_TABLE:
334 case SID_PREV_TABLE_SEL:
335 pTabViewShell->SelectNextTab( -1, (nSlotId == SID_PREV_TABLE_SEL) );
336 break;
337
338 // cursor movements in range do not originate from Basic,
339 // because the ScSbxRange-object changes the marking at input
340
341 case SID_NEXT_UNPROTECT:
342 pTabViewShell->FindNextUnprot( false, !rReq.IsAPI() );
343 break;
344
345 case SID_PREV_UNPROTECT:
346 pTabViewShell->FindNextUnprot( true, !rReq.IsAPI() );
347 break;
348
349 case SID_CURSORENTERUP:
350 if (rReq.IsAPI())
351 pTabViewShell->MoveCursorRel( 0, -1, SC_FOLLOW_LINE, false );
352 else
353 pTabViewShell->MoveCursorEnter( true );
354 break;
355
356 case SID_CURSORENTERDOWN:
357 if (rReq.IsAPI())
358 pTabViewShell->MoveCursorRel( 0, 1, SC_FOLLOW_LINE, false );
359 else
360 pTabViewShell->MoveCursorEnter( false );
361 break;
362
363 case SID_SELECT_COL:
364 {
365 const SfxPoolItem* pColItem;
366 const SfxPoolItem* pModifierItem;
367 if ( pReqArgs && pReqArgs->HasItem( FN_PARAM_1, &pColItem ) &&
368 pReqArgs->HasItem( FN_PARAM_2, &pModifierItem ) )
369 {
370 SCCOL nCol = static_cast<SCCOL>(static_cast<const SfxInt32Item*>(pColItem)->GetValue());
371 sal_Int16 nModifier = static_cast<const SfxInt16Item*>(pModifierItem)->GetValue();
372
373 pTabViewShell->MarkColumns( nCol, nModifier );
374 }
375 else
376 pTabViewShell->MarkColumns();
377 }
378 break;
379
380 case SID_SELECT_ROW:
381 {
382 const SfxPoolItem* pRowItem;
383 const SfxPoolItem* pModifierItem;
384 if ( pReqArgs && pReqArgs->HasItem( FN_PARAM_1, &pRowItem ) &&
385 pReqArgs->HasItem( FN_PARAM_2, &pModifierItem ) )
386 {
387 SCROW nRow = static_cast<SCROW>(static_cast<const SfxInt32Item*>(pRowItem)->GetValue());
388 sal_Int16 nModifier = static_cast<const SfxInt16Item*>(pModifierItem)->GetValue();
389
390 pTabViewShell->MarkRows( nRow, nModifier );
391 }
392 else
393 pTabViewShell->MarkRows();
394 }
395 break;
396
397 case SID_SELECT_NONE:
398 pTabViewShell->Unmark();
399 break;
400
401 case SID_ALIGNCURSOR:
403 break;
404
405 case SID_MARKDATAAREA:
406 pTabViewShell->MarkDataArea();
407 break;
408
409 case SID_MARKARRAYFORMULA:
410 pTabViewShell->MarkMatrixFormula();
411 break;
412
413 case SID_SETINPUTMODE:
414 SC_MOD()->SetInputMode( SC_INPUT_TABLE );
415 break;
416
417 case SID_FOCUS_INPUTLINE:
418 {
419 ScInputHandler* pHdl = SC_MOD()->GetInputHdl( pTabViewShell );
420 if (pHdl)
421 {
422 ScInputWindow* pWin = pHdl->GetInputWindow();
423 if (pWin)
424 pWin->SwitchToTextWin();
425 }
426 }
427 break;
428
429 case SID_CURSORTOPOFSCREEN:
430 pTabViewShell->MoveCursorScreen( 0, -1, SC_FOLLOW_LINE, false );
431 break;
432
433 case SID_CURSORENDOFSCREEN:
434 pTabViewShell->MoveCursorScreen( 0, 1, SC_FOLLOW_LINE, false );
435 break;
436
437 default:
438 OSL_FAIL("Unknown message in ViewShell (Cursor)");
439 return;
440 }
441
442 rReq.Done();
443}
444
446{
447 sal_uInt16 nSlotId = rReq.GetSlot();
448 switch ( nSlotId )
449 {
450 case SID_CURSORHOME_SEL: rReq.SetSlot( SID_CURSORHOME ); break;
451 case SID_CURSOREND_SEL: rReq.SetSlot( SID_CURSOREND ); break;
452 case SID_CURSORTOPOFFILE_SEL: rReq.SetSlot( SID_CURSORTOPOFFILE ); break;
453 case SID_CURSORENDOFFILE_SEL: rReq.SetSlot( SID_CURSORENDOFFILE ); break;
454 default:
455 OSL_FAIL("Unknown message in ViewShell (ExecutePageSel)");
456 return;
457 }
458 rReq.AppendItem( SfxBoolItem(FN_PARAM_2, true) );
459 ExecuteSlot( rReq, GetInterface() );
460}
461
463{
464 ScTabViewShell* pTabViewShell = GetViewData().GetViewShell();
465 const SfxItemSet* pReqArgs = rReq.GetArgs();
466 sal_uInt16 nSlotId = rReq.GetSlot();
467 bool bSel = false;
468 bool bKeep = false;
469
470 if ( pReqArgs != nullptr )
471 {
472 const SfxPoolItem* pItem;
473 if (pReqArgs->HasItem(FN_PARAM_2, &pItem))
474 bSel = static_cast<const SfxBoolItem*>(pItem)->GetValue();
475 }
476 else
477 {
478 // evaluate locked selection mode
479
480 sal_uInt16 nLocked = pTabViewShell->GetLockedModifiers();
481 if ( nLocked & KEY_SHIFT )
482 bSel = true; // EXT
483 else if ( nLocked & KEY_MOD1 )
484 {
485 // ADD mode: keep the selection, start a new block when marking with shift again
486 bKeep = true;
487 }
488 }
489
490 pTabViewShell->ExecuteInputDirect();
491 switch ( nSlotId )
492 {
493 case SID_CURSORHOME:
494 pTabViewShell->MoveCursorEnd( -1, 0, SC_FOLLOW_LINE, bSel, bKeep );
495 break;
496
497 case SID_CURSOREND:
498 pTabViewShell->MoveCursorEnd( 1, 0, SC_FOLLOW_JUMP, bSel, bKeep );
499 break;
500
501 case SID_CURSORTOPOFFILE:
502 pTabViewShell->MoveCursorEnd( -1, -1, SC_FOLLOW_LINE, bSel, bKeep );
503 break;
504
505 case SID_CURSORENDOFFILE:
506 pTabViewShell->MoveCursorEnd( 1, 1, SC_FOLLOW_JUMP, bSel, bKeep );
507 break;
508
509 default:
510 OSL_FAIL("Unknown message in ViewShell (ExecutePage)");
511 return;
512 }
513
514 rReq.AppendItem( SfxBoolItem(FN_PARAM_2, bSel) );
515 rReq.Done();
516}
517
518/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void ExecutePage(SfxRequest &rReq)
Definition: cellsh4.cxx:462
static void GetStateCursor(SfxItemSet &rSet)
Definition: cellsh4.cxx:236
void ExecuteCursor(SfxRequest &rReq)
Definition: cellsh4.cxx:32
void ExecuteMove(SfxRequest &rReq)
Definition: cellsh4.cxx:318
VclPtr< vcl::Window > pFrameWin
Definition: cellsh.hxx:71
void ExecuteCursorSel(SfxRequest &rReq)
Definition: cellsh4.cxx:240
void ExecutePageSel(SfxRequest &rReq)
Definition: cellsh4.cxx:445
SC_DLLPUBLIC bool IsLayoutRTL(SCTAB nTab) const
Definition: document.cxx:998
ScViewData & GetViewData()
Definition: formatsh.hxx:34
bool IsInputMode() const
Definition: inputhdl.hxx:186
ScInputWindow * GetInputWindow()
Definition: inputhdl.hxx:264
void SwitchToTextWin()
Definition: inputwin.cxx:652
void SetForceFocusOnCurCell(bool bFlag)
Definition: tabvwsh.hxx:389
void ExecuteInputDirect()
Definition: tabvwsha.cxx:654
const ScInputHandler * GetInputHandler() const
Definition: tabvwsh.hxx:238
ObjectSelectionType GetCurObjectSelectionType() const
Definition: tabvwsh.hxx:305
sal_uInt16 GetLockedModifiers() const
Definition: tabview.cxx:1905
void MarkRows()
Definition: tabview3.cxx:1598
void AlignToCursor(SCCOL nCurX, SCROW nCurY, ScFollowMode eMode, const ScSplitPos *pWhich=nullptr)
Definition: tabview3.cxx:920
void MarkDataArea(bool bIncludeCursor=true)
Definition: tabview3.cxx:1680
void MoveCursorEnd(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, bool bShift, bool bKeepSel=false)
Definition: tabview3.cxx:1345
void FindNextUnprot(bool bShift, bool bInSelection)
Definition: tabview3.cxx:1544
void MoveCursorPage(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, bool bShift, bool bKeepSel=false)
Definition: tabview3.cxx:1329
void MoveCursorRel(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, bool bShift, bool bKeepSel=false)
Definition: tabview3.cxx:1271
void ShowAllCursors()
Definition: tabview3.cxx:234
void ScrollX(tools::Long nDeltaX, ScHSplitPos eWhich, bool bUpdBars=true)
Definition: tabview.cxx:1152
void Unmark()
Definition: tabview3.cxx:1747
void MoveCursorScreen(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, bool bShift)
Definition: tabview3.cxx:1375
void MarkMatrixFormula()
Definition: tabview3.cxx:1700
void SelectNextTab(short nDir, bool bExtendSelection)
Definition: tabview3.cxx:1777
void ScrollY(tools::Long nDeltaY, ScVSplitPos eWhich, bool bUpdBars=true)
Definition: tabview.cxx:1235
void MoveCursorEnter(bool bShift)
Definition: tabview3.cxx:1412
void ExpandBlockPage(SCCOL nMovX, SCROW nMovY)
Definition: tabview2.cxx:997
void MarkColumns()
Definition: tabview3.cxx:1571
void HideAllCursors()
Definition: tabview3.cxx:220
void ExpandBlock(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode)
Definition: tabview2.cxx:883
void MoveCursorArea(SCCOL nMovX, SCROW nMovY, ScFollowMode eMode, bool bShift, bool bKeepSel=false)
Definition: tabview3.cxx:1337
void GetPageMoveEndPosition(SCCOL nMovX, SCROW nMovY, SCCOL &rPageX, SCROW &rPageY)
Definition: tabview2.cxx:599
void ExpandBlockArea(SCCOL nMovX, SCROW nMovY)
Definition: tabview2.cxx:1005
SCTAB GetTabNo() const
Definition: viewdata.hxx:395
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
ScTabViewShell * GetViewShell() const
Definition: viewdata.hxx:357
SCROW GetCurY() const
Definition: viewdata.hxx:402
SCCOL GetCurX() const
Definition: viewdata.hxx:401
bool GetValue() const
bool HasItem(sal_uInt16 nWhich, const SfxPoolItem **ppItem=nullptr) const
sal_uInt16 GetSlot() const
const SfxItemSet * GetArgs() const
void SetSlot(sal_uInt16 nNewSlot)
void AppendItem(const SfxPoolItem &)
bool IsAPI() const
void Done(bool bRemove=false)
virtual SfxInterface * GetInterface() const
const SfxPoolItem * ExecuteSlot(SfxRequest &rReq, const SfxInterface *pIF=nullptr)
@ SC_INPUT_TABLE
Definition: global.hxx:362
KeyIndicatorState
constexpr sal_uInt16 KEY_MOD1
constexpr sal_uInt16 KEY_SHIFT
const char GetValue[]
#define SC_MOD()
Definition: scmod.hxx:249
@ OST_Editing
Definition: tabvwsh.hxx:80
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
Definition: types.hxx:23
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17
@ SC_FOLLOW_JUMP
Definition: viewdata.hxx:52
@ SC_FOLLOW_LINE
Definition: viewdata.hxx:52
@ SC_FOLLOW_FIX
Definition: viewdata.hxx:52
@ SC_SPLIT_LEFT
Definition: viewdata.hxx:45
@ SC_SPLIT_BOTTOM
Definition: viewdata.hxx:46