Kaydet (Commit) 2d74e6c1 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

update the color scales when moving tabs

Change-Id: Iabeeae6d2c31f983ea04652dce81e448a7623472
üst 3b992e24
......@@ -79,6 +79,7 @@ public:
void SetRange(const ScRangeList& rList);
void DataChanged(const ScRange& rRange);
void UpdateMoveTab(SCTAB nOldTab, SCTAB nNewTab);
typedef ColorScaleEntries::iterator iterator;
typedef ColorScaleEntries::const_iterator const_iterator;
......@@ -103,6 +104,7 @@ public:
void AddFormat( ScColorScaleFormat* pFormat );
void DataChanged(const ScRange& rRange);
void UpdateMoveTab(SCTAB nOldTab, SCTAB nNewTab);
iterator begin();
const_iterator begin() const;
......
......@@ -311,6 +311,38 @@ Color* ScColorScaleFormat::GetColor( const ScAddress& rAddr ) const
return new Color(aColor);
}
void ScColorScaleFormat::UpdateMoveTab(SCTAB nOldTab, SCTAB nNewTab)
{
size_t n = maRanges.size();
SCTAB nMinTab = std::min<SCTAB>(nOldTab, nNewTab);
SCTAB nMaxTab = std::max<SCTAB>(nOldTab, nNewTab);
for(size_t i = 0; i < n; ++i)
{
ScRange* pRange = maRanges[i];
SCTAB nTab = pRange->aStart.Tab();
if(nTab < nMinTab || nTab > nMaxTab)
continue;
if(nTab == nOldTab)
{
pRange->aStart.SetTab(nNewTab);
pRange->aEnd.SetTab(nNewTab);
continue;
}
if(nNewTab < nOldTab)
{
pRange->aStart.IncTab();
pRange->aEnd.IncTab();
}
else
{
pRange->aStart.IncTab(-1);
pRange->aEnd.IncTab(-1);
}
}
}
bool ScColorScaleFormat::CheckEntriesForRel(const ScRange& rRange) const
{
bool bNeedUpdate = false;
......@@ -407,4 +439,12 @@ void ScColorScaleFormatList::DataChanged(const ScRange& rRange)
}
}
void ScColorScaleFormatList::UpdateMoveTab(SCTAB nOldTab, SCTAB nNewTab)
{
for(iterator itr = begin(); itr != end(); ++itr)
{
itr->UpdateMoveTab(nOldTab, nNewTab);
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -753,6 +753,8 @@ bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos, ScProgress* pProgress )
UpdateRefAreaLinks( URM_REORDER, aSourceRange, 0,0,nDz );
if ( pCondFormList )
pCondFormList->UpdateMoveTab( nOldPos, nNewPos );
if ( mpColorScaleList )
mpColorScaleList->UpdateMoveTab( nOldPos, nNewPos );
if ( pValidationList )
pValidationList->UpdateMoveTab( nOldPos, nNewPos );
if ( pUnoBroadcaster )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment