[Libreoffice-commits] .: Branch 'distro/suse/suse-3.6' - sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Oct 30 03:19:17 PDT 2012


 sc/source/filter/excel/xetable.cxx |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

New commits:
commit caf8899d6e3f06332104cdf21cba23daca17d56e
Author: Noel Power <noel.power at novell.com>
Date:   Wed Jul 25 18:23:38 2012 +0100

    hopefully more successful attempt to solve fdo#50304
    
    Change-Id: I86dfff571c14bce97d0851b4093dbc376d8b6ea4

diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx
index e3967f2..d611077 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -2146,14 +2146,26 @@ XclExpDimensions* XclExpRowBuffer::GetDimensions()
 
 XclExpRow& XclExpRowBuffer::GetOrCreateRow( sal_uInt32 nXclRow, bool bRowAlwaysEmpty )
 {
-    RowMap::iterator itr = maRowMap.find(nXclRow);
-    if (itr == maRowMap.end())
+    RowMap::iterator itr = maRowMap.begin();
+    ScDocument& rDoc = GetRoot().GetDoc();
+    SCTAB nScTab = GetRoot().GetCurrScTab();
+    for ( size_t nFrom = maRowMap.size(); nFrom <= nXclRow; ++nFrom )
     {
-        RowRef p(new XclExpRow(GetRoot(), nXclRow, maOutlineBfr, bRowAlwaysEmpty));
-        ::std::pair<RowMap::iterator, bool> r = maRowMap.insert(RowMap::value_type(nXclRow, p));
-        itr = r.first;
+        itr = maRowMap.find(nFrom);
+        if ( itr == maRowMap.end() )
+        {
+            // only create RowMap entries for rows that differ from previous,
+            // or if it is the desired row
+            if ( !nFrom || ( nFrom == nXclRow ) || ( nFrom && ( rDoc.GetRowHeight(nFrom, nScTab, false) != rDoc.GetRowHeight(nFrom-1, nScTab, false) ) ) )
+            {
+                RowRef p(new XclExpRow(GetRoot(), nFrom, maOutlineBfr, bRowAlwaysEmpty));
+                maRowMap.insert(RowMap::value_type(nFrom, p));
+            }
+        }
     }
+    itr = maRowMap.find(nXclRow);
     return *itr->second;
+
 }
 
 // ============================================================================


More information about the Libreoffice-commits mailing list