summaryrefslogtreecommitdiffstats
path: root/sc/inc
diff options
context:
space:
mode:
authorMarco Cecchetti <marco.cecchetti@collabora.com>2017-04-19 22:37:13 +0200
committerMarco Cecchetti <mrcekets@gmail.com>2017-10-02 18:42:57 +0200
commit6388a50c1e3ef2e25132f63547bb91d08a0f416c (patch)
treee9eccab1f95b42eed7feb7bbb3e50ec912290678 /sc/inc
parentRemoved duplicated includes (diff)
downloadcore-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.hxx3
-rw-r--r--sc/inc/markarr.hxx3
-rw-r--r--sc/inc/markdata.hxx3
-rw-r--r--sc/inc/markmulti.hxx2
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.