Avoid potential negative array index access to cached text.
[LibreOffice.git] / sc / inc / grouparealistener.hxx
bloba52dc2fb8a74105fc91b68730f73a9d31e07ed00
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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 */
10 #pragma once
12 #include "address.hxx"
14 #include <svl/listener.hxx>
16 #include <vector>
18 class ScFormulaCell;
19 class ScDocument;
20 class ScColumn;
22 namespace sc {
24 class BulkDataHint;
26 class FormulaGroupAreaListener final : public SvtListener
28 ScRange maRange;
29 const ScDocument& mrDocument;
30 const ScColumn* mpColumn;
31 SCROW mnTopCellRow;
32 SCROW mnGroupLen;
33 bool mbStartFixed;
34 bool mbEndFixed;
36 public:
38 FormulaGroupAreaListener() = delete;
39 FormulaGroupAreaListener( const ScRange& rRange, const ScDocument& rDocument,
40 const ScAddress& rTopCellPos, SCROW nGroupLen, bool bStartFixed, bool bEndFixed );
42 virtual ~FormulaGroupAreaListener() override;
44 ScRange getListeningRange() const;
46 virtual void Notify( const SfxHint& rHint ) override;
47 virtual void Query( QueryBase& rQuery ) const override;
49 /**
50 * Given the row span of changed cells within a single column, collect all
51 * formula cells that need to be notified of the change.
53 * @param nTab sheet position of the changed cell span.
54 * @param nCol column position of the changed cell span.
55 * @param nRow1 top row position of the changed cell span.
56 * @param nRow2 bottom row position of the changed cell span.
57 * @param rCells all formula cells that need to be notified are put into
58 * this container.
60 void collectFormulaCells( SCTAB nTab, SCCOL nCol, SCROW nRow1, SCROW nRow2, std::vector<ScFormulaCell*>& rCells ) const;
61 void collectFormulaCells( SCROW nRow1, SCROW nRow2, std::vector<ScFormulaCell*>& rCells ) const;
63 const ScFormulaCell* getTopCell() const;
65 private:
66 void notifyCellChange( const SfxHint& rHint, const ScAddress& rPos, SCROW nNumRows );
67 void notifyBulkChange( const BulkDataHint& rHint );
72 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */