diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-05-19 23:42:05 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-05-21 13:25:19 -0400 |
commit | 1b243b14e9715b7b7da6359b5b752ee6d8278731 (patch) | |
tree | c6cf493fc59c6e3da70711405457459e758f0cb3 /sc/inc | |
parent | dea4a3b9d7182700abeb4dc756a24a9e8dea8474 (diff) |
cp#1000072: Load external documents when refreshing caches.
Rather than just clearing the existing caches and loading the external
documents on demand as the formula cells gets re-calculated. This has two
advantages: 1) when the loading itself fails, we can keep the existing cache
rather than turning all affected cells to error cells, and 2) this prevents
on-demand loading after the external linkes get refreshed, which can make
scrolling very slow & painful.
Change-Id: Ie8243f6f94c5e477964413ab83f6b4b746fe3220
Diffstat (limited to 'sc/inc')
-rw-r--r-- | sc/inc/externalrefmgr.hxx | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sc/inc/externalrefmgr.hxx b/sc/inc/externalrefmgr.hxx index 00b968d1ff23..1c7fcc1d4adf 100644 --- a/sc/inc/externalrefmgr.hxx +++ b/sc/inc/externalrefmgr.hxx @@ -599,7 +599,7 @@ public: const OUString* getRealTableName(sal_uInt16 nFileId, const OUString& rTabName) const; const OUString* getRealRangeName(sal_uInt16 nFileId, const OUString& rRangeName) const; void clearCache(sal_uInt16 nFileId); - void refreshNames(sal_uInt16 nFileId); + bool refreshSrcDocument(sal_uInt16 nFileId); void breakLink(sal_uInt16 nFileId); void switchSrcFile(sal_uInt16 nFileId, const OUString& rNewFile, const OUString& rNewFilter); @@ -738,6 +738,11 @@ private: ScDocument* getSrcDocument(sal_uInt16 nFileId); SfxObjectShellRef loadSrcDocument(sal_uInt16 nFileId, OUString& rFilter); + /** + * Caller must ensure that the passed shell is not already stored. + */ + ScDocument* cacheNewDocShell( sal_uInt16 nFileId, SrcShell& rSrcShell ); + void maybeLinkExternalFile(sal_uInt16 nFileId); /** |