sc/inc/dbdata.hxx | 1 + sc/inc/document.hxx | 2 -- sc/source/core/data/documen3.cxx | 8 -------- sc/source/core/data/table2.cxx | 3 ++- sc/source/core/tool/dbdata.cxx | 17 ++++++++++++++++- 5 files changed, 19 insertions(+), 12 deletions(-)
New commits: commit 0d6e8c35133c10b3b4e0ef69bbca51ac7506b5d2 Author: Kohei Yoshida <kohei.yosh...@suse.com> Date: Mon Jan 9 12:03:48 2012 -0500 fdo#44545: Skip filtered cells during auto-fill. Regression from 3.4.5. diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx index 1aab271..cef02e1 100644 --- a/sc/inc/dbdata.hxx +++ b/sc/inc/dbdata.hxx @@ -213,6 +213,7 @@ public: const_iterator end() const; const ScDBData* findAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, bool bStartOnly) const; const ScDBData* findByRange(const ScRange& rRange) const; + const ScDBData* findByTable(SCTAB nTab) const; ScDBData* getByRange(const ScRange& rRange); void insert(ScDBData* p); void erase(iterator itr); diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 8e41fea..2d232e7 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -492,8 +492,6 @@ public: ScDBData* GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab, bool bStartOnly = false); const ScDBData* GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const; ScDBData* GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2); - const ScDBData* GetFilterDBAtTable(SCTAB nTab) const; - SC_DLLPUBLIC const ScRangeData* GetRangeAtBlock( const ScRange& rBlock, rtl::OUString* pName=NULL ) const; diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index 63d926a..66973de 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -311,14 +311,6 @@ ScDBData* ScDocument::GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nC return NULL; } -const ScDBData* ScDocument::GetFilterDBAtTable(SCTAB nTab) const -{ - if (pDBCollection) - return pDBCollection->GetFilterDBAtTable(nTab); - else - return NULL; -} - ScDPCollection* ScDocument::GetDPCollection() { if (!pDPCollection) diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 2b5fbed..2c40a5c 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -2652,7 +2652,8 @@ void ScTable::ShowRows(SCROW nRow1, SCROW nRow2, bool bShow) bool ScTable::IsDataFiltered() const { bool bAnyQuery = false; - const ScDBData* pDBData = pDocument->GetFilterDBAtTable(nTab); + const ScDBCollection* pDBs = pDocument->GetDBCollection(); + const ScDBData* pDBData = pDBs->GetFilterDBAtTable(nTab); if ( pDBData ) { ScQueryParam aParam; diff --git a/sc/source/core/tool/dbdata.cxx b/sc/source/core/tool/dbdata.cxx index 288fbac..c612d32 100644 --- a/sc/source/core/tool/dbdata.cxx +++ b/sc/source/core/tool/dbdata.cxx @@ -808,6 +808,13 @@ const ScDBData* ScDBCollection::AnonDBs::findByRange(const ScRange& rRange) cons return itr == maDBs.end() ? NULL : &(*itr); } +const ScDBData* ScDBCollection::AnonDBs::findByTable(SCTAB nTab) const +{ + DBsType::const_iterator itr = find_if( + maDBs.begin(), maDBs.end(), FindFilterDBByTable(nTab)); + return itr == maDBs.end() ? NULL : &(*itr); +} + ScDBData* ScDBCollection::AnonDBs::getByRange(const ScRange& rRange) { const ScDBData* pData = findByRange(rRange); @@ -972,7 +979,15 @@ const ScDBData* ScDBCollection::GetFilterDBAtTable(SCTAB nTab) const NamedDBs::DBsType::const_iterator itr = find_if( maNamedDBs.begin(), maNamedDBs.end(), FindFilterDBByTable(nTab)); - return itr == maNamedDBs.end() ? NULL : &(*itr); + const ScDBData* pData = itr == maNamedDBs.end() ? NULL : &(*itr); + if (pData) + return pData; + + pData = pDoc->GetAnonymousDBData(nTab); + if (pData) + return pData; + + return getAnonDBs().findByTable(nTab); } void ScDBCollection::DeleteOnTab( SCTAB nTab ) _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits