ooo-build r11486 - in trunk: . patches/src680



Author: kyoshida
Date: Fri Feb  1 06:04:16 2008
New Revision: 11486
URL: http://svn.gnome.org/viewvc/ooo-build?rev=11486&view=rev

Log:
2008-02-01  Kohei Yoshida  <kyoshida novell com>

	* patches/src680/sc-calc-datapilot-drilldown.diff: fixed a crash when
	double-clicking on the bottom row of an empty datapilot table.


Modified:
   trunk/ChangeLog
   trunk/patches/src680/sc-calc-datapilot-drilldown.diff

Modified: trunk/patches/src680/sc-calc-datapilot-drilldown.diff
==============================================================================
--- trunk/patches/src680/sc-calc-datapilot-drilldown.diff	(original)
+++ trunk/patches/src680/sc-calc-datapilot-drilldown.diff	Fri Feb  1 06:04:16 2008
@@ -1,3 +1,5 @@
+? sc/sc.diff
+? sc/sc.vpj
 Index: sc/inc/dapiuno.hxx
 ===================================================================
 RCS file: /cvs/sc/sc/inc/dapiuno.hxx,v
@@ -1870,10 +1872,9 @@
 ===================================================================
 RCS file: /cvs/sc/sc/source/core/data/dpobject.cxx,v
 retrieving revision 1.22
-retrieving revision 1.21.112.6
-diff -u -b -I $Revision.*$ -I $Author.*$ -r1.22 -r1.21.112.6
+diff -u -b -I $Revision.*$ -I $Author.*$ -r1.22 dpobject.cxx
 --- sc/source/core/data/dpobject.cxx	26 Nov 2007 15:19:32 -0000	1.22
-+++ sc/source/core/data/dpobject.cxx	4 Dec 2007 06:06:26 -0000	1.21.112.6
++++ sc/source/core/data/dpobject.cxx	1 Feb 2008 05:52:05 -0000
 @@ -62,18 +62,32 @@
  #include "unonames.hxx"
  
@@ -2067,19 +2068,10 @@
 ===================================================================
 RCS file: /cvs/sc/sc/source/core/data/dpoutput.cxx,v
 retrieving revision 1.16
-retrieving revision 1.15.112.9
-diff -u -b -I $Revision.*$ -I $Author.*$ -r1.16 -r1.15.112.9
+retrieving revision 1.15.112.10
+diff -u -b -I $Revision.*$ -I $Author.*$ -r1.16 -r1.15.112.10
 --- sc/source/core/data/dpoutput.cxx	26 Nov 2007 15:19:49 -0000	1.16
-+++ sc/source/core/data/dpoutput.cxx	5 Dec 2007 00:25:14 -0000	1.15.112.9
-@@ -36,7 +36,7 @@
- // MARKER(update_precomp.py): autogen include statement, do not remove
- #include "precompiled_sc.hxx"
- 
--
-+#include <stdio.h>
- 
- // INCLUDE ---------------------------------------------------------------
- 
++++ sc/source/core/data/dpoutput.cxx	1 Feb 2008 05:28:12 -0000	1.15.112.10
 @@ -48,6 +48,8 @@
  #include <unotools/transliterationwrapper.hxx>
  
@@ -2089,7 +2081,7 @@
  #include "document.hxx"
  #include "patattr.hxx"
  #include "docpool.hxx"
-@@ -60,21 +62,37 @@
+@@ -60,21 +62,38 @@
  #include "stlsheet.hxx"
  #include "collect.hxx"
  #include "scresid.hxx"
@@ -2119,6 +2111,7 @@
 +#include <com/sun/star/sheet/XDataPilotResults.hpp>
 +#include <com/sun/star/sheet/XHierarchiesSupplier.hpp>
 +#include <com/sun/star/sheet/XLevelsSupplier.hpp>
++#include <com/sun/star/beans/XPropertySet.hpp>
 +
 +#include <vector>
  
@@ -2135,7 +2128,7 @@
  
  // -----------------------------------------------------------------------
  
-@@ -702,6 +720,42 @@
+@@ -702,6 +721,42 @@
  	}
  }
  
@@ -2178,7 +2171,7 @@
  void ScDPOutput::Output()
  {
  	long nField;
-@@ -862,12 +916,30 @@
+@@ -862,12 +917,30 @@
  	lcl_SetFrame( pDoc,nTab, nTabStartCol,nTabStartRow, nTabEndCol,nTabEndRow, 40 );
  }
  
@@ -2211,7 +2204,7 @@
  }
  
  BOOL ScDPOutput::HasError()
-@@ -929,13 +1001,10 @@
+@@ -929,13 +1002,10 @@
      }
  }
  
@@ -2227,7 +2220,7 @@
  
  	SCCOL nCol = rPos.Col();
  	SCROW nRow = rPos.Row();
-@@ -947,56 +1016,88 @@
+@@ -947,57 +1017,96 @@
  
  	CalcSizes();
  
@@ -2252,7 +2245,7 @@
 +            {
 +                sal_Int32 nDataFieldCount;
 +                Any any = xPropSet->getPropertyValue(rtl::OUString::createFromAscii("DataFieldCount"));
-+                if (any >>= nDataFieldCount)
++                if ((any >>= nDataFieldCount) && nDataFieldCount > 0)
 +                    aResData.DataFieldIndex = (nRow - nDataStartRow) % nDataFieldCount;
 +            }
 +
@@ -2267,11 +2260,10 @@
 +        }
 +        case DataPilotTablePositionType::COLUMN_HEADER:
  	{
-+            fprintf(stdout, "ScDPOutput::GetPositionData: column header\n");fflush(stdout);
  		long nField = nRow - nMemberStartRow;
  		const uno::Sequence<sheet::MemberResult> rSequence = pColFields[nField].aResult;
  		const sheet::MemberResult* pArray = rSequence.getConstArray();
- 		long nThisColCount = rSequence.getLength();
+-		long nThisColCount = rSequence.getLength();
  
 -		if ( nCol >= nDataStartCol && nCol < nDataStartCol + nThisColCount )
 -		{
@@ -2303,11 +2295,10 @@
 +        }
 +        case DataPilotTablePositionType::ROW_HEADER:
  	{
-+            fprintf(stdout, "ScDPOutput::GetPositionData: row header\n");fflush(stdout);
  		long nField = nCol - nMemberStartCol;
  		const uno::Sequence<sheet::MemberResult> rSequence = pRowFields[nField].aResult;
  		const sheet::MemberResult* pArray = rSequence.getConstArray();
- 		long nThisRowCount = rSequence.getLength();
+-		long nThisRowCount = rSequence.getLength();
  
 -		if ( nRow >= nDataStartRow && nRow < nDataStartRow + nThisRowCount )
 -		{
@@ -2338,9 +2329,21 @@
 -bool ScDPOutput::GetDataFieldPositionData(std::vector<sheet::DataPilotFieldFilter>& rFilters, const ScAddress& rPos)
 +bool ScDPOutput::GetDataResultPositionData(vector<sheet::DataPilotFieldFilter>& rFilters, const ScAddress& rPos)
  {
++    // Check to make sure there is at least one data field.
++    Reference<beans::XPropertySet> xPropSet(xSource, UNO_QUERY);
++    if (!xPropSet.is())
++        return false;
++
++    sal_Int32 nDataFieldCount;
++    Any any = xPropSet->getPropertyValue(rtl::OUString::createFromAscii("DataFieldCount"));
++    if (!(any >>= nDataFieldCount) || nDataFieldCount == 0)
++        // No data field is present in this datapilot table.
++        return false;
++
      SCCOL nCol = rPos.Col();
      SCROW nRow = rPos.Row();
-@@ -1013,8 +1114,6 @@
+     SCTAB nTab = rPos.Tab();
+@@ -1013,8 +1122,6 @@
          return false;
      }
  
@@ -2349,20 +2352,17 @@
      // column fields
      for (SCCOL nColField = 0; nColField < nColFieldCount; ++nColField)
      {
-@@ -1022,10 +1121,10 @@
-         filter.FieldName = pColFields[nColField].aCaption;
- 
+@@ -1024,8 +1131,7 @@
          const uno::Sequence<sheet::MemberResult> rSequence = pColFields[nColField].aResult;
-+        long nThisColCount = rSequence.getLength();
          const sheet::MemberResult* pArray = rSequence.getConstArray();
  
 -        DBG_ASSERT(nDataStartCol + rSequence.getLength() - 1 == nTabEndCol,
 -                    "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
-+        DBG_ASSERT(nDataStartCol + nThisColCount - 1 == nTabEndCol, "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
++        DBG_ASSERT(nDataStartCol + rSequence.getLength() - 1 == nTabEndCol, "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
  
          long nItem = nCol - nDataStartCol;
                  //	get origin of "continue" fields
-@@ -1033,7 +1132,7 @@
+@@ -1033,7 +1139,7 @@
              --nItem;
  
          filter.MatchValue = pArray[nItem].Name;
@@ -2371,20 +2371,17 @@
              rFilters.push_back(filter);
      }
  
-@@ -1044,10 +1143,10 @@
-         filter.FieldName = pRowFields[nRowField].aCaption;
- 
+@@ -1046,8 +1152,7 @@
          const uno::Sequence<sheet::MemberResult> rSequence = pRowFields[nRowField].aResult;
-+        long nThisRowCount = rSequence.getLength();
          const sheet::MemberResult* pArray = rSequence.getConstArray();
  
 -        DBG_ASSERT(nDataStartRow + rSequence.getLength() - 1 == nTabEndRow,
 -                    "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
-+        DBG_ASSERT(nDataStartRow + nThisRowCount - 1 == nTabEndRow, "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
++        DBG_ASSERT(nDataStartRow + rSequence.getLength() - 1 == nTabEndRow, "ScDPOutput::GetDataFieldCellData: error in geometric assumption");
  
          long nItem = nRow - nDataStartRow;
  			//	get origin of "continue" fields
-@@ -1055,7 +1154,7 @@
+@@ -1055,7 +1160,7 @@
              --nItem;
  
          filter.MatchValue = pArray[nItem].Name;
@@ -5057,8 +5054,13 @@
  }
  
  //
---- sc/source/ui/view/gridwin.cxx.orig	2008-01-15 11:54:09.000000000 -0500
-+++ sc/source/ui/view/gridwin.cxx	2008-01-15 12:04:53.000000000 -0500
+Index: sc/source/ui/view/gridwin.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/ui/view/gridwin.cxx,v
+retrieving revision 1.88
+diff -u -b -I $Revision.*$ -I $Author.*$ -r1.88 gridwin.cxx
+--- sc/source/ui/view/gridwin.cxx	12 Dec 2007 13:21:19 -0000	1.88
++++ sc/source/ui/view/gridwin.cxx	1 Feb 2008 05:52:06 -0000
 @@ -93,6 +93,10 @@
  
  #include <com/sun/star/sheet/DataPilotFieldFilter.hpp>
@@ -5079,7 +5081,7 @@
  
  const BYTE SC_NESTEDBUTTON_NONE = 0;
  const BYTE SC_NESTEDBUTTON_DOWN = 1;
-@@ -2046,11 +2052,13 @@
+@@ -2028,11 +2034,13 @@
  		if ( pDPObj && pDPObj->GetSaveData()->GetDrillDown() )
  		{
  			ScAddress aCellPos( nPosX, nPosY, nTab );
@@ -5097,7 +5099,7 @@
  			{
                  USHORT nDummy;
                  if ( pView->HasSelectionForDrillDown( nDummy ) )
-@@ -2072,8 +2080,8 @@
+@@ -2054,8 +2062,8 @@
              {
                  // Check if the data area is double-clicked.
  
@@ -5108,7 +5110,7 @@
                      pViewData->GetView()->ShowDataPilotSourceData( *pDPObj, aFilters );
                  else
                      Sound::Beep();  // nothing to expand/collapse/show
-@@ -3274,24 +3282,24 @@
+@@ -3238,24 +3246,24 @@
              bool bDPSort = false;
              if ( pThisDoc->GetDPAtCursor( nSourceStartX, nSourceStartY, aSourceRange.aStart.Tab() ) == pDPObj )
              {



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