LibreOffice Module sc (master)  1
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
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 .
18  */
20 #pragma once
22 #include "global.hxx"
23 #include "address.hxx"
24 #include "cellvalue.hxx"
25 #include "rangelst.hxx"
26 #include "types.hxx"
27 #include "mtvelements.hxx"
28 #include <formula/types.hxx>
29 #include <svl/zforlist.hxx>
30 #include <svx/svdobj.hxx>
31 #include "attarray.hxx"
33 #include <optional>
34 #include <set>
35 #include <vector>
37 #include <mdds/flat_segment_tree.hpp>
39 namespace editeng { class SvxBorderLine; }
40 namespace formula { struct VectorRefArray; }
42 namespace sc {
44 struct FormulaGroupEntry;
45 class StartListeningContext;
46 class EndListeningContext;
47 class CopyFromClipContext;
48 class CopyToClipContext;
49 class CopyToDocContext;
50 class MixDocContext;
51 class ColumnSpanSet;
52 class SingleColumnSpanSet;
53 struct RefUpdateContext;
54 struct RefUpdateInsertTabContext;
55 struct RefUpdateDeleteTabContext;
56 struct RefUpdateMoveTabContext;
57 class EditTextIterator;
58 struct NoteEntry;
59 class DocumentStreamAccess;
60 class CellValues;
61 class TableValues;
62 struct RowSpan;
63 class RowHeightContext;
64 class CompileFormulaContext;
65 struct SetFormulaDirtyContext;
66 enum class MatrixEdge;
67 class ColumnIterator;
69 }
71 class Fraction;
72 class OutputDevice;
73 class SfxItemPoolCache;
74 class SvtListener;
75 class SfxPoolItem;
76 class SfxStyleSheetBase;
77 class SvxBoxInfoItem;
78 class SvxBoxItem;
80 class ScDocument;
81 class ScEditDataArray;
82 class ScFormulaCell;
83 class ScMarkData;
84 class ScPatternAttr;
85 class ScStyleSheet;
86 class SvtBroadcaster;
87 class ScTypedStrData;
88 class ScProgress;
89 class ScFunctionData;
91 struct ScSetStringParam;
92 struct ScColWidthParam;
93 struct ScRefCellValue;
94 struct ScCellValue;
95 class ScHint;
96 enum class ScMF;
97 struct ScFilterEntries;
101 {
103  bool bFormula;
105  bool bGetFont;
109 };
111 class ScColumn
112 {
113  // Empty values correspond with empty cells. All non-empty cell positions
114  // must have non-empty elements. For text width, the value should be
115  // either the real text width, or TEXTWIDTH_DIRTY in case it hasn't been
116  // calculated yet. For script type, it should be either the real script
117  // type value or SvtScriptType::UNKNOWN.
120  // Cell notes
123  // Broadcasters for formula cells.
128  // Cell values.
131  std::unique_ptr<ScAttrArray> pAttrArray;
138  bool mbFiltering; // it is true if there is a filtering in the column
140 friend class ScDocument; // for FillInfo
141 friend class ScTable;
142 friend class ScValueIterator;
145 friend class ScQueryCellIterator;
148 friend class ScCellIterator;
152 friend class ScDocumentImport;
155 friend class sc::ColumnSpanSet;
156 friend class sc::EditTextIterator;
157 friend class sc::CellValues;
158 friend class sc::TableValues;
159 friend class sc::CellStoreEvent;
161  ScColumn(const ScColumn&) = delete;
162  ScColumn& operator= (const ScColumn&) = delete;
164  bool ParseString(
165  ScCellValue& rCell,
166  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
167  const ScSetStringParam* pParam );
169 public:
173  {
177  };
179  ScColumn(ScSheetLimits const &);
182  void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument& rDoc, bool bEmptyAttrArray);
184  ScDocument& GetDoc() const { return pAttrArray->GetDoc(); }
185  SCTAB GetTab() const { return nTab; }
186  SCCOL GetCol() const { return nCol; }
187  bool HasFiltering() const { return mbFiltering; }
189  const sc::CellStoreType& GetCellStore() const { return maCells; }
195  ScRefCellValue GetCellValue( SCROW nRow ) const;
198  static ScRefCellValue GetCellValue( const sc::CellStoreType::const_iterator& itPos, size_t nOffset );
200  const sc::CellTextAttr* GetCellTextAttr( SCROW nRow ) const;
201  const sc::CellTextAttr* GetCellTextAttr( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
203  void Delete( SCROW nRow );
204  void DeleteContent( SCROW nRow, bool bBroadcast = true );
205  void FreeAll();
206  void FreeNotes();
207  void Swap( ScColumn& rOther, SCROW nRow1, SCROW nRow2, bool bPattern );
209  bool HasAttrib( SCROW nRow1, SCROW nRow2, HasAttrFlags nMask ) const;
210  bool HasAttribSelection( const ScMarkData& rMark, HasAttrFlags nMask ) const;
211  bool IsMerged( SCROW nRow ) const;
212  bool ExtendMerge( SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow,
213  SCCOL& rPaintCol, SCROW& rPaintRow,
214  bool bRefresh );
216  bool IsEmptyData() const;
217  bool IsEmptyAttr() const;
219  // data only:
220  bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
221  SCSIZE GetEmptyLinesInBlock( SCROW nStartRow, SCROW nEndRow, ScDirection eDir ) const;
222  bool HasDataAt( SCROW nRow, ScDataAreaExtras* pDataAreaExtras = nullptr ) const;
223  bool HasDataAt( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow,
224  ScDataAreaExtras* pDataAreaExtras = nullptr ) const;
225  bool HasDataAt( sc::ColumnBlockPosition& rBlockPos, SCROW nRow,
226  ScDataAreaExtras* pDataAreaExtras = nullptr );
227  void GetDataExtrasAt( SCROW nRow, ScDataAreaExtras& rDataAreaExtras ) const;
228  bool HasVisibleDataAt(SCROW nRow) const;
229  SCROW GetFirstDataPos() const;
230  SCROW GetLastDataPos() const;
231  SCROW GetLastDataPos( SCROW nLastRow, ScDataAreaExtras* pDataAreaExtras = nullptr ) const;
232  bool GetPrevDataPos(SCROW& rRow) const;
233  bool GetNextDataPos(SCROW& rRow) const;
234  bool TrimEmptyBlocks(SCROW& rRowStart, SCROW& rRowEnd) const;
235  void FindDataAreaPos(SCROW& rRow, bool bDown) const; // (without Broadcaster)
236  void FindUsed( SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree<SCROW, bool>& rUsed ) const;
238  SCSIZE VisibleCount( SCROW nStartRow, SCROW nEndRow ) const;
239  sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll ) const;
240  bool HasSelectionMatrixFragment(const ScMarkData& rMark) const;
242  bool GetFirstVisibleAttr( SCROW& rFirstRow ) const;
243  bool GetLastVisibleAttr( SCROW& rLastRow ) const;
244  bool HasVisibleAttrIn( SCROW nStartRow, SCROW nEndRow ) const;
245  bool IsVisibleAttrEqual( const ScColumn& rCol, SCROW nStartRow = 0,
246  SCROW nEndRow = MAXROW ) const;
247  bool IsAllAttrEqual( const ScColumn& rCol, SCROW nStartRow, SCROW nEndRow ) const;
249  bool TestInsertCol( SCROW nStartRow, SCROW nEndRow) const;
250  bool TestInsertRow( SCROW nStartRow, SCSIZE nSize ) const;
251  void InsertRow( SCROW nStartRow, SCSIZE nSize );
252  void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList& rRangeList ) const;
260  void DeleteRow( SCROW nStartRow, SCSIZE nSize, std::vector<ScAddress>* pGroupPos );
262  void DeleteArea(
263  SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag,
264  bool bBroadcast = true, sc::ColumnSpanSet* pBroadcastSpans = nullptr );
266  void DeleteRanges( const std::vector<sc::RowSpan>& rRanges, InsertDeleteFlags nDelFlag );
268  void CopyToClip(
269  sc::CopyToClipContext& rCxt, SCROW nRow1, SCROW nRow2, ScColumn& rColumn ) const;
272  SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap& rMap, ScColumn& rDestCol );
274  void CopyCellToDocument( SCROW nSrcRow, SCROW nDestRow, ScColumn& rDestCol );
275  void InitBlockPosition( sc::ColumnBlockPosition& rBlockPos );
276  void InitBlockPosition( sc::ColumnBlockConstPosition& rBlockPos ) const;
279  sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans );
281  void CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset );
283  void CopyFromClip(
284  sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn& rColumn );
286  void RemoveEditAttribs( SCROW nStartRow, SCROW nEndRow );
288  // Selection (?) of this document
289  void MixMarked(
290  sc::MixDocContext& rCxt, const ScMarkData& rMark, ScPasteFunc nFunction,
291  bool bSkipEmpty, const ScColumn& rSrcCol );
292  void MixData(
293  sc::MixDocContext& rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty,
294  const ScColumn& rSrcCol );
296  std::unique_ptr<ScAttrIterator> CreateAttrIterator( SCROW nStartRow, SCROW nEndRow ) const;
299  const ScRangeList& rRanges, ScFunctionData& rData, const ScFlatBoolRowSegments& rHiddenRows );
301  void CopyToColumn(
302  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
303  ScColumn& rColumn, const ScMarkData* pMarkData = nullptr, bool bAsLink = false,
304  bool bGlobalNamesToLocal = false ) const;
306  void UndoToColumn(
307  sc::CopyToDocContext& rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked,
308  ScColumn& rColumn) const;
310  void CopyScenarioFrom( const ScColumn& rSrcCol );
311  void CopyScenarioTo( ScColumn& rDestCol ) const;
312  bool TestCopyScenarioTo( const ScColumn& rDestCol ) const;
313  void MarkScenarioIn( ScMarkData& rDestMark ) const;
315  void CopyUpdated( const ScColumn& rPosCol, ScColumn& rDestCol ) const;
317  void SwapCol(ScColumn& rCol);
318  void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol);
320  bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW& rFirst);
322  bool SetString(
323  SCROW nRow, SCTAB nTab, const OUString& rString, formula::FormulaGrammar::AddressConvention eConv,
324  const ScSetStringParam* pParam = nullptr );
326  void SetEditText( SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
327  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, std::unique_ptr<EditTextObject> pEditText );
328  void SetEditText( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const EditTextObject& rEditText );
329  void SetEditText( SCROW nRow, const EditTextObject& rEditText, const SfxItemPool* pEditPool );
330  void SetFormula( SCROW nRow, const ScTokenArray& rArray, formula::FormulaGrammar::Grammar eGram );
331  void SetFormula( SCROW nRow, const OUString& rFormula, formula::FormulaGrammar::Grammar eGram );
340  SCROW nRow, ScFormulaCell* pCell,
342  bool bInheritNumFormatIfNeeded = true);
343  void SetFormulaCell(
344  sc::ColumnBlockPosition& rBlockPos, SCROW nRow, ScFormulaCell* pCell,
346  bool bInheritNumFormatIfNeeded = true);
348  bool SetFormulaCells( SCROW nRow, std::vector<ScFormulaCell*>& rCells );
350  bool HasFormulaCell() const;
351  bool HasFormulaCell( SCROW nRow1, SCROW nRow2 ) const;
353  void CloneFormulaCell(
354  const ScFormulaCell& rSrc, const sc::CellTextAttr& rAttr,
355  const std::vector<sc::RowSpan>& rRanges );
359  void SetRawString( SCROW nRow, const OUString& rStr );
360  void SetRawString( SCROW nRow, const svl::SharedString& rStr );
361  void SetRawString( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, const svl::SharedString& rStr, bool bBroadcast = true );
362  void SetValue( SCROW nRow, double fVal );
363  void SetValues( const SCROW nRow, const std::vector<double>& rVals );
364  void SetValue( sc::ColumnBlockPosition& rBlockPos, SCROW nRow, double fVal, bool bBroadcast = true );
365  void SetError( SCROW nRow, const FormulaError nError);
367  void GetString( SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
368  { return GetString( GetCellValue( nRow ), nRow, rString, pContext ); }
370  OUString& rString, const ScInterpreterContext* pContext = nullptr ) const
371  { return GetString( GetCellValue( rBlockPos, nRow ), nRow, rString, pContext ); }
372  double* GetValueCell( SCROW nRow );
373  void GetInputString( SCROW nRow, OUString& rString ) const
374  { return GetInputString( GetCellValue( nRow ), nRow, rString ); }
375  void GetInputString( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow, OUString& rString ) const
376  { return GetInputString( GetCellValue( rBlockPos, nRow ), nRow, rString ); }
377  double GetValue( SCROW nRow ) const;
378  const EditTextObject* GetEditText( SCROW nRow ) const;
379  void RemoveEditTextCharAttribs( SCROW nRow, const ScPatternAttr& rAttr );
380  void GetFormula( SCROW nRow, OUString& rFormula ) const;
381  const ScFormulaCell* GetFormulaCell( SCROW nRow ) const;
383  ScFormulaCell * const * GetFormulaCellBlockAddress( SCROW nRow, size_t& rBlockSize ) const;
384  CellType GetCellType( SCROW nRow ) const;
385  SCSIZE GetCellCount() const;
386  sal_uLong GetWeightedCount() const;
387  sal_uLong GetWeightedCount(SCROW nStartRow, SCROW nEndRow) const;
388  sal_uInt32 GetCodeCount() const; // RPN-Code in formulas
389  FormulaError GetErrCode( SCROW nRow ) const;
391  bool HasStringData( SCROW nRow ) const;
392  bool HasValueData( SCROW nRow ) const;
393  bool HasStringCells( SCROW nStartRow, SCROW nEndRow ) const;
396  SCROW nRow1, SCROW nRow2, SCROW* pRow1 ) const;
398  bool IsFormulaDirty( SCROW nRow ) const;
402  void SetDirtyFromClip( SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet& rBroadcastSpans );
403  void SetDirty( SCROW nRow1, SCROW nRow2, BroadcastMode );
404  void SetDirtyVar();
405  void SetDirtyAfterLoad();
406  void SetTableOpDirty( const ScRange& );
407  void CalcAll();
408  void CalcAfterLoad( sc::CompileFormulaContext& rCxt, bool bStartListening );
410  void CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rProgress );
417  bool BroadcastBroadcasters( SCROW nRow1, SCROW nRow2, ScHint& rHint );
421  void ResetChanged( SCROW nStartRow, SCROW nEndRow );
423  bool UpdateReferenceOnCopy( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc = nullptr );
432  bool UpdateReference( sc::RefUpdateContext& rCxt, ScDocument* pUndoDoc );
437  void UpdateMoveTab( sc::RefUpdateMoveTabContext& rCxt, SCTAB nTabNo );
438  void UpdateCompile( bool bForceIfNameInUse = false );
439  void UpdateTranspose( const ScRange& rSource, const ScAddress& rDest,
440  ScDocument* pUndoDoc );
441  void UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
443  void SetTabNo(SCTAB nNewTab);
444  void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames& rIndexes) const;
447  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
450  sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt );
453  sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt );
455  const SfxPoolItem& GetAttr( SCROW nRow, sal_uInt16 nWhich ) const;
456  template<class T> const T& GetAttr( SCROW nRow, TypedWhichId<T> nWhich ) const
457  {
458  return static_cast<const T&>(GetAttr(nRow, sal_uInt16(nWhich)));
459  }
460  const ScPatternAttr* GetPattern( SCROW nRow ) const;
461  const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const;
463  sal_uInt32 GetNumberFormat( const ScInterpreterContext& rContext, SCROW nRow ) const;
464  sal_uInt32 GetNumberFormat( SCROW nStartRow, SCROW nEndRow ) const;
466  void MergeSelectionPattern( ScMergePatternState& rState, const ScMarkData& rMark, bool bDeep ) const;
467  void MergePatternArea( ScMergePatternState& rState, SCROW nRow1, SCROW nRow2, bool bDeep ) const;
468  void MergeBlockFrame( SvxBoxItem* pLineOuter, SvxBoxInfoItem* pLineInner,
469  ScLineFlags& rFlags,
470  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight ) const;
471  void ApplyBlockFrame(const SvxBoxItem& rLineOuter, const SvxBoxInfoItem* pLineInner,
472  SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight);
474  void ApplyAttr( SCROW nRow, const SfxPoolItem& rAttr );
475  void ApplyPattern( SCROW nRow, const ScPatternAttr& rPatAttr );
476  void ApplyPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& rPatAttr,
477  ScEditDataArray* pDataArray = nullptr,
478  bool* const pIsChanged = nullptr);
479  const ScPatternAttr* SetPattern( SCROW nRow, std::unique_ptr<ScPatternAttr> );
480  void SetPattern( SCROW nRow, const ScPatternAttr& );
481  void SetPatternArea( SCROW nStartRow, SCROW nEndRow, const ScPatternAttr& );
483  const ScPatternAttr& rPattern, SvNumFormatType nNewType );
485  void ApplyStyle( SCROW nRow, const ScStyleSheet* rStyle );
486  void ApplyStyleArea( SCROW nStartRow, SCROW nEndRow, const ScStyleSheet& rStyle );
487  void ApplySelectionStyle(const ScStyleSheet& rStyle, const ScMarkData& rMark);
488  void ApplySelectionLineStyle( const ScMarkData& rMark,
489  const ::editeng::SvxBorderLine* pLine, bool bColorOnly );
490  void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
491  void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex );
493  const ScStyleSheet* GetStyle( SCROW nRow ) const;
494  const ScStyleSheet* GetSelectionStyle( const ScMarkData& rMark, bool& rFound ) const;
495  const ScStyleSheet* GetAreaStyle( bool& rFound, SCROW nRow1, SCROW nRow2 ) const;
497  void FindStyleSheet( const SfxStyleSheetBase* pStyleSheet, ScFlatBoolRowSegments& rUsedRows, bool bReset );
498  bool IsStyleSheetUsed( const ScStyleSheet& rStyle ) const;
502  SCROW nRow, const ScStyleSheet* pSearchStyle, bool bUp, bool bInSelection,
503  const ScMarkData& rMark) const;
505  bool SearchStyleRange(
506  SCROW& rRow, SCROW& rEndRow, const ScStyleSheet* pSearchStyle, bool bUp,
507  bool bInSelection, const ScMarkData& rMark) const;
509  bool ApplyFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
510  bool RemoveFlags( SCROW nStartRow, SCROW nEndRow, ScMF nFlags );
511  void ClearItems( SCROW nStartRow, SCROW nEndRow, const sal_uInt16* pWhich );
513  void RemoveProtected( SCROW nStartRow, SCROW nEndRow );
515  SCROW ApplySelectionCache( SfxItemPoolCache* pCache, const ScMarkData& rMark, ScEditDataArray* pDataArray, bool* const pIsChanged );
516  void DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData& rMark, bool bBroadcast );
518  void ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData& rMark );
519  void ChangeSelectionIndent( bool bIncrement, const ScMarkData& rMark );
522  SCROW nRow, OutputDevice* pDev, double nPPTX, double nPPTY,
523  const Fraction& rZoomX, const Fraction& rZoomY,
524  bool bWidth, const ScNeededSizeOptions& rOptions, const ScPatternAttr** pPatternChange,
525  bool bInPrintTwips = false ) const;
527  sal_uInt16 GetOptimalColWidth(
528  OutputDevice* pDev, double nPPTX, double nPPTY,
529  const Fraction& rZoomX, const Fraction& rZoomY,
530  bool bFormula, sal_uInt16 nOldWidth, const ScMarkData* pMarkData, const ScColWidthParam* pParam) const;
532  void GetOptimalHeight(
533  sc::RowHeightContext& rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart );
536  SCROW GetNextUnprotected( SCROW nRow, bool bUp ) const;
538  void GetFilterEntries(
539  sc::ColumnBlockConstPosition& rBlockPos, SCROW nStartRow, SCROW nEndRow,
540  ScFilterEntries& rFilterEntries, bool bFiltering );
542  bool GetDataEntries( SCROW nRow, std::set<ScTypedStrData>& rStrings) const;
544  void UpdateInsertTabAbs(SCTAB nNewPos);
545  bool TestTabRefAbs(SCTAB nTable) const;
546  bool GetNextSpellingCell(SCROW& nRow, bool bInSel, const ScMarkData& rData) const;
549  sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt, SCROW nRow1, SCROW nRow2 );
552  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
553  SCROW* pStartRow, SCROW* pEndRow );
555  void StartListening( SvtListener& rLst, SCROW nRow );
556  void EndListening( SvtListener& rLst, SCROW nRow );
557  void StartListening( sc::StartListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
558  void EndListening( sc::EndListeningContext& rCxt, const ScAddress& rAddress, SvtListener& rListener );
559  void StartListeners( sc::StartListeningContext& rCxt, bool bAll );
560  void SetDirtyIfPostponed();
562  void CollectListeners( std::vector<SvtListener*>& rListeners, SCROW nRow1, SCROW nRow2 );
563  void CollectFormulaCells( std::vector<ScFormulaCell*>& rCells, SCROW nRow1, SCROW nRow2 );
568  sal_Int32 GetMaxStringLen( SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet ) const;
569  sal_Int32 GetMaxNumberStringLen( sal_uInt16& nPrecision,
570  SCROW nRowStart, SCROW nRowEnd ) const;
572  sal_uInt16 GetTextWidth(SCROW nRow) const;
573  void SetTextWidth(SCROW nRow, sal_uInt16 nWidth);
575  SvtScriptType GetScriptType( SCROW nRow ) const;
581  SvtScriptType GetRangeScriptType( sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2,
582  const sc::CellStoreType::iterator& itr);
584  void SetScriptType( SCROW nRow, SvtScriptType nType );
585  void UpdateScriptTypes( SCROW nRow1, SCROW nRow2 );
588  bool ResolveStaticReference( ScMatrix& rMat, SCCOL nMatCol, SCROW nRow1, SCROW nRow2 );
589  void FillMatrix( ScMatrix& rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool* pPool ) const;
591  bool HandleRefArrayForParallelism( SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef& mxGroup );
592 #ifdef DBG_UTIL
593  void AssertNoInterpretNeeded( SCROW nRow1, SCROW nRow2 );
594 #endif
595  void SetFormulaResults( SCROW nRow, const double* pResults, size_t nLen );
597  void CalculateInThread( ScInterpreterContext& rContext, SCROW nRow, size_t nLen, size_t nOffset,
598  unsigned nThisThread, unsigned nThreadsTotal );
599  void HandleStuffAfterParallelCalculation( SCROW nRow, size_t nLen, ScInterpreter* pInterpreter );
601  void SetNumberFormat( SCROW nRow, sal_uInt32 nNumberFormat );
604  const SvtBroadcaster* GetBroadcaster( SCROW nRow ) const;
606  void DeleteBroadcasters( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2 );
609  void Broadcast( SCROW nRow );
610  void BroadcastCells( const std::vector<SCROW>& rRows, SfxHintId nHint );
611  void BroadcastRows( SCROW nStartRow, SCROW nEndRow, SfxHintId nHint );
613  // cell notes
614  ScPostIt* GetCellNote( SCROW nRow );
615  const ScPostIt* GetCellNote( SCROW nRow ) const;
617  const ScPostIt* GetCellNote( sc::ColumnBlockConstPosition& rBlockPos, SCROW nRow ) const;
618  void DeleteCellNotes( sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
619  bool HasCellNote(SCROW nStartRow, SCROW nEndRow) const;
620  bool HasCellNotes() const;
621  void SetCellNote( SCROW nRow, std::unique_ptr<ScPostIt> pNote);
622  bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
624  std::unique_ptr<ScPostIt> ReleaseNote( SCROW nRow );
625  size_t GetNoteCount() const;
626  void CreateAllNoteCaptions();
627  void ForgetNoteCaptions( SCROW nRow1, SCROW nRow2, bool bPreserveData );
628  SCROW GetNotePosition( size_t nIndex ) const;
629  void GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const;
630  void GetNotesInRange( SCROW nStartRow, SCROW nEndRow, std::vector<sc::NoteEntry>& rNotes ) const;
632  SCROW GetCellNotesMaxRow() const;
633  SCROW GetCellNotesMinRow() const;
636  SCROW nRow1, SCROW nRow2, ScColumn& rDestCol, bool bCloneCaption = true,
637  SCROW nRowOffsetDest = 0) const;
639  void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn& rDestCol,
640  sc::ColumnBlockPosition& maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0 ) const;
642  void UpdateNoteCaptions( SCROW nRow1, SCROW nRow2 );
644  void UpdateDrawObjects( std::vector<std::vector<SdrObject*>>& pObjects, SCROW nRowStart, SCROW nRowEnd );
645  void UpdateDrawObjectsForRow( std::vector<SdrObject*>& pObjects, SCCOL nTargetCol, SCROW nTargetRow );
646  bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const;
648  void InterpretDirtyCells( SCROW nRow1, SCROW nRow2 );
650  static void JoinNewFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell );
660  void DetachFormulaCell( const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
661  std::vector<SCROW>& rNewSharedRows );
664  void StartListeningUnshared( const std::vector<SCROW>& rNewSharedRows );
666  void DetachFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength,
667  std::vector<SCROW>* pNewSharedRows );
669  void AttachFormulaCells( sc::StartListeningContext& rCxt, SCROW nRow1, SCROW nRow2 );
670  void DetachFormulaCells( sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2,
671  std::vector<SCROW>* pNewSharedRows );
676  void RegroupFormulaCells( std::vector<ScAddress>* pGroupPos = nullptr );
693  void ResetFormulaCellPositions( SCROW nRow1, SCROW nRow2, bool bUpdateRefs );
695  void SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange );
697  void TransferCellValuesTo( SCROW nRow, size_t nLen, sc::CellValues& rDest );
698  void CopyCellValuesFrom( SCROW nRow, const sc::CellValues& rSrc );
700  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues* pUndo );
702  void SwapNonEmpty(
703  sc::TableValues& rValues, sc::StartListeningContext& rStartCxt, sc::EndListeningContext& rEndCxt );
705  std::optional<sc::ColumnIterator> GetColumnIterator( SCROW nRow1, SCROW nRow2 ) const;
707  bool EnsureFormulaCellResults( SCROW nRow1, SCROW nRow2, bool bSkipRunning = false );
709  void StoreToCache(SvStream& rStrm) const;
710  void RestoreFromCache(SvStream& rStrm);
713  void DumpColumnStorage() const;
714 #endif
716  SCSIZE GetPatternCount() const;
717  SCSIZE GetPatternCount( SCROW nRow1, SCROW nRow2 ) const;
718  bool ReservePatternCount( SCSIZE nReserve );
720 private:
722  sc::CellStoreType::iterator GetPositionToInsert( SCROW nRow, std::vector<SCROW>& rNewSharedRows,
723  bool bInsertFormula );
724  sc::CellStoreType::iterator GetPositionToInsert( const sc::CellStoreType::iterator& it, SCROW nRow,
725  std::vector<SCROW>& rNewSharedRows, bool bInsertFormula );
728  const sc::CellStoreType::iterator& itPos, SCROW nRow, ScFormulaCell& rCell,
729  const std::vector<SCROW>& rNewSharedRows,
730  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
733  const sc::CellStoreType::position_type& aPos, ScFormulaCell& rCell,
734  const std::vector<SCROW>& rNewSharedRows,
735  bool bJoin = true, sc::StartListeningType eListenType = sc::SingleCellListening );
737 public:
738  void AttachNewFormulaCells(const sc::CellStoreType::position_type& aPos, size_t nLength,
739  std::vector<SCROW>& rNewSharedRows);
741 private:
742  void BroadcastNewCell( SCROW nRow );
743  bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr );
745  const ScFormulaCell* FetchFormulaCell( SCROW nRow ) const;
748  sc::CellStoreType::const_iterator& itPos, SCROW nRow, bool bForward) const;
749  SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const;
751  void GetString( const ScRefCellValue& cell, SCROW nRow, OUString& rString, const ScInterpreterContext* pContext = nullptr ) const;
752  void GetInputString( const ScRefCellValue& cell, SCROW nRow, OUString& rString ) const;
760  void CellStorageModified();
761  void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership );
763  void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn& rDestCol) const;
765  void DeleteCells(
766  sc::ColumnBlockPosition& rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag,
767  sc::SingleColumnSpanSet& rDeleted );
773  std::vector<sc::FormulaGroupEntry> GetFormulaGroupEntries();
776  sc::EndListeningContext& rCxt, SCROW nRow, std::vector<ScAddress>* pGroupPos );
779  sc::EndListeningContext& rCxt, SCROW nRow1, SCROW nRow2, std::vector<ScAddress>* pGroupPos );
781  void EndListeningGroup( sc::EndListeningContext& rCxt, SCROW nRow );
782  void SetNeedsListeningGroup( SCROW nRow );
783 };
785 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Matrix data type that can store values of mixed types.
Definition: scmatrix.hxx:112
sc::MatrixEdge GetBlockMatrixEdges(SCROW nRow1, SCROW nRow2, sc::MatrixEdge nMask, bool bNoMatrixAtAll) const
Definition: column.cxx:115
bool CompileErrorCells(sc::CompileFormulaContext &rCxt, FormulaError nErrCode)
Definition: column.cxx:3411
SCROW GetCellNotesMinRow() const
Definition: column2.cxx:2086
SCROW GetCellNotesMaxRow() const
Definition: column2.cxx:2075
void CellStorageModified()
Called whenever the state of cell array gets modified i.e.
Definition: column2.cxx:1653
void ApplyStyle(SCROW nRow, const ScStyleSheet *rStyle)
Definition: column.cxx:561
void FreeAll()
Definition: column3.cxx:157
void InterpretDirtyCells(SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:116
constexpr double nPPTY
SCROW GetNotePosition(size_t nIndex) const
Definition: column4.cxx:684
void UpdateNoteCaptions(SCROW nRow1, SCROW nRow2)
Definition: column.cxx:1922
sal_uLong GetWeightedCount() const
Definition: column2.cxx:3622
SCSIZE GetEmptyLinesInBlock(SCROW nStartRow, SCROW nEndRow, ScDirection eDir) const
Definition: column2.cxx:1336
void MixMarked(sc::MixDocContext &rCxt, const ScMarkData &rMark, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1464
::boost::intrusive_ptr< ScFormulaCellGroup > ScFormulaCellGroupRef
Definition: types.hxx:43
void SplitFormulaGroupByRelativeRef(const ScRange &rBoundRange)
Definition: column4.cxx:1223
void DeleteRow(SCROW nStartRow, SCSIZE nSize, std::vector< ScAddress > *pGroupPos)
Definition: column3.cxx:190
void SetDirty(SCROW nRow1, SCROW nRow2, BroadcastMode)
Definition: column.cxx:3298
void CopyFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, tools::Long nDy, ScColumn &rColumn)
Definition: column3.cxx:1391
void SetTextWidth(SCROW nRow, sal_uInt16 nWidth)
Definition: column2.cxx:2102
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:42
void DeleteArea(SCROW nStartRow, SCROW nEndRow, InsertDeleteFlags nDelFlag, bool bBroadcast=true, sc::ColumnSpanSet *pBroadcastSpans=nullptr)
Definition: column3.cxx:989
void GetAllNoteEntries(std::vector< sc::NoteEntry > &rNotes) const
Definition: column4.cxx:749
Store parameters used in the ScDocument::SetString() method.
Definition: stringutil.hxx:34
void CellNotesDeleting(SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2052
SCSIZE VisibleCount(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1276
bool HasAttrib(SCROW nRow1, SCROW nRow2, HasAttrFlags nMask) const
Definition: column.cxx:304
std::unique_ptr< ScAttrArray > pAttrArray
Definition: column.hxx:131
ScDocument & GetDoc() const
Definition: column.hxx:184
void MergeSelectionPattern(ScMergePatternState &rState, const ScMarkData &rMark, bool bDeep) const
Definition: column.cxx:336
const ScPatternAttr * GetPattern(SCROW nRow) const
Definition: column.cxx:371
void SetError(SCROW nRow, const FormulaError nError)
Definition: column3.cxx:2870
void StoreToCache(SvStream &rStrm) const
Definition: column4.cxx:2003
Definition: global.hxx:193
void PrepareBroadcastersForDestruction()
Definition: column2.cxx:1979
const SfxPoolItem & GetAttr(SCROW nRow, sal_uInt16 nWhich) const
Definition: column.cxx:376
void RestoreFromCache(SvStream &rStrm)
Definition: column4.cxx:2013
const sc::CellTextAttrStoreType & GetCellAttrStore() const
Definition: column.hxx:191
void SwapNonEmpty(sc::TableValues &rValues, sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt)
Definition: column4.cxx:495
void CalculateInThread(ScInterpreterContext &rContext, SCROW nRow, size_t nLen, size_t nOffset, unsigned nThisThread, unsigned nThreadsTotal)
Definition: column2.cxx:3018
void MarkScenarioIn(ScMarkData &rDestMark) const
Definition: column.cxx:1868
Definition: column.cxx:95
bool HasVisibleAttrIn(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3255
Provides methods to allow direct shifting of document content without broadcasting or shifting of bro...
void GetFilterEntries(sc::ColumnBlockConstPosition &rBlockPos, SCROW nStartRow, SCROW nEndRow, ScFilterEntries &rFilterEntries, bool bFiltering)
Definition: column3.cxx:2605
void CompileDBFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3412
bool mbFiltering
Definition: column.hxx:138
broadcast only existing cell broadcasters => no AreaBroadcast of range!
Definition: column.hxx:176
FormulaError GetErrCode(SCROW nRow) const
Definition: column3.cxx:3121
void SetDirtyIfPostponed()
Definition: column.cxx:3377
void CopyUpdated(const ScColumn &rPosCol, ScColumn &rDestCol) const
Definition: column.cxx:1774
Think of this as a mini-ScColumn like storage that only stores cell values in a column.
Definition: cellvalues.hxx:40
bool GetNextDataPos(SCROW &rRow) const
Definition: column2.cxx:1473
Definition: column.hxx:136
void GetInputString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString) const
Definition: column.hxx:375
sal_uIntPtr sal_uLong
long Long
void SetCellNote(SCROW nRow, std::unique_ptr< ScPostIt > pNote)
Definition: column2.cxx:2019
Context for reference update during shifting, moving or copying of cell ranges.
void CalcAfterLoad(sc::CompileFormulaContext &rCxt, bool bStartListening)
Definition: column.cxx:3418
void DuplicateNotes(SCROW nStartRow, size_t nDataSize, ScColumn &rDestCol, sc::ColumnBlockPosition &maDestBlockPos, bool bCloneCaption, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1956
std::unique_ptr< ScPostIt > ReleaseNote(SCROW nRow)
Definition: column4.cxx:616
void SetEditText(SCROW nRow, std::unique_ptr< EditTextObject > pEditText)
Definition: column3.cxx:2217
void MergeBlockFrame(SvxBoxItem *pLineOuter, SvxBoxInfoItem *pLineInner, ScLineFlags &rFlags, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight) const
Definition: column.cxx:358
void BroadcastNewCell(SCROW nRow)
Definition: column3.cxx:752
std::unordered_map< sal_uInt32, sal_uInt32 > SvNumberFormatterMergeMap
void UpdateDeleteTab(sc::RefUpdateDeleteTabContext &rCxt)
Definition: column.cxx:3161
void Broadcast(SCROW nRow)
Definition: column3.cxx:73
void ResetChanged(SCROW nStartRow, SCROW nEndRow)
Definition: column.cxx:3424
Store position data for column array storage.
void TransferCellValuesTo(SCROW nRow, size_t nLen, sc::CellValues &rDest)
Definition: column4.cxx:341
bool IsEmptyData() const
Definition: column2.cxx:1249
void CopyStaticToDocument(SCROW nRow1, SCROW nRow2, const SvNumberFormatterMergeMap &rMap, ScColumn &rDestCol)
Definition: column.cxx:1063
Stores cell values for multiple tables.
Definition: cellvalues.hxx:85
CellType GetCellType(SCROW nRow) const
Definition: column3.cxx:3072
bool RemoveFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:690
void BroadcastRows(SCROW nStartRow, SCROW nEndRow, SfxHintId nHint)
Definition: column3.cxx:94
bool HasVisibleDataAt(SCROW nRow) const
Definition: column2.cxx:1283
void ApplyPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &rPatAttr, ScEditDataArray *pDataArray=nullptr, bool *const pIsChanged=nullptr)
Definition: column.cxx:517
void CompileHybridFormula(sc::StartListeningContext &rStartListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:1000
void HandleStuffAfterParallelCalculation(SCROW nRow, size_t nLen, ScInterpreter *pInterpreter)
Definition: column2.cxx:3054
bool ExtendMerge(SCCOL nThisCol, SCROW nStartRow, SCROW nEndRow, SCCOL &rPaintCol, SCROW &rPaintRow, bool bRefresh)
Definition: column.cxx:329
void Swap(ScColumn &rOther, SCROW nRow1, SCROW nRow2, bool bPattern)
Definition: column4.cxx:1110
This is very similar to ScCellValue, except that it references the original value instead of copying ...
Definition: cellvalue.hxx:103
formula::FormulaTokenRef ResolveStaticReference(SCROW nRow)
Definition: column2.cxx:2206
bool HasAttribSelection(const ScMarkData &rMark, HasAttrFlags nMask) const
Definition: column.cxx:309
Accessor class to ScDocument.
void ChangeSelectionIndent(bool bIncrement, const ScMarkData &rMark)
Definition: column.cxx:451
mdds::multi_type_vector< CellFunc, CellStoreEvent > CellStoreType
void RemoveEditTextCharAttribs(SCROW nRow, const ScPatternAttr &rAttr)
Definition: column3.cxx:3039
void CompileAll(sc::CompileFormulaContext &rCxt)
Definition: column.cxx:3398
void DeleteRanges(const std::vector< sc::RowSpan > &rRanges, InsertDeleteFlags nDelFlag)
Definition: column4.cxx:534
bool IsEmptyAttr() const
Definition: column2.cxx:1294
void CompileColRowNameFormula(sc::CompileFormulaContext &rCxt)
Definition: column2.cxx:3419
void ApplyBlockFrame(const SvxBoxItem &rLineOuter, const SvxBoxInfoItem *pLineInner, SCROW nStartRow, SCROW nEndRow, bool bLeft, SCCOL nDistRight)
Definition: column.cxx:365
bool BroadcastBroadcasters(SCROW nRow1, SCROW nRow2, ScHint &rHint)
Broadcast single broadcasters in range, without explicitly setting anything dirty, not doing area broadcasts.
Definition: column.cxx:3290
bool ReservePatternCount(SCSIZE nReserve)
Definition: column2.cxx:3671
void StartListeners(sc::StartListeningContext &rCxt, bool bAll)
Definition: column3.cxx:1947
void UpdateDrawObjectsForRow(std::vector< SdrObject * > &pObjects, SCCOL nTargetCol, SCROW nTargetRow)
Definition: column.cxx:1942
void GetDataExtrasAt(SCROW nRow, ScDataAreaExtras &rDataAreaExtras) const
Definition: column2.cxx:3201
void GetFormula(SCROW nRow, OUString &rFormula) const
Definition: column3.cxx:3053
Row-wise value iterator.
Definition: dociter.hxx:478
void ApplySelectionStyle(const ScStyleSheet &rStyle, const ScMarkData &rMark)
Definition: column.cxx:574
const sc::CellNoteStoreType & GetCellNoteStore() const
Definition: column.hxx:193
Store arbitrary cell value of any kind.
Definition: cellvalue.hxx:35
sal_Int32 GetMaxStringLen(SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet) const
Definition: column3.cxx:3272
void PreprocessRangeNameUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:971
void CopyToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn, const ScMarkData *pMarkData=nullptr, bool bAsLink=false, bool bGlobalNamesToLocal=false) const
Definition: column.cxx:1691
ScFormulaCell * SetFormulaCell(SCROW nRow, ScFormulaCell *pCell, sc::StartListeningType eListenType=sc::SingleCellListening, bool bInheritNumFormatIfNeeded=true)
Takes ownership of pCell.
Definition: column3.cxx:2315
void PreprocessDBDataUpdate(sc::EndListeningContext &rEndListenCxt, sc::CompileFormulaContext &rCompileCxt)
Definition: column4.cxx:985
void UpdateTranspose(const ScRange &rSource, const ScAddress &rDest, ScDocument *pUndoDoc)
Definition: column.cxx:3129
void SetDirtyVar()
Definition: column.cxx:3215
bool HasFormulaCell() const
Definition: column4.cxx:1292
void SetAllFormulasDirty(const sc::SetFormulaDirtyContext &rCxt)
Definition: column.cxx:3243
void ApplySelectionLineStyle(const ScMarkData &rMark, const ::editeng::SvxBorderLine *pLine, bool bColorOnly)
Definition: column.cxx:587
void StartListeningFormulaCells(sc::StartListeningContext &rStartCxt, sc::EndListeningContext &rEndCxt, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1499
void CopyToClip(sc::CopyToClipContext &rCxt, SCROW nRow1, SCROW nRow2, ScColumn &rColumn) const
Definition: column.cxx:1044
sc::CellStoreType::iterator GetPositionToInsert(SCROW nRow, std::vector< SCROW > &rNewSharedRows, bool bInsertFormula)
Definition: column3.cxx:271
Keep track of spans in a single column only.
const ScPatternAttr * pPattern
Definition: column.hxx:102
ScRefCellValue GetCellValue(SCROW nRow) const
Definition: column.cxx:734
size_t SCSIZE
size_t typedef to be able to find places where code was changed from USHORT to size_t and is used to ...
Definition: address.hxx:44
void ForgetNoteCaptions(SCROW nRow1, SCROW nRow2, bool bPreserveData)
Definition: column4.cxx:671
mdds::multi_type_vector< BCBlkFunc > BroadcasterStoreType
void UpdateGrow(const ScRange &rArea, SCCOL nGrowX, SCROW nGrowY)
Definition: column.cxx:3136
Additional class containing cell annotation data.
Definition: postit.hxx:161
void CreateAllNoteCaptions()
Definition: column4.cxx:665
void EndListeningFormulaCells(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, SCROW *pStartRow, SCROW *pEndRow)
Definition: column4.cxx:1510
void SetNumberFormat(SCROW nRow, sal_uInt32 nNumberFormat)
Definition: column2.cxx:3080
const ScStyleSheet * GetSelectionStyle(const ScMarkData &rMark, bool &rFound) const
Definition: column.cxx:609
Definition: address.hxx:68
void Delete(SCROW nRow)
Definition: column3.cxx:147
sc::CellStoreType maCells
Definition: column.hxx:129
void UpdateCompile(bool bForceIfNameInUse=false)
Definition: column.cxx:3194
bool SearchStyleRange(SCROW &rRow, SCROW &rEndRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
Definition: column.cxx:3463
ScColumn & operator=(const ScColumn &)=delete
void ResetFormulaCellPositions(SCROW nRow1, SCROW nRow2, bool bUpdateRefs)
Reset column position of formula cells within specified row range.
Definition: column4.cxx:1189
Walk through all cells in an area.
Definition: dociter.hxx:207
SCROW GetLastDataPos() const
Definition: column2.cxx:1390
bool SetFormulaCells(SCROW nRow, std::vector< ScFormulaCell * > &rCells)
Definition: column3.cxx:2353
sal_uInt32 GetNumberFormat(const ScInterpreterContext &rContext, SCROW nRow) const
Definition: column.cxx:422
void DeleteContent(SCROW nRow, bool bBroadcast=true)
Definition: column3.cxx:125
size_t mnBlkCountFormula
Definition: column.hxx:133
void AttachNewFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > &rNewSharedRows)
Definition: column3.cxx:683
void SetTabNo(SCTAB nNewTab)
Definition: column.cxx:3200
SvtBroadcaster * GetBroadcaster(SCROW nRow)
Definition: column2.cxx:1963
bool SetString(SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam=nullptr)
Returns true if the cell format was set as well.
Definition: column3.cxx:2197
void SetDirtyFromClip(SCROW nRow1, SCROW nRow2, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column.cxx:3251
double GetValue(SCROW nRow) const
Definition: column3.cxx:3005
constexpr double nPPTX
bool UpdateReference(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc)
Update reference addresses in formula cell in response to mass cell movement.
Definition: column.cxx:2480
void GetString(sc::ColumnBlockConstPosition &rBlockPos, SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:369
svl::SharedString GetSharedString(SCROW nRow) const
Definition: column3.cxx:2394
Definition: global.hxx:189
void InsertRow(SCROW nStartRow, SCSIZE nSize)
Definition: column.cxx:868
Definition: column.hxx:135
bool IsStyleSheetUsed(const ScStyleSheet &rStyle) const
Definition: column.cxx:680
void InitBlockPosition(sc::ColumnBlockPosition &rBlockPos)
Definition: column3.cxx:1044
void AttachNewFormulaCell(const sc::CellStoreType::iterator &itPos, SCROW nRow, ScFormulaCell &rCell, const std::vector< SCROW > &rNewSharedRows, bool bJoin=true, sc::StartListeningType eListenType=sc::SingleCellListening)
Definition: column3.cxx:608
mdds::multi_type_vector< CNoteFunc > CellNoteStoreType
Keep track of all named expressions that have been updated during reference update.
void FillMatrix(ScMatrix &rMat, size_t nMatCol, SCROW nRow1, SCROW nRow2, svl::SharedStringPool *pPool) const
Definition: column2.cxx:2491
void EndListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3334
void FindDataAreaPos(SCROW &rRow, bool bDown) const
Definition: column2.cxx:3119
void SetRawString(SCROW nRow, const OUString &rStr)
Definition: column3.cxx:2888
void UndoToColumn(sc::CopyToDocContext &rCxt, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nFlags, bool bMarked, ScColumn &rColumn) const
Definition: column.cxx:1761
void StartListening(SvtListener &rLst, SCROW nRow)
Definition: column2.cxx:3328
void SetValues(const SCROW nRow, const std::vector< double > &rVals)
Definition: column4.cxx:311
void DeleteBroadcasters(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:1973
bool TrimEmptyBlocks(SCROW &rRowStart, SCROW &rRowEnd) const
Definition: column2.cxx:1519
const ScPatternAttr * GetMostUsedPattern(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:381
bool IsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1302
sal_Int16 SCCOL
Definition: types.hxx:21
Definition: global.hxx:158
void RegroupFormulaCells(std::vector< ScAddress > *pGroupPos=nullptr)
Regroup formula cells for the entire column.
Definition: column3.cxx:3571
sc::MultiDataCellState::StateType HasDataCellsInRange(SCROW nRow1, SCROW nRow2, SCROW *pRow1) const
Definition: column4.cxx:47
Struct to hold non-data extended area, used with ScDocument::ShrinkToUsedDataArea().
Definition: sortparam.hxx:43
bool HasCellNote(SCROW nStartRow, SCROW nEndRow) const
Definition: column4.cxx:770
sc::CellTextAttrStoreType maCellTextAttrs
Definition: column.hxx:118
ScFormulaCell *const * GetFormulaCellBlockAddress(SCROW nRow, size_t &rBlockSize) const
Definition: column2.cxx:3085
bool TestCopyScenarioTo(const ScColumn &rDestCol) const
Definition: column.cxx:1851
void CheckVectorizationState()
Definition: column.cxx:3236
bool HasSelectionMatrixFragment(const ScMarkData &rMark) const
Definition: column.cxx:196
void Init(SCCOL nNewCol, SCTAB nNewTab, ScDocument &rDoc, bool bEmptyAttrArray)
Definition: column.cxx:100
const ScStyleSheet * GetStyle(SCROW nRow) const
Definition: column.cxx:604
const ScPatternAttr * SetPattern(SCROW nRow, std::unique_ptr< ScPatternAttr >)
Definition: column.cxx:700
Definition: types.hxx:123
void UpdateInsertTab(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3142
static void JoinNewFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell)
Definition: column3.cxx:277
bool TestInsertRow(SCROW nStartRow, SCSIZE nSize) const
Definition: column.cxx:838
void UpdateDrawObjects(std::vector< std::vector< SdrObject * >> &pObjects, SCROW nRowStart, SCROW nRowEnd)
Definition: column.cxx:1928
::boost::intrusive_ptr< FormulaToken > FormulaTokenRef
void EndListeningGroup(sc::EndListeningContext &rCxt, SCROW nRow)
Definition: column4.cxx:1606
Structure that stores segments of boolean flags per column, and perform custom action on those segmen...
bool HasValueData(SCROW nRow) const
Definition: column3.cxx:3155
void UpdateSelectionFunction(const ScRangeList &rRanges, ScFunctionData &rData, const ScFlatBoolRowSegments &rHiddenRows)
Definition: column2.cxx:3493
void GetUnprotectedCells(SCROW nStartRow, SCROW nEndRow, ScRangeList &rRangeList) const
Definition: column4.cxx:802
void FindUsed(SCROW nStartRow, SCROW nEndRow, mdds::flat_segment_tree< SCROW, bool > &rUsed) const
Definition: column2.cxx:3286
void EndListeningIntersectedGroups(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, std::vector< ScAddress > *pGroupPos)
Definition: column4.cxx:1561
bool HasStringData(SCROW nRow) const
Definition: column3.cxx:3135
bool EnsureFormulaCellResults(SCROW nRow1, SCROW nRow2, bool bSkipRunning=false)
Definition: column4.cxx:1886
double * GetValueCell(SCROW nRow)
Definition: column3.cxx:2986
void FindRangeNamesInUse(SCROW nRow1, SCROW nRow2, sc::UpdatedRangeNames &rIndexes) const
Definition: column.cxx:3209
tools::Long GetNeededSize(SCROW nRow, OutputDevice *pDev, double nPPTX, double nPPTY, const Fraction &rZoomX, const Fraction &rZoomY, bool bWidth, const ScNeededSizeOptions &rOptions, const ScPatternAttr **pPatternChange, bool bInPrintTwips=false) const
Definition: column2.cxx:82
void UpdateScriptTypes(SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1099
bool TestInsertCol(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:816
bool IsNotesEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:1319
void DetachFormulaCells(const sc::CellStoreType::position_type &aPos, size_t nLength, std::vector< SCROW > *pNewSharedRows)
Definition: column3.cxx:408
sc::CellNoteStoreType & GetCellNoteStore()
Definition: column.hxx:192
void CollectFormulaCells(std::vector< ScFormulaCell * > &rCells, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1283
bool UpdateReferenceOnCopy(sc::RefUpdateContext &rCxt, ScDocument *pUndoDoc=nullptr)
Definition: column.cxx:2455
void FreeNotes()
Definition: column3.cxx:170
void ApplyAttr(SCROW nRow, const SfxPoolItem &rAttr)
Definition: column.cxx:716
Broadcast mode for SetDirty(SCROW,SCROW,BroadcastMode).
Definition: column.hxx:172
void CopyScenarioTo(ScColumn &rDestCol) const
Definition: column.cxx:1825
sal_uInt32 GetCodeCount() const
Definition: column2.cxx:3654
Iterate through all edit text cells in a given sheet.
void ClearItems(SCROW nStartRow, SCROW nEndRow, const sal_uInt16 *pWhich)
Definition: column.cxx:695
ScColumn(const ScColumn &)=delete
bool GetFirstVisibleAttr(SCROW &rFirstRow) const
Definition: column2.cxx:3234
void SetPatternArea(SCROW nStartRow, SCROW nEndRow, const ScPatternAttr &)
Definition: column.cxx:710
void CopyCellNotesToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol, bool bCloneCaption=true, SCROW nRowOffsetDest=0) const
Definition: column2.cxx:1934
bool GetLastVisibleAttr(SCROW &rLastRow) const
Definition: column2.cxx:3242
bool GetDataEntries(SCROW nRow, std::set< ScTypedStrData > &rStrings) const
Definition: column3.cxx:2741
void MixData(sc::MixDocContext &rCxt, SCROW nRow1, SCROW nRow2, ScPasteFunc nFunction, bool bSkipEmpty, const ScColumn &rSrcCol)
Definition: column3.cxx:1887
bool TestTabRefAbs(SCTAB nTable) const
Definition: column2.cxx:1242
bool ApplyFlags(SCROW nStartRow, SCROW nEndRow, ScMF nFlags)
Definition: column.cxx:685
void GetOptimalHeight(sc::RowHeightContext &rCxt, SCROW nStartRow, SCROW nEndRow, sal_uInt16 nMinHeight, SCROW nMinStart)
Definition: column2.cxx:867
void DeleteCellNotes(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, bool bForgetCaptionOwnership)
Definition: column2.cxx:2059
void MergePatternArea(ScMergePatternState &rState, SCROW nRow1, SCROW nRow2, bool bDeep) const
Definition: column.cxx:353
sal_Int32 SCROW
Definition: types.hxx:17
void UpdateInsertTabOnlyCells(sc::RefUpdateInsertTabContext &rCxt)
Definition: column.cxx:3153
To calculate a single subtotal function.
Definition: subtotal.hxx:60
ScPostIt * GetCellNote(SCROW nRow)
Definition: column2.cxx:1993
void SetDirtyAfterLoad()
Definition: column.cxx:3350
bool ParseString(ScCellValue &rCell, SCROW nRow, SCTAB nTab, const OUString &rString, formula::FormulaGrammar::AddressConvention eConv, const ScSetStringParam *pParam)
Definition: column3.cxx:1965
bool HasFiltering() const
Definition: column.hxx:187
sc::CellStoreEvent maCellsEvent
Definition: column.hxx:126
sc::BroadcasterStoreType maBroadcasters
Definition: column.hxx:124
const EditTextObject * GetEditText(SCROW nRow) const
Definition: column3.cxx:3026
void CollectListeners(std::vector< SvtListener * > &rListeners, SCROW nRow1, SCROW nRow2)
Definition: column4.cxx:1274
void SetFormula(SCROW nRow, const ScTokenArray &rArray, formula::FormulaGrammar::Grammar eGram)
Definition: column3.cxx:2279
Definition: attrib.hxx:34
void AssertNoInterpretNeeded(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2978
void RemoveProtected(SCROW nStartRow, SCROW nEndRow)
Definition: column3.cxx:2844
bool IsMerged(SCROW nRow) const
Definition: column4.cxx:42
void SetFormulaResults(SCROW nRow, const double *pResults, size_t nLen)
Definition: column2.cxx:2985
bool IsVisibleAttrEqual(const ScColumn &rCol, SCROW nStartRow=0, SCROW nEndRow=MAXROW) const
Definition: column2.cxx:3226
broadcast existing cells with position => does AreaBroadcast
Definition: column.hxx:175
sc::CellNoteStoreType maCellNotes
Definition: column.hxx:121
sal_uInt16 GetOptimalColWidth(OutputDevice *pDev, double nPPTX, double nPPTY, const Fraction &rZoomX, const Fraction &rZoomY, bool bFormula, sal_uInt16 nOldWidth, const ScMarkData *pMarkData, const ScColWidthParam *pParam) const
Definition: column2.cxx:717
void CopyCellValuesFrom(SCROW nRow, const sc::CellValues &rSrc)
Definition: column4.cxx:366
void AttachFormulaCells(sc::StartListeningContext &rCxt, SCROW nRow1, SCROW nRow2)
Definition: column3.cxx:473
SCROW GetFirstDataPos() const
Definition: column2.cxx:1378
std::unique_ptr< ScAttrIterator > CreateAttrIterator(SCROW nStartRow, SCROW nEndRow) const
Definition: column3.cxx:1904
void DumpColumnStorage() const
SCCOL GetCol() const
Definition: column.hxx:186
void SetTableOpDirty(const ScRange &)
Definition: column.cxx:3340
SCROW FindNextVisibleRowWithContent(sc::CellStoreType::const_iterator &itPos, SCROW nRow, bool bForward) const
Definition: column2.cxx:1589
bool HasCellNotes() const
Definition: column2.cxx:2067
SvtScriptType GetRangeScriptType(sc::CellTextAttrStoreType::iterator &itPos, SCROW nRow1, SCROW nRow2, const sc::CellStoreType::iterator &itr)
Get combined script types of the specified range.
Definition: column2.cxx:2121
Definition: global.hxx:281
formula::VectorRefArray FetchVectorRefArray(SCROW nRow1, SCROW nRow2)
Definition: column2.cxx:2762
sc::CellTextAttrStoreType & GetCellAttrStore()
Definition: column.hxx:190
void CopyCellTextAttrsToDocument(SCROW nRow1, SCROW nRow2, ScColumn &rDestCol) const
Definition: column2.cxx:1838
void DeleteSelection(InsertDeleteFlags nDelFlag, const ScMarkData &rMark, bool bBroadcast)
Definition: column.cxx:489
void MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn &rCol)
Definition: column.cxx:1993
void ClearSelectionItems(const sal_uInt16 *pWhich, const ScMarkData &rMark)
Definition: column.cxx:464
SvtScriptType GetScriptType(SCROW nRow) const
Definition: column2.cxx:2113
const sc::CellStoreType & GetCellStore() const
Definition: column.hxx:189
void RemoveEditAttribs(SCROW nStartRow, SCROW nEndRow)
Definition: column2.cxx:1235
void GetString(SCROW nRow, OUString &rString, const ScInterpreterContext *pContext=nullptr) const
Definition: column.hxx:367
void ApplyPattern(SCROW nRow, const ScPatternAttr &rPatAttr)
Definition: column.cxx:502
const ScFormulaCell * FetchFormulaCell(SCROW nRow) const
Definition: column2.cxx:3112
void CopyOneCellFromClip(sc::CopyFromClipContext &rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset)
Definition: column4.cxx:195
const ScFormulaCell * GetFormulaCell(SCROW nRow) const
Definition: column3.cxx:3062
Definition: qproform.cxx:398
void CopyScenarioFrom(const ScColumn &rSrcCol)
Definition: column.cxx:1796
std::vector< sc::FormulaGroupEntry > GetFormulaGroupEntries()
Get all non-grouped formula cells and formula cell groups in the whole column.
Definition: column.cxx:2544
bool GetNextSpellingCell(SCROW &nRow, bool bInSel, const ScMarkData &rData) const
Definition: column2.cxx:1071
SCROW SearchStyle(SCROW nRow, const ScStyleSheet *pSearchStyle, bool bUp, bool bInSelection, const ScMarkData &rMark) const
May return -1 if not found.
Definition: column.cxx:3445
void UpdateMoveTab(sc::RefUpdateMoveTabContext &rCxt, SCTAB nTabNo)
Definition: column.cxx:3183
size_t GetNoteCount() const
Definition: column4.cxx:626
void AddCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:551
sal_Int32 GetMaxNumberStringLen(sal_uInt16 &nPrecision, SCROW nRowStart, SCROW nRowEnd) const
Definition: column3.cxx:3433
SCROW FindNextVisibleRow(SCROW nRow, bool bForward) const
Definition: column2.cxx:1565
bool IsDrawObjectsEmptyBlock(SCROW nStartRow, SCROW nEndRow) const
Definition: column.cxx:1955
SCSIZE GetCellCount() const
Definition: column3.cxx:3114
void ConvertFormulaToValue(sc::EndListeningContext &rCxt, SCROW nRow1, SCROW nRow2, sc::TableValues *pUndo)
Definition: column4.cxx:432
const T & GetAttr(SCROW nRow, TypedWhichId< T > nWhich) const
Definition: column.hxx:456
std::optional< sc::ColumnIterator > GetColumnIterator(SCROW nRow1, SCROW nRow2) const
Definition: column4.cxx:1666
SCROW GetNextUnprotected(SCROW nRow, bool bUp) const
Including current, may return -1.
Definition: column.cxx:110
void SwapCol(ScColumn &rCol)
Definition: column.cxx:1965
void BroadcastCells(const std::vector< SCROW > &rRows, SfxHintId nHint)
Definition: column3.cxx:79
void SetScriptType(SCROW nRow, SvtScriptType nType)
Definition: column2.cxx:2192
void FindStyleSheet(const SfxStyleSheetBase *pStyleSheet, ScFlatBoolRowSegments &rUsedRows, bool bReset)
Definition: column.cxx:675
void ApplyStyleArea(SCROW nStartRow, SCROW nEndRow, const ScStyleSheet &rStyle)
Definition: column.cxx:569
SCROW ApplySelectionCache(SfxItemPoolCache *pCache, const ScMarkData &rMark, ScEditDataArray *pDataArray, bool *const pIsChanged)
Definition: column.cxx:427
void GetInputString(SCROW nRow, OUString &rString) const
Definition: column.hxx:373
bool HasDataAt(SCROW nRow, ScDataAreaExtras *pDataAreaExtras=nullptr) const
Definition: column2.cxx:3167
bool HandleRefArrayForParallelism(SCROW nRow1, SCROW nRow2, const ScFormulaCellGroupRef &mxGroup)
Definition: column4.cxx:1899
SCTAB GetTab() const
Definition: column.hxx:185
Definition: global.hxx:352
void SetValue(SCROW nRow, double fVal)
Definition: column3.cxx:2937
void CalcAll()
Definition: column.cxx:3392
void ApplyPatternIfNumberformatIncompatible(const ScRange &rRange, const ScPatternAttr &rPattern, SvNumFormatType nNewType)
Definition: column.cxx:525
bool IsFormulaDirty(SCROW nRow) const
Definition: column.cxx:3221
void RemoveCondFormat(SCROW nStartRow, SCROW nEndRow, sal_uInt32 nIndex)
Definition: column.cxx:556
void BroadcastRecalcOnRefMove()
Definition: column.cxx:3384
bool GetPrevDataPos(SCROW &rRow) const
Definition: column2.cxx:1427
const sc::CellTextAttr * GetCellTextAttr(SCROW nRow) const
Definition: column.cxx:795
void DeleteCells(sc::ColumnBlockPosition &rBlockPos, SCROW nRow1, SCROW nRow2, InsertDeleteFlags nDelFlag, sc::SingleColumnSpanSet &rDeleted)
Definition: column3.cxx:967
const ScStyleSheet * GetAreaStyle(bool &rFound, SCROW nRow1, SCROW nRow2) const
Definition: column.cxx:648
bool HasStringCells(SCROW nStartRow, SCROW nEndRow) const
Return true if there is a string or editcell in the range.
Definition: column3.cxx:3177
Definition: types.hxx:65
void DeleteBeforeCopyFromClip(sc::CopyFromClipContext &rCxt, const ScColumn &rClipCol, sc::ColumnSpanSet &rBroadcastSpans)
Definition: column4.cxx:95
sal_uInt16 GetTextWidth(SCROW nRow) const
Definition: column2.cxx:2097
void CopyCellToDocument(SCROW nSrcRow, SCROW nDestRow, ScColumn &rDestCol)
Definition: column.cxx:1188
void EndListeningIntersectedGroup(sc::EndListeningContext &rCxt, SCROW nRow, std::vector< ScAddress > *pGroupPos)
Definition: column4.cxx:1527
void SetNeedsListeningGroup(SCROW nRow)
Definition: column4.cxx:1636
mdds::multi_type_vector< CTAttrFunc > CellTextAttrStoreType
sc::CellStoreType & GetCellStore()
Definition: column.hxx:188
void CloneFormulaCell(const ScFormulaCell &rSrc, const sc::CellTextAttr &rAttr, const std::vector< sc::RowSpan > &rRanges)
Definition: column4.cxx:540
void GetNotesInRange(SCROW nStartRow, SCROW nEndRow, std::vector< sc::NoteEntry > &rNotes) const
Definition: column4.cxx:754
bool IsAllAttrEqual(const ScColumn &rCol, SCROW nStartRow, SCROW nEndRow) const
Definition: column2.cxx:3218
void UpdateInsertTabAbs(SCTAB nNewPos)
Definition: column.cxx:3175
bool HasEditCells(SCROW nStartRow, SCROW nEndRow, SCROW &rFirst)
Definition: column.cxx:3430
void StartListeningUnshared(const std::vector< SCROW > &rNewSharedRows)
Re-establish listeners on unshared formula groups.
Definition: column3.cxx:350
sal_Int16 SCTAB
Definition: types.hxx:22
void DetachFormulaCell(const sc::CellStoreType::position_type &aPos, ScFormulaCell &rCell, std::vector< SCROW > &rNewSharedRows)
Detach a formula cell that's about to be deleted, or removed from document storage (if that ever happ...
Definition: column3.cxx:297
bool UpdateScriptType(sc::CellTextAttr &rAttr, SCROW nRow, sc::CellStoreType::iterator &itr)
Definition: column3.cxx:765
SCSIZE GetPatternCount() const
Definition: column2.cxx:3661
void CompileXML(sc::CompileFormulaContext &rCxt, ScProgress &rProgress)
Definition: column.cxx:3404
no broadcasting
Definition: column.hxx:174