[Libreoffice-commits] core.git: sc/source

Eike Rathke erack at redhat.com
Fri Jul 29 11:35:05 UTC 2016


 sc/source/ui/inc/viewdata.hxx  |    2 ++
 sc/source/ui/view/viewdata.cxx |   15 ++++++++++-----
 2 files changed, 12 insertions(+), 5 deletions(-)

New commits:
commit 4b90c9dc83d96908d3732d95e75c2f71d0f5d988
Author: Eike Rathke <erack at redhat.com>
Date:   Fri Jul 29 13:30:07 2016 +0200

    move range detection to ScViewData::SelectionFillDOOM()
    
    Change-Id: Ic5205428136fc323affed8d956d6ee0434d43988

diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 7c1c098..141e758 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 d07f711..dc31056 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 )


More information about the Libreoffice-commits mailing list