Author: hdu
Date: Wed Aug  1 13:47:33 2012
New Revision: 1367992

URL: http://svn.apache.org/viewvc?rev=1367992&view=rev
Log:
#i93128# fix data validity check for criteria "Allow text length" and numeric 
cells

Patch-by: Zhang Lu
Reported-by: amy2008, eberlein
Review-by: Herbert Duerr

Modified:
    incubator/ooo/trunk/main/sc/source/core/data/validat.cxx

Modified: incubator/ooo/trunk/main/sc/source/core/data/validat.cxx
URL: 
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sc/source/core/data/validat.cxx?rev=1367992&r1=1367991&r2=1367992&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sc/source/core/data/validat.cxx (original)
+++ incubator/ooo/trunk/main/sc/source/core/data/validat.cxx Wed Aug  1 
13:47:33 2012
@@ -441,19 +441,18 @@ sal_Bool ScValidationData::DoError( Wind
 sal_Bool ScValidationData::IsDataValid( const String& rTest, const 
ScPatternAttr& rPattern,
                                                                        const 
ScAddress& rPos ) const
 {
-       if ( eDataMode == SC_VALID_ANY )
-               return sal_True;                                                
// alles erlaubt
+       if ( eDataMode == SC_VALID_ANY ) // check if any cell content is allowed
+               return sal_True;
 
-       if ( rTest.GetChar(0) == '=' )
-               return sal_False;                                               
// Formeln sind sonst immer ungueltig
+       if ( rTest.GetChar(0) == '=' )   // formulas do not pass the validity 
test
+               return sal_False;
 
-       if ( !rTest.Len() )
-               return IsIgnoreBlank();                         // leer: wie 
eingestellt
+       if ( !rTest.Len() )              // check whether empty cells are 
allowed
+               return IsIgnoreBlank();
 
        SvNumberFormatter* pFormatter = GetDocument()->GetFormatTable();
 
-       //      Test, was es denn ist - wie in ScColumn::SetString
-
+       // get the value if any
        sal_uInt32 nFormat = rPattern.GetNumberFormat( pFormatter );
 
        double nVal;
@@ -464,7 +463,15 @@ sal_Bool ScValidationData::IsDataValid( 
        else
                pCell = new ScStringCell( rTest );
 
-       sal_Bool bRet = IsDataValid( pCell, rPos );
+       sal_Bool bRet;
+       if (SC_VALID_TEXTLEN == eDataMode)
+       {
+               const double nLenVal = static_cast<double>( rTest.Len() );
+               ScValueCell aTmpCell( nLenVal );
+               bRet = IsCellValid( &aTmpCell, rPos );
+       }
+       else
+               bRet = IsDataValid( pCell, rPos );
 
        pCell->Delete();
        return bRet;


Reply via email to