diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-05-03 00:50:46 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-05-03 00:55:41 -0400 |
commit | af7df25bcc8bc95462e2b3bf8c003d035111a479 (patch) | |
tree | bf7bdeba603cdaeec0e371081cfc6b10ceb2a8ee /sc/inc/columnspanset.hxx | |
parent | 41062189f78990f7aa42949484b58de64b0dce79 (diff) |
fdo#78062: Broadcast only on non-empty cells within deleted range.
We don't want to broadcast over the whole selected range, which may be
the whole sheet which is well over 1 billion cells !
Change-Id: I7c139ce5efe09312cf824e35f0efe551184032eb
Diffstat (limited to 'sc/inc/columnspanset.hxx')
-rw-r--r-- | sc/inc/columnspanset.hxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sc/inc/columnspanset.hxx b/sc/inc/columnspanset.hxx index ef32af7aea29..7c7fdf524010 100644 --- a/sc/inc/columnspanset.hxx +++ b/sc/inc/columnspanset.hxx @@ -47,8 +47,10 @@ struct SC_DLLPUBLIC ColRowSpan */ class ColumnSpanSet : boost::noncopyable { +public: typedef mdds::flat_segment_tree<SCROW, bool> ColumnSpansType; +private: struct ColumnType { ColumnSpansType maSpans; @@ -89,6 +91,12 @@ public: void set(SCTAB nTab, SCCOL nCol, SCROW nRow1, SCROW nRow2, bool bVal); void set(const ScRange& rRange, bool bVal); + /** + * Scan specified range in a specified sheet and mark all non-empty cells + * with specified boolean value. + */ + void scan(const ScDocument& rDoc, SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, bool bVal); + void executeAction(Action& ac) const; void executeColumnAction(ScDocument& rDoc, ColumnAction& ac) const; }; |