Kaydet (Commit) e0b16213 authored tarafından Eike Rathke's avatar Eike Rathke Kaydeden (comit) Andras Timar

Resolves: tdf#88402 remember sort "has headers" at anonymous database ranges

Change-Id: I4a126f40589fd401f3a63f74be5e86e3df947ef6
(cherry picked from commit 33255f97)
Reviewed-on: https://gerrit.libreoffice.org/17136Reviewed-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
Tested-by: 's avatarMarkus Mohrhard <markus.mohrhard@googlemail.com>
üst 9cb11afc
...@@ -128,6 +128,10 @@ public: ...@@ -128,6 +128,10 @@ public:
void GetSortParam(ScSortParam& rSortParam) const; void GetSortParam(ScSortParam& rSortParam) const;
void SetSortParam(const ScSortParam& rSortParam); void SetSortParam(const ScSortParam& rSortParam);
/** Remember some more settings of ScSortParam, only to be called at
anonymous DB ranges as it at least overwrites bHasHeader. */
void UpdateFromSortParam( const ScSortParam& rSortParam );
SC_DLLPUBLIC void GetQueryParam(ScQueryParam& rQueryParam) const; SC_DLLPUBLIC void GetQueryParam(ScQueryParam& rQueryParam) const;
SC_DLLPUBLIC void SetQueryParam(const ScQueryParam& rQueryParam); SC_DLLPUBLIC void SetQueryParam(const ScQueryParam& rQueryParam);
SC_DLLPUBLIC bool GetAdvancedQuerySource(ScRange& rSource) const; SC_DLLPUBLIC bool GetAdvancedQuerySource(ScRange& rSource) const;
...@@ -228,6 +232,7 @@ public: ...@@ -228,6 +232,7 @@ public:
ScDBData* getByRange(const ScRange& rRange); ScDBData* getByRange(const ScRange& rRange);
void insert(ScDBData* p); void insert(ScDBData* p);
bool empty() const; bool empty() const;
bool has( const ScDBData* p ) const;
bool operator== (const AnonDBs& r) const; bool operator== (const AnonDBs& r) const;
}; };
......
...@@ -346,6 +346,11 @@ void ScDBData::SetSortParam( const ScSortParam& rSortParam ) ...@@ -346,6 +346,11 @@ void ScDBData::SetSortParam( const ScSortParam& rSortParam )
bByRow = rSortParam.bByRow; bByRow = rSortParam.bByRow;
} }
void ScDBData::UpdateFromSortParam( const ScSortParam& rSortParam )
{
bHasHeader = rSortParam.bHasHeader;
}
void ScDBData::GetQueryParam( ScQueryParam& rQueryParam ) const void ScDBData::GetQueryParam( ScQueryParam& rQueryParam ) const
{ {
rQueryParam = *mpQueryParam; rQueryParam = *mpQueryParam;
...@@ -744,6 +749,17 @@ public: ...@@ -744,6 +749,17 @@ public:
} }
}; };
class FindByPointer : public unary_function<ScDBData, bool>
{
const ScDBData* mpDBData;
public:
FindByPointer(const ScDBData* pDBData) : mpDBData(pDBData) {}
bool operator() (const ScDBData& r) const
{
return &r == mpDBData;
}
};
} }
ScDBCollection::NamedDBs::NamedDBs(ScDBCollection& rParent, ScDocument& rDoc) : ScDBCollection::NamedDBs::NamedDBs(ScDBCollection& rParent, ScDocument& rDoc) :
...@@ -894,6 +910,11 @@ bool ScDBCollection::AnonDBs::empty() const ...@@ -894,6 +910,11 @@ bool ScDBCollection::AnonDBs::empty() const
return maDBs.empty(); return maDBs.empty();
} }
bool ScDBCollection::AnonDBs::has( const ScDBData* p ) const
{
return find_if( maDBs.begin(), maDBs.end(), FindByPointer(p)) != maDBs.end();
}
bool ScDBCollection::AnonDBs::operator== (const AnonDBs& r) const bool ScDBCollection::AnonDBs::operator== (const AnonDBs& r) const
{ {
return maDBs == r.maDBs; return maDBs == r.maDBs;
......
...@@ -574,6 +574,9 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, ...@@ -574,6 +574,9 @@ bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
} }
pDBData->SetSortParam(rSortParam); pDBData->SetSortParam(rSortParam);
// Remember additional settings on anonymous database ranges.
if (pDBData == rDoc.GetAnonymousDBData( nTab) || rDoc.GetDBCollection()->getAnonDBs().has( pDBData))
pDBData->UpdateFromSortParam( rSortParam);
if (nStartRow <= aLocalParam.nRow2) if (nStartRow <= aLocalParam.nRow2)
{ {
......
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