diff options
author | Marco Cecchetti <marco.cecchetti@collabora.com> | 2017-04-19 22:37:13 +0200 |
---|---|---|
committer | Marco Cecchetti <mrcekets@gmail.com> | 2017-10-02 18:42:57 +0200 |
commit | 6388a50c1e3ef2e25132f63547bb91d08a0f416c (patch) | |
tree | e9eccab1f95b42eed7feb7bbb3e50ec912290678 /sc/inc | |
parent | Removed duplicated includes (diff) | |
download | core-6388a50c1e3ef2e25132f63547bb91d08a0f416c.tar.gz core-6388a50c1e3ef2e25132f63547bb91d08a0f416c.zip |
lok: sc: overlays and edit view misplaced by other view actions
The edit view, the cell cursor and the cell selection overlays become
misplaced when another user inserts, deletes or resizes a row.
The same is true for columns.
The solution takes care of the current tab each view is
displaying and of undo/redo actions.
Change-Id: I24c94f774f3b18028c9356a904e1b14b07c5c61a
Reviewed-on: https://gerrit.libreoffice.org/40016
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Marco Cecchetti <mrcekets@gmail.com>
Diffstat (limited to 'sc/inc')
-rw-r--r-- | sc/inc/address.hxx | 3 | ||||
-rw-r--r-- | sc/inc/markarr.hxx | 3 | ||||
-rw-r--r-- | sc/inc/markdata.hxx | 3 | ||||
-rw-r--r-- | sc/inc/markmulti.hxx | 2 |
4 files changed, 11 insertions, 0 deletions
diff --git a/sc/inc/address.hxx b/sc/inc/address.hxx index 8f6ba1f32296..b5b7f1ad689a 100644 --- a/sc/inc/address.hxx +++ b/sc/inc/address.hxx @@ -621,6 +621,9 @@ public: SC_DLLPUBLIC SAL_WARN_UNUSED_RESULT bool MoveSticky( SCCOL aDeltaX, SCROW aDeltaY, SCTAB aDeltaZ, ScRange& rErrorRange ); + SC_DLLPUBLIC void IncColIfNotLessThan(SCCOL nStartCol, SCCOL nOffset); + SC_DLLPUBLIC void IncRowIfNotLessThan(SCROW nStartRow, SCROW nOffset); + SC_DLLPUBLIC void ExtendTo( const ScRange& rRange ); SC_DLLPUBLIC bool Intersects( const ScRange& rRange ) const; // do two ranges intersect? diff --git a/sc/inc/markarr.hxx b/sc/inc/markarr.hxx index 548d023db4d4..4b538d9131fe 100644 --- a/sc/inc/markarr.hxx +++ b/sc/inc/markarr.hxx @@ -60,6 +60,9 @@ public: /// Including current row, may return -1 if bUp and not found SCROW GetNextMarked( SCROW nRow, bool bUp ) const; SCROW GetMarkEnd( SCROW nRow, bool bUp ) const; + + void Shift( SCROW nStartRow, long nOffset ); + void Intersect( const ScMarkArray& rOther ); }; class ScMarkArrayIter // iterate over selected range diff --git a/sc/inc/markdata.hxx b/sc/inc/markdata.hxx index 51f63a477d67..26387109b833 100644 --- a/sc/inc/markdata.hxx +++ b/sc/inc/markdata.hxx @@ -142,6 +142,9 @@ public: void InsertTab( SCTAB nTab ); void DeleteTab( SCTAB nTab ); + void ShiftCols(SCCOL nStartCol, long nColOffset); + void ShiftRows(SCROW nStartRow, long nRowOffset); + // Generate envelopes if multimarked and fills the passed ScRange object with // the smallest range that includes the marked area plus its envelopes. void GetSelectionCover( ScRange& rRange ); diff --git a/sc/inc/markmulti.hxx b/sc/inc/markmulti.hxx index 6ada78c243e6..cf68a403fb21 100644 --- a/sc/inc/markmulti.hxx +++ b/sc/inc/markmulti.hxx @@ -63,6 +63,8 @@ public: void Clear(); void MarkAllCols( SCROW nStartRow, SCROW nEndRow ); bool HasAnyMarks() const; + void ShiftCols(SCCOL nStartCol, long nColOffset); + void ShiftRows(SCROW nStartRow, long nRowOffset); // For faster access from within ScMarkData, instead of creating // ScMultiSelIter with ScFlatBoolRowSegments bottleneck. |