sc/inc/datauno.hxx | 6 +++--- sc/source/core/data/cell.cxx | 3 ++- sc/source/filter/oox/workbookhelper.cxx | 27 +++++++++++++++++++++++---- sc/source/filter/xml/xmlimprt.cxx | 2 -- sc/source/ui/docshell/docsh.cxx | 3 ++- 5 files changed, 30 insertions(+), 11 deletions(-)
New commits: commit 2ba43bc1b85471a1b91658c000f9cc268c799157 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Thu Aug 23 11:47:49 2012 -0400 A little cleanup and avoid exporting all methods from ScDatabaseRangeObj. Change-Id: I4dc7dc689af5d2e9d49584157171202aef873688 diff --git a/sc/inc/datauno.hxx b/sc/inc/datauno.hxx index 75bd893..2ddeb33 100644 --- a/sc/inc/datauno.hxx +++ b/sc/inc/datauno.hxx @@ -494,7 +494,7 @@ public: }; -class SC_DLLPUBLIC ScDatabaseRangeObj : public cppu::WeakImplHelper6< +class ScDatabaseRangeObj : public cppu::WeakImplHelper6< com::sun::star::sheet::XDatabaseRange, com::sun::star::util::XRefreshable, com::sun::star::container::XNamed, @@ -516,9 +516,9 @@ private: void Refreshed_Impl(); public: - ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm); - ScDatabaseRangeObj(ScDocShell* pDocSh, const SCTAB nTab); - virtual ~ScDatabaseRangeObj(); + ScDatabaseRangeObj(ScDocShell* pDocSh, const String& rNm); + SC_DLLPUBLIC ScDatabaseRangeObj(ScDocShell* pDocSh, const SCTAB nTab); + virtual ~ScDatabaseRangeObj(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index 7d6aa77..d039498 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -480,8 +480,7 @@ Reference< XDatabaseRange > WorkbookGlobals::createUnnamedDatabaseRangeObject( c aScRange.aEnd.Col(), aScRange.aEnd.Row() ); rDoc.SetAnonymousDBData( aScRange.aStart.Tab() , pNewDBData ); ScDocShell* pDocSh = static_cast< ScDocShell* >(rDoc.GetDocumentShell()); - ScDatabaseRangeObj* pDBRangeObj = new ScDatabaseRangeObj( pDocSh, aScRange.aStart.Tab() ); - xDatabaseRange.set( pDBRangeObj ); + xDatabaseRange.set(new ScDatabaseRangeObj(pDocSh, aScRange.aStart.Tab())); } catch( Exception& ) { commit ccce242c3a8892f1bc5b649ca43a544cdced28d9 Author: Daniel Bankston <daniel.e.banks...@gmail.com> Date: Tue Aug 7 04:21:54 2012 -0500 Convert xlsx unnamed database range import to direct sc Will evaluate later if further conversion is useful here Change-Id: I6af5296b95075066335783e371d87be15f09f112 diff --git a/sc/inc/datauno.hxx b/sc/inc/datauno.hxx index afe59fd..75bd893 100644 --- a/sc/inc/datauno.hxx +++ b/sc/inc/datauno.hxx @@ -494,7 +494,7 @@ public: }; -class ScDatabaseRangeObj : public cppu::WeakImplHelper6< +class SC_DLLPUBLIC ScDatabaseRangeObj : public cppu::WeakImplHelper6< com::sun::star::sheet::XDatabaseRange, com::sun::star::util::XRefreshable, com::sun::star::container::XNamed, diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index 701b2b8..7d6aa77 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -76,6 +76,10 @@ #include "rangenam.hxx" #include "tokenarray.hxx" #include "tokenuno.hxx" +#include "convuno.hxx" +#include "dbdata.hxx" +#include "datauno.hxx" +#include "globalnames.hxx" #include "formulabuffer.hxx" namespace oox { @@ -464,12 +468,20 @@ Reference< XDatabaseRange > WorkbookGlobals::createUnnamedDatabaseRangeObject( c // create database range and insert it into the Calc document Reference< XDatabaseRange > xDatabaseRange; - PropertySet aDocProps( mxDoc ); - Reference< XUnnamedDatabaseRanges > xDatabaseRanges( aDocProps.getAnyProperty( PROP_UnnamedDatabaseRanges ), UNO_QUERY_THROW ); if( bValidRange ) try { - xDatabaseRanges->setByTable( aDestRange ); - xDatabaseRange.set( xDatabaseRanges->getByTable( aDestRange.Sheet ), UNO_QUERY ); + ScDocument& rDoc = getScDocument(); + if( rDoc.GetTableCount() <= aDestRange.Sheet ) + throw ::com::sun::star::lang::IndexOutOfBoundsException(); + ScRange aScRange; + ScUnoConversion::FillScRange(aScRange, aDestRange); + ScDBData* pNewDBData = new ScDBData( STR_DB_LOCAL_NONAME, aScRange.aStart.Tab(), + aScRange.aStart.Col(), aScRange.aStart.Row(), + aScRange.aEnd.Col(), aScRange.aEnd.Row() ); + rDoc.SetAnonymousDBData( aScRange.aStart.Tab() , pNewDBData ); + ScDocShell* pDocSh = static_cast< ScDocShell* >(rDoc.GetDocumentShell()); + ScDatabaseRangeObj* pDBRangeObj = new ScDatabaseRangeObj( pDocSh, aScRange.aStart.Tab() ); + xDatabaseRange.set( pDBRangeObj ); } catch( Exception& ) { commit 5d906574f2e7a7c7dd3ba166e3b1a58fdba0d5b8 Author: Daniel Bankston <daniel.e.banks...@gmail.com> Date: Tue Jul 31 06:43:06 2012 -0500 Prevent broadcasts to gain xlsx formula import performance boost oox import filter was spending a lot of time in ScFormulaCell::Notify() because of unnecessary broadcasts. Now the oox import filter will use the same approach that the xml import filter uses to prevent this from happening which results in shorter import time. Change-Id: I65e86919f352de0b22916a8d57d3166af0a58984 diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index bf7b955..701b2b8 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -553,6 +553,10 @@ void WorkbookGlobals::initialize( bool bWorkbookFile ) //! TODO: localize progress bar text mxProgressBar.reset( new SegmentProgressBar( mrBaseFilter.getStatusIndicator(), CREATE_OUSTRING( "Loading..." ) ) ); mxFmlaParser.reset( new FormulaParser( *this ) ); + + //prevent unnecessary broadcasts and "half way listeners" as + //is done in ScDocShell::BeforeXMLLoading() for ods + getScDocument().SetInsertingFromOtherDoc(true); } else if( mrBaseFilter.isExportFilter() ) { @@ -604,6 +608,10 @@ void WorkbookGlobals::finalize() aPropSet.setProperty( PROP_IsChangeReadOnlyEnabled, false ); // #111099# open forms in alive mode (has no effect, if no controls in document) aPropSet.setProperty( PROP_ApplyFormDesignMode, false ); + + //stop preventing establishment of listeners as is done in + //ScDocShell::AfterXMLLoading() for ods + getScDocument().SetInsertingFromOtherDoc(false); } } commit a96998cdd131e715746db83cc3b08823e4318100 Author: Daniel Bankston <daniel.e.banks...@gmail.com> Date: Thu Jul 12 08:48:40 2012 -0500 Disable adjust height flag once for whole doc instead for each tab Change-Id: Ib82a72d257772b3dcdf9368c4ee5850a6f411d6e diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index 4f2ff59..90e68ac 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -2809,8 +2809,6 @@ throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::R uno::Reference<document::XActionLockable> xActionLockable(xDoc, uno::UNO_QUERY); if (xActionLockable.is()) xActionLockable->addActionLock(); - - pDoc->EnableAdjustHeight(false); } // XServiceInfo diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx index eb28806..d59206a 100644 --- a/sc/source/ui/docshell/docsh.cxx +++ b/sc/source/ui/docshell/docsh.cxx @@ -443,9 +443,10 @@ sal_Bool ScDocShell::LoadXML( SfxMedium* pLoadMedium, const ::com::sun::star::un else //still need to recalc volatile formula cells DoRecalc(false); + aDocument.EnableAdjustHeight(false); + aDocument.SetXMLFromWrapper( false ); AfterXMLLoading(bRet); - //! row heights... return bRet; } commit bed0447cefb949fc77cfde7543397d96590082ba Author: Daniel Bankston <daniel.e.banks...@gmail.com> Date: Thu Jul 12 08:23:54 2012 -0500 Check for more cases of functions that should always be recalculated Thanks to Eike Rathke for pointing this out. Change-Id: Ie2ce2ebe54cd290a7bf1c55d58790e21833b1105 diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx index 0e34b35..4676cc8 100644 --- a/sc/source/core/data/cell.cxx +++ b/sc/source/core/data/cell.cxx @@ -1101,7 +1101,8 @@ void ScFormulaCell::CompileXML( ScProgress& rProgress ) pDocument->SetHasMacroFunc( true ); //volatile cells must be added here for import - if( pCode->IsRecalcModeAlways() ) + if( pCode->IsRecalcModeAlways() || pCode->IsRecalcModeForced() || + pCode->IsRecalcModeOnLoad() || pCode->IsRecalcModeOnLoadOnce() ) pDocument->PutInFormulaTree(this); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits