LibreOffice Module sc (master) 1
gridwin5.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 <editeng/flditem.hxx>
21
22#include <svx/fmpage.hxx>
23#include <svx/svdobj.hxx>
24#include <svx/svdpagv.hxx>
25#include <svx/ImageMapInfo.hxx>
26#include <vcl/imapobj.hxx>
27#include <vcl/help.hxx>
28#include <tools/urlobj.hxx>
29#include <sfx2/sfxhelp.hxx>
30
32#include <com/sun/star/accessibility/XAccessible.hpp>
33
34#include <gridwin.hxx>
35#include <viewdata.hxx>
36#include <drawview.hxx>
37#include <drwlayer.hxx>
38#include <document.hxx>
39#include <notemark.hxx>
40#include <chgtrack.hxx>
41#include <chgviset.hxx>
42#include <dbfunc.hxx>
43#include <postit.hxx>
44#include <global.hxx>
45
46bool ScGridWindow::ShowNoteMarker( SCCOL nPosX, SCROW nPosY, bool bKeyboard )
47{
48 bool bDone = false;
49
51 SCTAB nTab = mrViewData.GetTabNo();
52 ScAddress aCellPos( nPosX, nPosY, nTab );
53
54 OUString aTrackText;
55 bool bLeftEdge = false;
56
57 // change tracking
58
59 ScChangeTrack* pTrack = rDoc.GetChangeTrack();
61 if ( pTrack && pTrack->GetFirst() && pSettings && pSettings->ShowChanges())
62 {
63 const ScChangeAction* pFound = nullptr;
64 const ScChangeAction* pFoundContent = nullptr;
65 const ScChangeAction* pFoundMove = nullptr;
66 const ScChangeAction* pAction = pTrack->GetFirst();
67 while (pAction)
68 {
69 if ( pAction->IsVisible() &&
70 ScViewUtil::IsActionShown( *pAction, *pSettings, rDoc ) )
71 {
72 ScChangeActionType eType = pAction->GetType();
73 const ScBigRange& rBig = pAction->GetBigRange();
74 if ( rBig.aStart.Tab() == nTab )
75 {
76 ScRange aRange = rBig.MakeRange( rDoc );
77
79 aRange.aEnd.SetRow( aRange.aStart.Row() );
80 else if ( eType == SC_CAT_DELETE_COLS )
81 aRange.aEnd.SetCol( aRange.aStart.Col() );
82
83 if ( aRange.Contains( aCellPos ) )
84 {
85 pFound = pAction; // the last one wins
86 switch ( eType )
87 {
88 case SC_CAT_CONTENT :
89 pFoundContent = pAction;
90 break;
91 case SC_CAT_MOVE :
92 pFoundMove = pAction;
93 break;
94 default:
95 {
96 // added to avoid warnings
97 }
98 }
99 }
100 }
101 if ( eType == SC_CAT_MOVE )
102 {
103 ScRange aRange =
104 static_cast<const ScChangeActionMove*>(pAction)->
105 GetFromRange().MakeRange( rDoc );
106 if ( aRange.Contains( aCellPos ) )
107 {
108 pFound = pAction;
109 }
110 }
111 }
112 pAction = pAction->GetNext();
113 }
114
115 if ( pFound )
116 {
117 if ( pFoundContent && pFound->GetType() != SC_CAT_CONTENT )
118 pFound = pFoundContent; // content wins
119 if ( pFoundMove && pFound->GetType() != SC_CAT_MOVE &&
120 pFoundMove->GetActionNumber() >
121 pFound->GetActionNumber() )
122 pFound = pFoundMove; // move wins
123
124 // for deleted columns: Arrow on the left side of the cell
125 if ( pFound->GetType() == SC_CAT_DELETE_COLS )
126 bLeftEdge = true;
127
128 DateTime aDT = pFound->GetDateTime();
129 aTrackText = pFound->GetUser()
130 + ", "
132 + " "
134 + ":\n";
135 OUString aComStr=pFound->GetComment();
136 if(!aComStr.isEmpty())
137 {
138 aTrackText += aComStr + "\n( ";
139 }
140 OUString aTmp = pFound->GetDescription(rDoc);
141 aTrackText += aTmp;
142 if(!aComStr.isEmpty())
143 {
144 aTrackText += ")";
145 }
146 }
147 }
148
149 // Note, only if it is not already displayed on the Drawing Layer:
150 const ScPostIt* pNote = rDoc.GetNote( aCellPos );
151 if ( (!aTrackText.isEmpty()) || (pNote && !pNote->IsCaptionShown()) )
152 {
153 bool bNew = true;
154 bool bFast = false;
155 if (mpNoteMarker) // A note already shown
156 {
157 if (mpNoteMarker->GetDocPos() == aCellPos)
158 bNew = false; // then stop
159 else
160 bFast = true; // otherwise, at once
161
162 // marker which was shown for ctrl-F1 isn't removed by mouse events
163 if (mpNoteMarker->IsByKeyboard() && !bKeyboard)
164 bNew = false;
165 }
166 if (bNew)
167 {
168 if (bKeyboard)
169 bFast = true; // keyboard also shows the marker immediately
170
171 mpNoteMarker.reset();
172
173 bool bHSplit = mrViewData.GetHSplitMode() != SC_SPLIT_NONE;
174 bool bVSplit = mrViewData.GetVSplitMode() != SC_SPLIT_NONE;
175
177 vcl::Window* pRight = bHSplit ? mrViewData.GetView()->GetWindowByPos( bVSplit ? SC_SPLIT_TOPRIGHT : SC_SPLIT_BOTTOMRIGHT ) : nullptr;
178 vcl::Window* pBottom = bVSplit ? mrViewData.GetView()->GetWindowByPos( SC_SPLIT_BOTTOMLEFT ) : nullptr;
179 vcl::Window* pDiagonal = (bHSplit && bVSplit) ? mrViewData.GetView()->GetWindowByPos( SC_SPLIT_BOTTOMRIGHT ) : nullptr;
180 OSL_ENSURE( pLeft, "ScGridWindow::ShowNoteMarker - missing top-left grid window" );
181
182 /* If caption is shown from right or bottom windows, adjust
183 mapmode to include size of top-left window. */
184 MapMode aMapMode = GetDrawMapMode( true );
185 Size aLeftSize = pLeft->PixelToLogic( pLeft->GetOutputSizePixel(), aMapMode );
186 Point aOrigin = aMapMode.GetOrigin();
187 if( (this == pRight) || (this == pDiagonal) )
188 aOrigin.AdjustX(aLeftSize.Width() );
189 if( (this == pBottom) || (this == pDiagonal) )
190 aOrigin.AdjustY(aLeftSize.Height() );
191 aMapMode.SetOrigin( aOrigin );
192
193 mpNoteMarker.reset(new ScNoteMarker(pLeft, pRight, pBottom, pDiagonal,
194 &rDoc, aCellPos, aTrackText,
195 aMapMode, bLeftEdge, bFast, bKeyboard));
196 }
197
198 bDone = true; // something is shown (old or new)
199 }
200
201 return bDone;
202}
203
205{
206 bool bDone = false;
207 OUString aFormulaText;
208 tools::Rectangle aFormulaPixRect;
209 bool bHelpEnabled = bool(rHEvt.GetMode() & ( HelpEventMode::BALLOON | HelpEventMode::QUICK ));
210 SdrView* pDrView = mrViewData.GetScDrawView();
211 bool bDrawTextEdit = false;
212 if (pDrView)
213 bDrawTextEdit = pDrView->IsTextEdit();
214 // notes or change tracking
215 if ( bHelpEnabled && !bDrawTextEdit )
216 {
217 Point aPosPixel = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
218 SCCOL nPosX;
219 SCROW nPosY;
221 SCTAB nTab = mrViewData.GetTabNo();
222 const ScViewOptions& rOpts = mrViewData.GetOptions();
223 mrViewData.GetPosFromPixel( aPosPixel.X(), aPosPixel.Y(), eWhich, nPosX, nPosY );
224
225 if ( ShowNoteMarker( nPosX, nPosY, false ) )
226 {
227 Window::RequestHelp( rHEvt ); // turn off old Tip/Balloon
228 bDone = true;
229 }
230
231 if ( rOpts.GetOption( VOPT_FORMULAS_MARKS ) )
232 {
233 aFormulaText = rDoc.GetFormula( nPosX, nPosY, nTab );
234 if ( !aFormulaText.isEmpty() ) {
235 const ScPatternAttr* pPattern = rDoc.GetPattern( nPosX, nPosY, nTab );
236 aFormulaPixRect = mrViewData.GetEditArea( eWhich, nPosX, nPosY, this, pPattern, true );
237 }
238 }
239 }
240
241 if (!bDone && mpNoteMarker)
242 {
243 if (mpNoteMarker->IsByKeyboard())
244 {
245 // marker which was shown for ctrl-F1 isn't removed by mouse events
246 }
247 else
248 {
249 mpNoteMarker.reset();
250 }
251 }
252
253 if ( !aFormulaText.isEmpty() )
254 {
255 tools::Rectangle aScreenRect(OutputToScreenPixel(aFormulaPixRect.TopLeft()),
256 OutputToScreenPixel(aFormulaPixRect.BottomRight()));
257 if ( rHEvt.GetMode() & HelpEventMode::BALLOON )
258 Help::ShowBalloon(this, rHEvt.GetMousePosPixel(), aScreenRect, aFormulaText);
259 else if ( rHEvt.GetMode() & HelpEventMode::QUICK )
260 Help::ShowQuickHelp(this, aScreenRect, aFormulaText);
261 bDone = true;
262 }
263
264 // Image-Map / Text-URL
265
266 if ( bHelpEnabled && !bDone && !nButtonDown ) // only without pressed button
267 {
268 OUString aHelpText;
269 tools::Rectangle aPixRect;
270 Point aPosPixel = ScreenToOutputPixel( rHEvt.GetMousePosPixel() );
271
272 if ( pDrView ) // URL / Image-Map
273 {
274 SdrViewEvent aVEvt;
275 MouseEvent aMEvt( aPosPixel, 1, MouseEventModifiers::NONE, MOUSE_LEFT );
276 SdrHitKind eHit = pDrView->PickAnything( aMEvt, SdrMouseEventKind::BUTTONDOWN, aVEvt );
277
278 if ( eHit != SdrHitKind::NONE && aVEvt.mpObj != nullptr )
279 {
280 // URL for IMapObject below Pointer is help text
282 {
283 Point aLogicPos = PixelToLogic( aPosPixel );
285 aVEvt.mpObj, aLogicPos, GetOutDev() );
286
287 if ( pIMapObj )
288 {
289 // For image maps show the description, if available
290 aHelpText = pIMapObj->GetAltText();
291 if (aHelpText.isEmpty())
292 aHelpText = SfxHelp::GetURLHelpText(pIMapObj->GetURL());
293 aPixRect = LogicToPixel(aVEvt.mpObj->GetLogicRect());
294 }
295 }
296 // URL in shape text or at shape itself (URL in text overrides object URL)
297 if ( aHelpText.isEmpty() )
298 {
299 if( aVEvt.meEvent == SdrEventKind::ExecuteUrl )
300 {
301 aHelpText = SfxHelp::GetURLHelpText(aVEvt.mpURLField->GetURL());
302 aPixRect = LogicToPixel(aVEvt.mpObj->GetLogicRect());
303 }
304 else
305 {
306 SdrPageView* pPV = nullptr;
307 Point aMDPos = PixelToLogic( aPosPixel );
308 SdrObject* pObj = pDrView->PickObj(aMDPos, pDrView->getHitTolLog(), pPV, SdrSearchOptions::ALSOONMASTER);
309 if (pObj)
310 {
311 if ( pObj->IsGroupObject() )
312 {
313 SdrObject* pHit = pDrView->PickObj(aMDPos, pDrView->getHitTolLog(), pPV, SdrSearchOptions::DEEP);
314 if (pHit)
315 pObj = pHit;
316 }
317 // Fragments pointing into the current document need no tooltip
318 // describing the ctrl-click functionality.
319 if ( !pObj->getHyperlink().isEmpty() && !pObj->getHyperlink().startsWith("#") )
320 {
321 aPixRect = LogicToPixel(aVEvt.mpObj->GetLogicRect());
322 aHelpText = SfxHelp::GetURLHelpText(pObj->getHyperlink());
323 }
324 }
325 }
326 }
327 }
328 }
329
330 if ( aHelpText.isEmpty() ) // Text-URL
331 {
332 OUString aUrl;
333 if ( GetEditUrl( aPosPixel, nullptr, &aUrl ) )
334 {
335 aHelpText = SfxHelp::GetURLHelpText(
337
339 SCCOL nPosX;
340 SCROW nPosY;
341 SCTAB nTab = mrViewData.GetTabNo();
342 mrViewData.GetPosFromPixel( aPosPixel.X(), aPosPixel.Y(), eWhich, nPosX, nPosY );
343 const ScPatternAttr* pPattern = rDoc.GetPattern( nPosX, nPosY, nTab );
344
345 // bForceToTop = sal_False, use the cell's real position
346 aPixRect = mrViewData.GetEditArea( eWhich, nPosX, nPosY, this, pPattern, false );
347 }
348 }
349
350 if ( !aHelpText.isEmpty() )
351 {
352 tools::Rectangle aScreenRect(OutputToScreenPixel(aPixRect.TopLeft()),
353 OutputToScreenPixel(aPixRect.BottomRight()));
354
355 if ( rHEvt.GetMode() & HelpEventMode::BALLOON )
356 Help::ShowBalloon(this,rHEvt.GetMousePosPixel(), aScreenRect, aHelpText);
357 else if ( rHEvt.GetMode() & HelpEventMode::QUICK )
358 Help::ShowQuickHelp(this,aScreenRect, aHelpText);
359
360 bDone = true;
361 }
362 }
363
364 // basic controls
365
366 if ( pDrView && bHelpEnabled && !bDone )
367 {
368 SdrPageView* pPV = pDrView->GetSdrPageView();
369 OSL_ENSURE( pPV, "SdrPageView* is NULL" );
370 if (pPV)
371 bDone = FmFormPage::RequestHelp( this, pDrView, rHEvt );
372 }
373
374 // If QuickHelp for AutoFill is shown, do not allow it to be removed
375
378 bDone = true;
379
380 if (!bDone)
381 Window::RequestHelp( rHEvt );
382}
383
385{
386 return pSdrView &&
387 &pSdrView->GetModel() == mrViewData.GetDocument().GetDrawLayer();
388}
389
391{
392 mpNoteMarker.reset();
393}
394
395css::uno::Reference< css::accessibility::XAccessible >
397{
398 css::uno::Reference< css::accessibility::XAccessible > xAcc= GetAccessible(false);
399 if (xAcc.is())
400 {
401 return xAcc;
402 }
403
404 rtl::Reference<ScAccessibleDocument> pAccessibleDocument =
407 pAccessibleDocument->PreInit();
408
409 xAcc = pAccessibleDocument;
410 SetAccessible(xAcc);
411
412 pAccessibleDocument->Init();
413
414 return xAcc;
415}
416
417/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
ScChangeActionType
Definition: chgtrack.hxx:63
@ SC_CAT_MOVE
Definition: chgtrack.hxx:71
@ SC_CAT_DELETE_ROWS
Definition: chgtrack.hxx:69
@ SC_CAT_CONTENT
Definition: chgtrack.hxx:72
@ SC_CAT_DELETE_COLS
Definition: chgtrack.hxx:68
static bool RequestHelp(vcl::Window *pWin, SdrView const *pView, const HelpEvent &rEvt)
HelpEventMode GetMode() const
const Point & GetMousePosPixel() const
static bool IsQuickHelpEnabled()
static void ShowQuickHelp(vcl::Window *pParent, const tools::Rectangle &rScreenRect, const OUString &rHelpText, QuickHelpFlags nStyle=QuickHelpFlags::NONE)
static void ShowBalloon(vcl::Window *pParent, const Point &rScreenPos, const tools::Rectangle &, const OUString &rHelpText)
const OUString & GetAltText() const
const OUString & GetURL() const
static OUString decode(std::u16string_view rText, DecodeMechanism eMechanism, rtl_TextEncoding eCharset=RTL_TEXTENCODING_UTF8)
OUString getDate(const Date &rDate) const
OUString getTime(const tools::Time &rTime, bool bSec=true, bool b100Sec=false) const
void SetOrigin(const Point &rOrigin)
const Point & GetOrigin() const
constexpr tools::Long Y() const
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
void SetCol(SCCOL nColP)
Definition: address.hxx:291
SCROW Row() const
Definition: address.hxx:274
void SetRow(SCROW nRowP)
Definition: address.hxx:287
SCCOL Col() const
Definition: address.hxx:279
sal_Int64 Tab() const
Definition: bigrange.hxx:46
ScBigAddress aStart
Definition: bigrange.hxx:108
ScRange MakeRange(const ScDocument &rDoc) const
Definition: bigrange.hxx:134
const OUString & GetComment() const
Definition: chgtrack.hxx:348
ScBigRange & GetBigRange()
Definition: chgtrack.hxx:229
bool IsVisible() const
Definition: chgtrack.cxx:143
sal_uLong GetActionNumber() const
Definition: chgtrack.hxx:317
ScChangeActionType GetType() const
Definition: chgtrack.hxx:315
virtual OUString GetDescription(ScDocument &rDoc, bool bSplitRange=false, bool bWarning=true) const
Definition: chgtrack.cxx:421
ScChangeAction * GetNext() const
Definition: chgtrack.hxx:320
SC_DLLPUBLIC DateTime GetDateTime() const
Definition: chgtrack.cxx:407
const OUString & GetUser() const
Definition: chgtrack.hxx:347
ScChangeAction * GetFirst() const
Definition: chgtrack.hxx:951
bool ShowChanges() const
Definition: chgviset.hxx:77
SC_DLLPUBLIC ScPostIt * GetNote(const ScAddress &rPos)
Definition: document.cxx:6587
ScChangeViewSettings * GetChangeViewSettings() const
Definition: document.hxx:2243
SC_DLLPUBLIC ScDrawLayer * GetDrawLayer()
Definition: document.hxx:1084
SC_DLLPUBLIC OUString GetFormula(SCCOL nCol, SCROW nRow, SCTAB nTab) const
Definition: document.cxx:3706
ScChangeTrack * GetChangeTrack() const
Definition: document.hxx:2494
SC_DLLPUBLIC const ScPatternAttr * GetPattern(SCCOL nCol, SCROW nRow, SCTAB nTab) const
Definition: document.cxx:4719
static SC_DLLPUBLIC const LocaleDataWrapper & getLocaleData()
Definition: global.cxx:1055
virtual css::uno::Reference< css::accessibility::XAccessible > CreateAccessible() override
Definition: gridwin5.cxx:396
bool IsMyModel(const SdrEditView *pSdrView)
Definition: gridwin5.cxx:384
bool ShowNoteMarker(SCCOL nPosX, SCROW nPosY, bool bKeyboard)
Definition: gridwin5.cxx:46
MapMode GetDrawMapMode(bool bForce=false)
MapMode for the drawinglayer objects.
Definition: gridwin3.cxx:252
bool GetEditUrl(const Point &rPos, OUString *pName=nullptr, OUString *pUrl=nullptr, OUString *pTarget=nullptr)
Definition: gridwin.cxx:5723
sal_uInt8 nMouseStatus
Definition: gridwin.hxx:170
void HideNoteMarker()
Definition: gridwin5.cxx:390
std::unique_ptr< ScNoteMarker, o3tl::default_delete< ScNoteMarker > > mpNoteMarker
Definition: gridwin.hxx:158
sal_uInt16 nButtonDown
Definition: gridwin.hxx:169
virtual void RequestHelp(const HelpEvent &rEvt) override
Definition: gridwin5.cxx:204
ScViewData & mrViewData
Definition: gridwin.hxx:153
ScSplitPos eWhich
Definition: gridwin.hxx:154
Additional class containing cell annotation data.
Definition: postit.hxx:58
bool IsCaptionShown() const
Returns true, if the caption object is visible.
Definition: postit.hxx:150
ScAddress aEnd
Definition: address.hxx:498
bool Contains(const ScAddress &) const
is Address& fully in Range?
Definition: address.hxx:718
ScAddress aStart
Definition: address.hxx:497
vcl::Window * GetWindowByPos(ScSplitPos ePos) const
Definition: tabview.hxx:382
const ScViewOptions & GetOptions() const
Definition: viewdata.hxx:554
SCTAB GetTabNo() const
Definition: viewdata.hxx:395
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
ScRefType GetRefType() const
Definition: viewdata.hxx:531
ScSplitMode GetHSplitMode() const
Definition: viewdata.hxx:416
void GetPosFromPixel(tools::Long nClickX, tools::Long nClickY, ScSplitPos eWhich, SCCOL &rPosX, SCROW &rPosY, bool bTestMerge=true, bool bRepair=false, SCTAB nForTab=-1)
Definition: viewdata.cxx:2785
ScTabViewShell * GetViewShell() const
Definition: viewdata.hxx:357
ScDBFunc * GetView() const
Definition: viewdata.cxx:864
ScSplitMode GetVSplitMode() const
Definition: viewdata.hxx:417
tools::Rectangle GetEditArea(ScSplitPos eWhich, SCCOL nPosX, SCROW nPosY, vcl::Window *pWin, const ScPatternAttr *pPattern, bool bForceToTop, bool bInPrintTwips=false)
Definition: viewdata.cxx:1510
ScDrawView * GetScDrawView()
Definition: viewdata.cxx:3174
bool GetOption(ScViewOption eOpt) const
Definition: viewopti.hxx:86
static bool IsActionShown(const ScChangeAction &rAction, const ScChangeViewSettings &rSettings, ScDocument &rDocument)
Definition: viewutil.cxx:135
SdrObject * PickObj(const Point &rPnt, short nTol, SdrPageView *&rpPV, SdrSearchOptions nOptions, SdrObject **ppRootObj, bool *pbHitPassDirect=nullptr) const
virtual bool IsTextEdit() const final override
const OUString & getHyperlink() const
bool IsGroupObject() const
virtual const tools::Rectangle & GetLogicRect() const
SdrPageView * GetSdrPageView() const
SdrModel & GetModel() const
sal_uInt16 getHitTolLog() const
SdrHitKind PickAnything(const MouseEvent &rMEvt, SdrMouseEventKind nMouseDownOrMoveOrUp, SdrViewEvent &rVEvt) const
static OUString GetURLHelpText(std::u16string_view)
constexpr tools::Long Height() const
constexpr tools::Long Width() const
static SvxIMapInfo * GetIMapInfo(const SdrObject *pObject)
static IMapObject * GetHitIMapObject(const SdrObject *pObj, const Point &rWinPoint, const OutputDevice *pCmpWnd=nullptr)
const OUString & GetURL() const
constexpr Point TopLeft() const
constexpr Point BottomRight() const
Point OutputToScreenPixel(const Point &rPos) const
Point LogicToPixel(const Point &rLogicPt) const
void SetAccessible(const css::uno::Reference< css::accessibility::XAccessible > &)
vcl::Window * GetAccessibleParentWindow() const
::OutputDevice const * GetOutDev() const
Point PixelToLogic(const Point &rDevicePt) const
css::uno::Reference< css::accessibility::XAccessible > GetAccessible(bool bCreate=true)
Size GetOutputSizePixel() const
Point ScreenToOutputPixel(const Point &rPos) const
#define MOUSE_LEFT
DocumentType eType
#define SC_GM_TABDOWN
Definition: gridwin.hxx:63
SdrObject * mpObj
const SvxURLField * mpURLField
SdrEventKind meEvent
SdrHitKind
sal_Int16 SCTAB
Definition: types.hxx:22
sal_Int16 SCCOL
Definition: types.hxx:21
sal_Int32 SCROW
Definition: types.hxx:17
@ SC_SPLIT_BOTTOMRIGHT
Definition: viewdata.hxx:44
@ SC_SPLIT_TOPLEFT
Definition: viewdata.hxx:44
@ SC_SPLIT_BOTTOMLEFT
Definition: viewdata.hxx:44
@ SC_SPLIT_TOPRIGHT
Definition: viewdata.hxx:44
@ SC_SPLIT_NONE
Definition: viewdata.hxx:42
@ SC_REFTYPE_FILL
Definition: viewdata.hxx:55
@ VOPT_FORMULAS_MARKS
Definition: viewopti.hxx:36