ooo-build r13767 - in trunk: . patches/dev300 patches/vba



Author: noelpwer
Date: Wed Sep  3 14:21:13 2008
New Revision: 13767
URL: http://svn.gnome.org/viewvc/ooo-build?rev=13767&view=rev

Log:
2008-09-03  Noel Power  <noel power novell com>

        * patches/dev300/apply: fix various bits
        * patches/vba/vba-intersect-multi-area.diff: 
        * patches/vba/parse-xla1-bad-3dflag.diff: fix n#422569
        * patches/vba/stringnumbercompare.diff: fix n#422559
        * patches/vba/vba-rowheight-fix.diff: 
        * patches/vba/range-listBox-compare.diff: fix n#421939



Added:
   trunk/patches/vba/parse-xla1-bad-3dflag.diff
   trunk/patches/vba/range-listBox-compare.diff
   trunk/patches/vba/stringnumbercompare.diff
   trunk/patches/vba/vba-intersect-multi-area.diff
   trunk/patches/vba/vba-rowheight-fix.diff
Modified:
   trunk/ChangeLog
   trunk/patches/dev300/apply

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Wed Sep  3 14:21:13 2008
@@ -1608,6 +1608,18 @@
 basic-ide-objectmodule.diff, Fong
 # display a friendly name for objectmodule tab
 basic-ide-module-object-name-combile.diff, Fong
+# fix bug accessing default member of userform control
+range-listBox-compare.diff, n#421939
+# fix bug comparing string that can't be converted to number
+stringnumbercompare.diff, n#422559
+# fix bug generating a specific Sheet reference
+parse-xla1-bad-3dflag.diff, n#422569
+# fix bad intersect api, need to be folded into npower11
+# also needs some testing
+vba-intersect-multi-area.diff
+# fix rowheight to return null if any row in a multicell range is 
+# of a different height to the others, also need to be pulled into npower11
+vba-rowheight-fix.diff
 [ VBAUntested ]
 SectionOwner => noelpwer
 vba-basic-null.diff i#85349, jjiao
@@ -2608,3 +2620,4 @@
 sw-filter-import-TOX.diff ,n#40425, Amelia Wang
 gnome-fpicker-transient-win.diff, i#92878, cmc
 gnome-fpicker-main-thread.diff, i#93366, cmc
+

Added: trunk/patches/vba/parse-xla1-bad-3dflag.diff
==============================================================================
--- (empty file)
+++ trunk/patches/vba/parse-xla1-bad-3dflag.diff	Wed Sep  3 14:21:13 2008
@@ -0,0 +1,41 @@
+diff --git sc/source/core/tool/address.cxx sc/source/core/tool/address.cxx
+index e518b27..8966a96 100644
+--- sc/source/core/tool/address.cxx
++++ sc/source/core/tool/address.cxx
+@@ -235,7 +235,7 @@ lcl_ScRange_Parse_XL_Header( ScRange& r,
+                              USHORT& nFlags )
+ {
+     const sal_Unicode* startTabs, *start = p;
+-
++    USHORT nSaveFlags = nFlags;
+     // Is this an external reference ?
+     rStartTabName.Erase();
+     rEndTabName.Erase();
+@@ -287,7 +287,13 @@ lcl_ScRange_Parse_XL_Header( ScRange& r,
+         }
+ 
+         if( *p++ != '!' )
++        {
++            // bit of a hack ( in fact for a1:d11 ) passed in above
++            // the first tabname will be assigned a1 ??
++            // In anycase if we get here we need to reset the flags ( 
++            nFlags = nSaveFlags;
+             return start;   // syntax error
++        }
+     }
+     else
+     {
+@@ -614,7 +620,12 @@ lcl_ScRange_Parse_XL_A1( ScRange& r,
+ {
+     const sal_Unicode* tmp1, *tmp2;
+     String aExternDocName, aStartTabName, aEndTabName; // for external link table
+-    USHORT nFlags = SCA_VALID | SCA_VALID_TAB, nFlags2 = SCA_VALID_TAB2;
++
++    // nFlags 2 is always shifted << 4 which would imply 
++    // SCA_VALID_TAB2 should be SCA_VALID_TAB ( which would ensure 
++    // Range references have the correct flags set when ScRange::ParseAny 
++    // is called
++    USHORT nFlags = SCA_VALID | SCA_VALID_TAB, nFlags2 = SCA_VALID_TAB;
+ 
+ #if 0
+     {

Added: trunk/patches/vba/range-listBox-compare.diff
==============================================================================
--- (empty file)
+++ trunk/patches/vba/range-listBox-compare.diff	Wed Sep  3 14:21:13 2008
@@ -0,0 +1,35 @@
+diff --git basic/source/runtime/step0.cxx basic/source/runtime/step0.cxx
+index 25adf15..cbd2fad 100644
+--- basic/source/runtime/step0.cxx
++++ basic/source/runtime/step0.cxx
+@@ -109,19 +109,24 @@ void SbiRuntime::StepCompare( SbxOperato
+ 	// values ( and type ) set as appropriate
+ 	SbxDataType p1Type = p1->GetType(); 
+ 	SbxDataType p2Type = p2->GetType(); 
++	if ( p1Type == SbxEMPTY )
++	{
++		p1->Broadcast( SBX_HINT_DATAWANTED );
++		p1Type = p1->GetType(); 
++	}
++	if ( p2Type == SbxEMPTY )
++	{
++		p2->Broadcast( SBX_HINT_DATAWANTED );
++		p2Type = p2->GetType(); 
++	}
+ 	if ( p1Type == p2Type )
+ 	{
+-		if ( p1Type == SbxEMPTY )
+-		{
+-			p1->Broadcast( SBX_HINT_DATAWANTED );
+-			p2->Broadcast( SBX_HINT_DATAWANTED );
+-		}
+ 		// if both sides are an object and have default props
+ 		// then we need to use the default props
+ 		// we don't need to worry if only one side ( lhs, rhs ) is an 
+ 		// object ( object side will get coerced to correct type in 
+ 		// Compare )
+-		else if ( p1Type ==  SbxOBJECT )
++		if ( p1Type ==  SbxOBJECT )
+ 		{
+ 			SbxVariable* pDflt = getDefaultProp( p1 );
+ 			if ( pDflt )

Added: trunk/patches/vba/stringnumbercompare.diff
==============================================================================
--- (empty file)
+++ trunk/patches/vba/stringnumbercompare.diff	Wed Sep  3 14:21:13 2008
@@ -0,0 +1,34 @@
+diff --git basic/source/sbx/sbxvalue.cxx basic/source/sbx/sbxvalue.cxx
+index fb57038..dd5f9c1 100644
+--- basic/source/sbx/sbxvalue.cxx
++++ basic/source/sbx/sbxvalue.cxx
+@@ -1572,7 +1572,9 @@ BOOL SbxValue::Compare( SbxOperator eOp,
+ 		else
+ 		{
+ 			aL.eType = aR.eType = SbxDOUBLE;
+-			if( Get( aL ) && rOp.Get( aR ) )
++			bool bGetL = Get( aL );
++			bool bGetR =  rOp.Get( aR );
++			if( bGetL && bGetR )
+ 			  switch( eOp )
+ 			{
+ 				case SbxEQ:
+@@ -1590,6 +1592,18 @@ BOOL SbxValue::Compare( SbxOperator eOp,
+ 				default:
+ 					SetError( SbxERR_NOTIMP );
+ 			}
++			// at least one value was got
++			// if this is VBA then a conversion error for one
++			// side will yield a false result of an equality test
++			else if ( bGetR || bGetL )
++			{
++				if ( bVBAInterop && eOp == SbxEQ  && GetError() == SbxERR_CONVERSION )
++				{
++					ResetError();
++					bRes = FALSE;
++				}
++			}
++
+ 		}
+ 	}
+ 	if( eOld != SbxERR_OK )

Added: trunk/patches/vba/vba-intersect-multi-area.diff
==============================================================================
--- (empty file)
+++ trunk/patches/vba/vba-intersect-multi-area.diff	Wed Sep  3 14:21:13 2008
@@ -0,0 +1,39 @@
+diff --git sc/source/ui/vba/vbarange.cxx sc/source/ui/vba/vbarange.cxx
+index 3b62d7b..c149923 100644
+--- sc/source/ui/vba/vbarange.cxx
++++ sc/source/ui/vba/vbarange.cxx
+@@ -5330,6 +5338,34 @@ uno::Reference< excel::XRange > 
+ ScVbaRange::intersect( const css::uno::Reference< oo::excel::XRange >& xRange ) throw (script::BasicErrorException, uno::RuntimeException)
+ {
+ 	uno::Reference< excel::XRange > xResult;
++	sal_Int32 nLen = m_Areas->getCount();
++	if ( nLen > 1 ) 
++	{
++		ScRangeList aCellRanges;
++		for ( sal_Int32 index = 1; index != nLen; ++index )
++		{
++			uno::Reference< excel::XRange > xAreaRange( getArea( index ), uno::UNO_QUERY_THROW );
++			ScVbaRange* pRange = dynamic_cast< ScVbaRange * >( xAreaRange.get());
++			if ( pRange ) 
++			{
++				uno::Reference< excel::XRange > xResultRange = pRange->intersect( xAreaRange );
++				if ( xResultRange.is() )
++				{
++					ScRange refRange;
++					RangeHelper aRange( xResultRange->getCellRange() );
++					ScUnoConversion::FillScRange( refRange, aRange.getCellRangeAddressable()->getRangeAddress() );
++					aCellRanges.Append( refRange );
++				}	 	
++			}
++		}
++		if ( aCellRanges.First() != aCellRanges.Last() )
++		{
++			uno::Reference< sheet::XSheetCellRangeContainer > xRanges( new ScCellRangesObj( getScDocShell(), aCellRanges ) );
++			xResult = new ScVbaRange( getParent(), mxContext, xRanges );
++		}
++		return xResult;
++	}
++
+ 	try
+ 	{
+ 		uno::Reference< sheet::XCellRangesQuery > xQuery( mxRange, uno::UNO_QUERY_THROW );

Added: trunk/patches/vba/vba-rowheight-fix.diff
==============================================================================
--- (empty file)
+++ trunk/patches/vba/vba-rowheight-fix.diff	Wed Sep  3 14:21:13 2008
@@ -0,0 +1,20 @@
+diff --git sc/source/ui/vba/vbarange.cxx sc/source/ui/vba/vbarange.cxx
+index 3b62d7b..c149923 100644
+--- sc/source/ui/vba/vbarange.cxx
++++ sc/source/ui/vba/vbarange.cxx
+@@ -3636,12 +3642,14 @@ ScVbaRange::getRowHeight() throw (uno::R
+ 	double nHeight = getCalcRowHeight( thisAddress );
+ 	// #TODO probably possible to use the SfxItemSet ( and see if
+ 	//  SFX_ITEM_DONTCARE is set ) to improve performance
+-	if ( mbIsRows ) 
++        // seems not just for Rows but ordinary RowHeights too
++//	if ( mbIsRows ) 
+ 	{
+ 		for ( sal_Int32 nRow = nStartRow ; nRow <= nEndRow; ++nRow )
+ 		{
+ 			thisAddress.StartRow = nRow;
+ 			double nCurHeight = getCalcRowHeight( thisAddress );
++			OSL_TRACE("row %d nHeight %f nCurHeight %f", nRow, nHeight, nCurHeight );
+ 			if ( nHeight != nCurHeight )
+ 				return aNULL();
+ 		}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]