summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2016-07-29 13:30:07 +0200
committerEike Rathke <erack@redhat.com>2016-07-29 13:34:35 +0200
commit4b90c9dc83d96908d3732d95e75c2f71d0f5d988 (patch)
tree81cb1deb25c4420f29969a2fe1dae553e0f1be85 /sc/source
parent9a40590d0ca45a587717b3931a5eed8c2c2c6f1b (diff)
move range detection to ScViewData::SelectionFillDOOM()
Change-Id: Ic5205428136fc323affed8d956d6ee0434d43988
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/ui/inc/viewdata.hxx2
-rw-r--r--sc/source/ui/view/viewdata.cxx15
2 files changed, 12 insertions, 5 deletions
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 7c1c09834ca4..141e758729a3 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -356,6 +356,8 @@ public:
/// Disallow paste on Ctrl+A all selected. We'd go DOOM.
bool SelectionForbidsPaste();
+ /// Determine DOOM condition, i.e. from selected range.
+ static bool SelectionFillDOOM( const ScRange& rRange );
void SetFillMode( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow );
void SetDragMode( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index d07f711c28be..dc310564632b 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -856,14 +856,19 @@ bool ScViewData::IsMultiMarked()
bool ScViewData::SelectionForbidsPaste()
{
- SCCOL nCol1, nCol2;
- SCROW nRow1, nRow2;
- SCTAB nTab1, nTab2;
- ScMarkType eMarkType = GetSimpleArea( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2);
+ ScRange aSelRange( ScAddress::UNINITIALIZED );
+ ScMarkType eMarkType = GetSimpleArea( aSelRange);
+ return eMarkType != SC_MARK_MULTI && SelectionFillDOOM( aSelRange);
+}
+
+// static
+bool ScViewData::SelectionFillDOOM( const ScRange& rRange )
+{
/* TODO: it is still possible to select one row less than the entire sheet
* and fool around. We could narrow this down to some "sane" value, just
* what would be sane? At least this helps against the Ctrl+A cases. */
- return eMarkType != SC_MARK_MULTI && nCol1 == 0 && nCol2 == MAXCOL && nRow1 == 0 && nRow2 == MAXROW;
+ return rRange.aStart.Col() == 0 && rRange.aEnd.Col() == MAXCOL &&
+ rRange.aStart.Row() == 0 && rRange.aEnd.Row() == MAXROW;
}
void ScViewData::SetFillMode( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow )