summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/scextopt.hxx7
-rw-r--r--sc/source/ui/view/scextopt.cxx12
-rw-r--r--sc/source/ui/view/viewdata.cxx4
3 files changed, 23 insertions, 0 deletions
diff --git a/sc/inc/scextopt.hxx b/sc/inc/scextopt.hxx
index 22e6ab6fb9a0..80513f2dc421 100644
--- a/sc/inc/scextopt.hxx
+++ b/sc/inc/scextopt.hxx
@@ -96,6 +96,13 @@ public:
/** Returns read access to the settings of a sheet, if extant; otherwise 0. */
const ScExtTabSettings* GetTabSettings( SCTAB nTab ) const;
+
+ /**
+ * @return index of the last sheet that has settings, or -1 if no tab
+ * settings are present.
+ */
+ SCTAB GetLastTab() const;
+
/** Returns read/write access to the settings of a sheet, may create a new struct. */
ScExtTabSettings& GetOrCreateTabSettings( SCTAB nTab );
diff --git a/sc/source/ui/view/scextopt.cxx b/sc/source/ui/view/scextopt.cxx
index 39670cae829c..0a8031dcf521 100644
--- a/sc/source/ui/view/scextopt.cxx
+++ b/sc/source/ui/view/scextopt.cxx
@@ -68,6 +68,8 @@ public:
const ScExtTabSettings* GetTabSettings( SCTAB nTab ) const;
ScExtTabSettings& GetOrCreateTabSettings( SCTAB nTab );
+ SCTAB GetLastTab() const;
+
private:
typedef ::boost::shared_ptr< ScExtTabSettings > ScExtTabSettingsRef;
typedef ::std::map< SCTAB, ScExtTabSettingsRef > ScExtTabSettingsMap;
@@ -109,6 +111,11 @@ ScExtTabSettings& ScExtTabSettingsCont::GetOrCreateTabSettings( SCTAB nTab )
return *rxTabSett;
}
+SCTAB ScExtTabSettingsCont::GetLastTab() const
+{
+ return maMap.empty() ? -1 : maMap.rbegin()->first;
+}
+
void ScExtTabSettingsCont::CopyFromMap( const ScExtTabSettingsMap& rMap )
{
maMap.clear();
@@ -183,6 +190,11 @@ const ScExtTabSettings* ScExtDocOptions::GetTabSettings( SCTAB nTab ) const
return mxImpl->maTabSett.GetTabSettings( nTab );
}
+SCTAB ScExtDocOptions::GetLastTab() const
+{
+ return mxImpl->maTabSett.GetLastTab();
+}
+
ScExtTabSettings& ScExtDocOptions::GetOrCreateTabSettings( SCTAB nTab )
{
return mxImpl->maTabSett.GetOrCreateTabSettings( nTab );
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 2bfc18177151..67ce9aa9d77d 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2468,6 +2468,10 @@ void ScViewData::ReadExtOptions( const ScExtDocOptions& rDocOpt )
pView->SetPendingRelTabBarWidth( rDocSett.mfTabBarWidth );
// sheet settings
+ SCTAB nLastTab = rDocOpt.GetLastTab();
+ if (static_cast<SCTAB>(maTabData.size()) <= nLastTab)
+ maTabData.resize(nLastTab+1);
+
for( SCTAB nTab = 0; nTab < static_cast<SCTAB>(maTabData.size()); ++nTab )
{
if( const ScExtTabSettings* pTabSett = rDocOpt.GetTabSettings( nTab ) )