sc/inc/scabstdlg.hxx               |    1 
 sc/source/ui/app/msgpool.cxx       |    2 
 sc/source/ui/app/uiitems.cxx       |    6 -
 sc/source/ui/attrdlg/scdlgfact.cxx |    4 
 sc/source/ui/attrdlg/scdlgfact.hxx |    1 
 sc/source/ui/dbgui/filtdlg.cxx     |   93 +++++++------------
 sc/source/ui/dbgui/foptmgr.cxx     |  173 +++++++++++++++++--------------------
 sc/source/ui/dbgui/pfiltdlg.cxx    |   80 ++++++-----------
 sc/source/ui/dbgui/sfiltdlg.cxx    |  100 +++++++++------------
 sc/source/ui/inc/filtdlg.hxx       |   13 +-
 sc/source/ui/inc/foptmgr.hxx       |    6 -
 sc/source/ui/inc/pfiltdlg.hxx      |    8 -
 sc/source/ui/inc/uiitems.hxx       |    3 
 sc/source/ui/view/gridwin2.cxx     |    4 
 sc/source/ui/view/pivotsh.cxx      |    4 
 sc/source/ui/view/tabvwshc.cxx     |   10 --
 16 files changed, 223 insertions(+), 285 deletions(-)

New commits:
commit 0096200a4bdffd052aeb43b40e5d538d20e9c044
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Tue Apr 29 17:29:26 2025 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Tue Apr 29 21:02:16 2025 +0200

    ScQueryItem: no need to store a ScViewData pointer
    
    it can be passed by reference, like the other dialogs do
    
    Change-Id: I79abd717835012af8bcf8d4e135bd7e79f36ac35
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184783
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Tested-by: Jenkins

diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index 8d46f1b3a2dc..b4ffbee6ba5c 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -492,6 +492,7 @@ public:
 
     virtual VclPtr<AbstractScPivotFilterDlg> 
CreateScPivotFilterDlg(weld::Window* pParent,
                                                                     const 
SfxItemSet& rArgSet,
+                                                                    
ScViewData& rViewData,
                                                                     sal_uInt16 
nSourceTab) = 0;
 
     virtual VclPtr<AbstractScDPFunctionDlg> 
CreateScDPFunctionDlg(weld::Widget* pParent,
diff --git a/sc/source/ui/app/msgpool.cxx b/sc/source/ui/app/msgpool.cxx
index 5dd25412bfce..a8ab8230d2a3 100644
--- a/sc/source/ui/app/msgpool.cxx
+++ b/sc/source/ui/app/msgpool.cxx
@@ -33,7 +33,7 @@ static ItemInfoPackage& getItemInfoPackageScMessage()
             { SCITEM_STRING, new SfxStringItem(SCITEM_STRING, OUString() ), 0, 
SFX_ITEMINFOFLAG_NONE },
             { SCITEM_SEARCHDATA, new SvxSearchItem(SCITEM_SEARCHDATA ), 0, 
SFX_ITEMINFOFLAG_NONE },
             { SCITEM_SORTDATA, new ScSortItem(SCITEM_SORTDATA, nullptr, 
nullptr), SID_SORT, SFX_ITEMINFOFLAG_NONE },
-            { SCITEM_QUERYDATA, new ScQueryItem(SCITEM_QUERYDATA, nullptr, 
nullptr ), SID_QUERY, SFX_ITEMINFOFLAG_NONE },
+            { SCITEM_QUERYDATA, new ScQueryItem(SCITEM_QUERYDATA, nullptr ), 
SID_QUERY, SFX_ITEMINFOFLAG_NONE },
             { SCITEM_SUBTDATA, new ScSubTotalItem(SCITEM_SUBTDATA, nullptr, 
nullptr ), SID_SUBTOTALS, SFX_ITEMINFOFLAG_NONE },
             { SCITEM_CONSOLIDATEDATA, new 
ScConsolidateItem(SCITEM_CONSOLIDATEDATA, nullptr ), SID_CONSOLIDATE, 
SFX_ITEMINFOFLAG_NONE },
             { SCITEM_PIVOTDATA, new ScPivotItem(SCITEM_PIVOTDATA, nullptr, 
nullptr, false ), SID_PIVOT_TABLE, SFX_ITEMINFOFLAG_NONE },
diff --git a/sc/source/ui/app/uiitems.cxx b/sc/source/ui/app/uiitems.cxx
index cde899879ae2..03968d863c18 100644
--- a/sc/source/ui/app/uiitems.cxx
+++ b/sc/source/ui/app/uiitems.cxx
@@ -157,10 +157,8 @@ bool ScSortItem::QueryValue( css::uno::Any& rVal, 
sal_uInt8 /* nMemberUd */ ) co
  * Data for the Filter dialog
  */
 ScQueryItem::ScQueryItem( sal_uInt16                nWhichP,
-                          ScViewData*           ptrViewData,
                           const ScQueryParam*   pQueryData ) :
         SfxPoolItem ( nWhichP ),
-        pViewData   ( ptrViewData ),
         bIsAdvanced ( false )
 {
     if (pQueryData)
@@ -172,7 +170,6 @@ ScQueryItem::ScQueryItem( sal_uInt16                nWhichP,
 ScQueryItem::ScQueryItem( const ScQueryItem& rItem ) :
         SfxPoolItem ( rItem ),
         mpQueryData(new ScQueryParam(*rItem.mpQueryData)),
-        pViewData   ( rItem.pViewData ),
         aAdvSource  ( rItem.aAdvSource ),
         bIsAdvanced ( rItem.bIsAdvanced )
 {
@@ -210,8 +207,7 @@ bool ScQueryItem::operator==( const SfxPoolItem& rItem ) 
const
 
     const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(rItem);
 
-    return (   (pViewData    == rQueryItem.pViewData)
-            && (bIsAdvanced  == rQueryItem.bIsAdvanced)
+    return ( (bIsAdvanced  == rQueryItem.bIsAdvanced)
             && (aAdvSource   == rQueryItem.aAdvSource)
             && (*mpQueryData == *rQueryItem.mpQueryData) );
 }
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx 
b/sc/source/ui/attrdlg/scdlgfact.cxx
index 637c9ae58d78..8867a952be19 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -568,9 +568,9 @@ public:
 }
 
 VclPtr<AbstractScPivotFilterDlg> 
ScAbstractDialogFactory_Impl::CreateScPivotFilterDlg(weld::Window* pParent,
-    const SfxItemSet& rArgSet, sal_uInt16 nSourceTab)
+    const SfxItemSet& rArgSet, ScViewData& rViewData, sal_uInt16 nSourceTab)
 {
-    return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(pParent, rArgSet, 
nSourceTab);
+    return VclPtr<AbstractScPivotFilterDlg_Impl>::Create(pParent, rArgSet, 
rViewData, nSourceTab);
 }
 
 namespace
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx 
b/sc/source/ui/attrdlg/scdlgfact.hxx
index adb4293df269..c5083fbbb632 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -104,6 +104,7 @@ public:
     virtual VclPtr<AbstractScNamePasteDlg> CreateScNamePasteDlg(weld::Window * 
pParent, ScDocShell* pShell) override;
 
     virtual VclPtr<AbstractScPivotFilterDlg> 
CreateScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet,
+                                                                    
ScViewData& rViewData,
                                                                     sal_uInt16 
nSourceTab) override;
 
     virtual VclPtr<AbstractScDPFunctionDlg> 
CreateScDPFunctionDlg(weld::Widget* pParent,
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index c3c8f15b2a05..67d8850f8005 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -50,7 +50,7 @@
 ScFilterDlg::EntryList::EntryList() :
     mnHeaderPos(INVALID_HEADER_POS) {}
 
-ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* 
pParent,
+ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* 
pParent, ScViewData& rData,
     const SfxItemSet& rArgSet)
     : ScAnyRefDlgController(pB, pCW, pParent,
         u"modules/scalc/ui/standardfilterdialog.ui"_ustr, 
u"StandardFilterDialog"_ustr)
@@ -63,9 +63,9 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* 
pCW, weld::Window* pPa
     , aStrBackgroundColor(ScResId(SCSTR_FILTER_BACKGROUND_COLOR_COND))
     , nWhichQuery(rArgSet.GetPool()->GetWhichIDFromSlotID(SID_QUERY))
     , theQueryData(static_cast<const 
ScQueryItem&>(rArgSet.Get(nWhichQuery)).GetQueryData())
-    , pViewData(nullptr)
-    , pDoc(nullptr)
-    , nSrcTab(0)
+    , rViewData(rData)
+    , rDoc(rViewData.GetDocument())
+    , nSrcTab(rViewData.GetTabNo())
     , bRefInputMode(false)
     , m_xLbConnect1(m_xBuilder->weld_combo_box(u"connect1"_ustr))
     , m_xLbField1(m_xBuilder->weld_combo_box(u"field1"_ustr))
@@ -116,7 +116,7 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* 
pCW, weld::Window* pPa
     assert(m_xLbCond1->find_text(aStrFontColor) != -1);
     assert(m_xLbCond1->find_text(aStrBackgroundColor) != -1);
 
-    Init( rArgSet );
+    Init();
 
     // Hack: RefInput control
     pTimer.reset( new Timer("ScFilterTimer") );
@@ -161,11 +161,8 @@ VirtualDevice* lcl_getColorImage(const Color &rColor)
 }
 }
 
-void ScFilterDlg::Init( const SfxItemSet& rArgSet )
+void ScFilterDlg::Init()
 {
-    const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
-                                    rArgSet.Get( nWhichQuery ));
-
     m_xBtnClear->connect_clicked   ( LINK( this, ScFilterDlg, BtnClearHdl ) );
     m_xBtnOk->connect_clicked      ( LINK( this, ScFilterDlg, EndDlgHdl ) );
     m_xBtnCancel->connect_clicked  ( LINK( this, ScFilterDlg, EndDlgHdl ) );
@@ -206,10 +203,6 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
     m_xBtnRemove3->connect_clicked( LINK( this, ScFilterDlg, BtnRemoveHdl ) );
     m_xBtnRemove4->connect_clicked( LINK( this, ScFilterDlg, BtnRemoveHdl ) );
 
-    pViewData   = rQueryItem.GetViewData();
-    pDoc        = pViewData ? &pViewData->GetDocument() : nullptr;
-    nSrcTab     = pViewData ? pViewData->GetTabNo() : static_cast<SCTAB>(0);
-
     // for easier access:
     maFieldLbArr.reserve(QUERY_ENTRY_COUNT);
     maFieldLbArr.push_back(m_xLbField1.get());
@@ -244,7 +237,7 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
 
     // Option initialization:
     pOptionsMgr.reset( new ScFilterOptionsMgr(
-                            pViewData,
+                            rViewData,
                             theQueryData,
                             m_xBtnCase.get(),
                             m_xBtnRegExp.get(),
@@ -302,7 +295,7 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
         }
         else if ( i == 0 )
         {
-            nFieldSelPos = pViewData ? GetFieldSelPos(pViewData->GetCurX()) : 
0;
+            nFieldSelPos = GetFieldSelPos(rViewData.GetCurX());
             rEntry.nField = nFieldSelPos ? (theQueryData.nCol1 +
                 static_cast<SCCOL>(nFieldSelPos) - 1) : static_cast<SCCOL>(0);
             rEntry.bDoQuery=true;
@@ -400,14 +393,13 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
     m_xEdVal3->set_entry_width_chars(10);
     m_xEdVal4->set_entry_width_chars(10);
 
-    if (pDoc != nullptr && pDoc->GetChangeTrack() != nullptr)
+    if (rDoc.GetChangeTrack() != nullptr)
         m_xBtnCopyResult->set_sensitive(false);
 }
 
 void ScFilterDlg::Close()
 {
-    if (pViewData)
-        pViewData->GetDocShell()->CancelAutoDBRange();
+    rViewData.GetDocShell()->CancelAutoDBRange();
 
     DoClose( ScFilterDlgWrapper::GetChildWindowId() );
 }
@@ -455,27 +447,24 @@ void ScFilterDlg::FillFieldLists()
     m_xLbField3->append_text( aStrNone );
     m_xLbField4->append_text( aStrNone );
 
-    if ( pDoc )
+    OUString aFieldName;
+    SCTAB   nTab        = nSrcTab;
+    SCCOL   nFirstCol   = theQueryData.nCol1;
+    SCROW   nFirstRow   = theQueryData.nRow1;
+    SCCOL   nMaxCol     = theQueryData.nCol2;
+    SCCOL   col = 0;
+
+    for ( col=nFirstCol; col<=nMaxCol; col++ )
     {
-        OUString aFieldName;
-        SCTAB   nTab        = nSrcTab;
-        SCCOL   nFirstCol   = theQueryData.nCol1;
-        SCROW   nFirstRow   = theQueryData.nRow1;
-        SCCOL   nMaxCol     = theQueryData.nCol2;
-        SCCOL   col = 0;
-
-        for ( col=nFirstCol; col<=nMaxCol; col++ )
+        aFieldName = rDoc.GetString(col, nFirstRow, nTab);
+        if (!m_xBtnHeader->get_active() || aFieldName.isEmpty())
         {
-            aFieldName = pDoc->GetString(col, nFirstRow, nTab);
-            if (!m_xBtnHeader->get_active() || aFieldName.isEmpty())
-            {
-                aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", 
ScColToAlpha( col ));
-            }
-            m_xLbField1->append_text( aFieldName );
-            m_xLbField2->append_text( aFieldName );
-            m_xLbField3->append_text( aFieldName );
-            m_xLbField4->append_text( aFieldName );
+            aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", 
ScColToAlpha( col ));
         }
+        m_xLbField1->append_text( aFieldName );
+        m_xLbField2->append_text( aFieldName );
+        m_xLbField3->append_text( aFieldName );
+        m_xLbField4->append_text( aFieldName );
     }
 
     m_xLbField4->thaw();
@@ -488,7 +477,7 @@ void ScFilterDlg::UpdateValueList( size_t nList )
 {
     bool bCaseSens = m_xBtnCase->get_active();
 
-    if (pDoc && nList > 0 && nList <= QUERY_ENTRY_COUNT)
+    if (nList > 0 && nList <= QUERY_ENTRY_COUNT)
     {
         weld::ComboBox* pValList = maValueEdArr[nList-1];
         const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->get_active();
@@ -522,7 +511,7 @@ void ScFilterDlg::UpdateValueList( size_t nList )
                     return;
 
                 pList = r.first->second.get();
-                pDoc->GetFilterEntriesArea(
+                rDoc.GetFilterEntriesArea(
                     nColumn, nFirstRow+1, nLastRow,
                     nTab, bCaseSens, pList->maFilterEntries);
                 maHasDates[nOffset+nList-1] = 
pList->maFilterEntries.mbHasDates;
@@ -532,7 +521,7 @@ void ScFilterDlg::UpdateValueList( size_t nList )
 
                 pList->mnHeaderPos = INVALID_HEADER_POS;
                 ScFilterEntries aHdrColl;
-                pDoc->GetFilterEntriesArea(
+                rDoc.GetFilterEntriesArea(
                     nColumn, nFirstRow, nFirstRow, nTab, true, aHdrColl );
                 if (!aHdrColl.empty())
                 {
@@ -574,9 +563,6 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList )
 {
     //! GetText / SetText ??
 
-    if (!pDoc)
-        return;
-
     if (nList == 0 || nList > QUERY_ENTRY_COUNT)
         return;
 
@@ -630,7 +616,7 @@ void ScFilterDlg::ClearValueList( size_t nList )
 
 void ScFilterDlg::UpdateColorList(size_t nList)
 {
-    if (!pDoc || nList <= 0 || nList > QUERY_ENTRY_COUNT)
+    if (nList <= 0 || nList > QUERY_ENTRY_COUNT)
         return;
 
     size_t nPos = nList - 1;
@@ -698,7 +684,7 @@ ScQueryItem* ScFilterDlg::GetOutputItem()
     if ( m_xBtnCopyResult->get_active() )
     {
         ScRefFlags nResult = theCopyPos.Parse(
-            m_xEdCopyArea->GetText(), *pDoc, pDoc->GetAddressConvention());
+            m_xEdCopyArea->GetText(), rDoc, rDoc.GetAddressConvention());
         bCopyPosOk = (nResult & ScRefFlags::VALID) == ScRefFlags::VALID;
     }
 
@@ -726,7 +712,7 @@ ScQueryItem* ScFilterDlg::GetOutputItem()
 
     // only set the three - reset everything else
 
-    pOutItem.reset( new ScQueryItem( nWhichQuery, pViewData, &theParam ) );
+    pOutItem.reset( new ScQueryItem( nWhichQuery, &theParam ) );
 
     return pOutItem.get();
 }
@@ -1301,11 +1287,11 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, weld::ComboBox&, 
rEd, void )
     }
     else
     {
-        rItem.maString = pDoc->GetSharedStringPool().intern(aStrVal);
+        rItem.maString = rDoc.GetSharedStringPool().intern(aStrVal);
         rItem.mfVal = 0.0;
 
         sal_uInt32 nIndex = 0;
-        bool bNumber = pDoc->GetFormatTable()->IsNumberFormat(
+        bool bNumber = rDoc.GetFormatTable()->IsNumberFormat(
             rItem.maString.getString(), nIndex, rItem.mfVal);
         rItem.meType = bNumber ? ScQueryEntry::ByValue : 
ScQueryEntry::ByString;
     }
@@ -1539,20 +1525,15 @@ void ScFilterDlg::SetValString( const OUString& 
rQueryStr, const ScQueryEntry::I
 {
     if (rQueryStr.isEmpty())
     {
-        pDoc = pViewData ? &pViewData->GetDocument() : nullptr;
         if (rItem.meType == ScQueryEntry::ByValue)
         {
-            if (pDoc)
-                rValStr = 
pDoc->GetFormatTable()->GetInputLineString(rItem.mfVal, 0);
+            rValStr = rDoc.GetFormatTable()->GetInputLineString(rItem.mfVal, 
0);
         }
         else if (rItem.meType == ScQueryEntry::ByDate)
         {
-            if (pDoc)
-            {
-                SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
-                rValStr = pFormatter->GetInputLineString(rItem.mfVal,
-                                               pFormatter->GetStandardFormat( 
SvNumFormatType::DATE));
-            }
+            SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
+            rValStr = pFormatter->GetInputLineString(rItem.mfVal,
+                                           pFormatter->GetStandardFormat( 
SvNumFormatType::DATE));
         }
         else
         {
diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx
index decaa622ba63..915c505bbd51 100644
--- a/sc/source/ui/dbgui/foptmgr.cxx
+++ b/sc/source/ui/dbgui/foptmgr.cxx
@@ -32,7 +32,7 @@
 // ScFilterOptionsMgr (.ui's option helper)
 
 ScFilterOptionsMgr::ScFilterOptionsMgr(
-                                ScViewData*         ptrViewData,
+                                ScViewData&         rData,
                                 const ScQueryParam& refQueryData,
                                 weld::CheckButton* refBtnCase,
                                 weld::CheckButton* refBtnRegExp,
@@ -47,8 +47,8 @@ ScFilterOptionsMgr::ScFilterOptionsMgr(
                                 weld::Label* refFtDbArea,
                                 const OUString&     refStrUndefined )
 
-    :   pViewData       ( ptrViewData ),
-        pDoc            ( ptrViewData ? &ptrViewData->GetDocument() : nullptr 
),
+    :   rViewData       ( rData ),
+        rDoc            ( rViewData.GetDocument() ),
         pBtnCase        ( refBtnCase ),
         pBtnRegExp      ( refBtnRegExp ),
         pBtnHeader      ( refBtnHeader ),
@@ -69,8 +69,6 @@ ScFilterOptionsMgr::ScFilterOptionsMgr(
 void ScFilterOptionsMgr::Init()
 {
 //moggi:TODO
-    OSL_ENSURE( pViewData && pDoc, "Init failed :-/" );
-
     pLbCopyArea->connect_changed( LINK( this, ScFilterOptionsMgr, LbAreaSelHdl 
) );
     pEdCopyArea->SetModifyHdl  ( LINK( this, ScFilterOptionsMgr, 
EdAreaModifyHdl ) );
     pBtnCopyResult->connect_toggled( LINK( this, ScFilterOptionsMgr, 
BtnCopyResultHdl ) );
@@ -80,104 +78,99 @@ void ScFilterOptionsMgr::Init()
     pBtnRegExp->set_active( rQueryData.eSearchType == 
utl::SearchParam::SearchType::Regexp );
     pBtnUnique->set_active( !rQueryData.bDuplicate );
 
-    if ( pViewData && pDoc )
+    OUString theAreaStr;
+    ScRange         theCurArea ( ScAddress( rQueryData.nCol1,
+                                            rQueryData.nRow1,
+                                            rViewData.GetTabNo() ),
+                                 ScAddress( rQueryData.nCol2,
+                                            rQueryData.nRow2,
+                                            rViewData.GetTabNo() ) );
+    ScDBCollection* pDBColl     = rDoc.GetDBCollection();
+    OUString theDbArea;
+    OUString   theDbName(STR_DB_LOCAL_NONAME);
+    const formula::FormulaGrammar::AddressConvention eConv = 
rDoc.GetAddressConvention();
+
+    theAreaStr = theCurArea.Format(rDoc, ScRefFlags::RANGE_ABS_3D, eConv);
+
+    // fill the target area list
+
+    pLbCopyArea->clear();
+    pLbCopyArea->append_text(rStrUndefined);
+
+    ScAreaNameIterator aIter( rDoc );
+    OUString aName;
+    ScRange aRange;
+    while ( aIter.Next( aName, aRange ) )
     {
-        OUString theAreaStr;
-        ScRange         theCurArea ( ScAddress( rQueryData.nCol1,
-                                                rQueryData.nRow1,
-                                                pViewData->GetTabNo() ),
-                                     ScAddress( rQueryData.nCol2,
-                                                rQueryData.nRow2,
-                                                pViewData->GetTabNo() ) );
-        ScDBCollection* pDBColl     = pDoc->GetDBCollection();
-        OUString theDbArea;
-        OUString   theDbName(STR_DB_LOCAL_NONAME);
-        const formula::FormulaGrammar::AddressConvention eConv = 
pDoc->GetAddressConvention();
-
-        theAreaStr = theCurArea.Format(*pDoc, ScRefFlags::RANGE_ABS_3D, eConv);
-
-        // fill the target area list
-
-        pLbCopyArea->clear();
-        pLbCopyArea->append_text(rStrUndefined);
-
-        ScAreaNameIterator aIter( *pDoc );
-        OUString aName;
-        ScRange aRange;
-        while ( aIter.Next( aName, aRange ) )
-        {
-            OUString aRefStr(aRange.aStart.Format(ScRefFlags::ADDR_ABS_3D, 
pDoc, eConv));
-            pLbCopyArea->append(aRefStr, aName);
-        }
+        OUString aRefStr(aRange.aStart.Format(ScRefFlags::ADDR_ABS_3D, &rDoc, 
eConv));
+        pLbCopyArea->append(aRefStr, aName);
+    }
 
-        pBtnDestPers->set_active(true);         // always on when called
-        pLbCopyArea->set_active( 0 );
-        pEdCopyArea->SetText( OUString() );
+    pBtnDestPers->set_active(true);         // always on when called
+    pLbCopyArea->set_active( 0 );
+    pEdCopyArea->SetText( OUString() );
 
-        /*
-         * Check whether the transferred area is a database area:
-         */
+    /*
+     * Check whether the transferred area is a database area:
+     */
 
-        theDbArea = theAreaStr;
+    theDbArea = theAreaStr;
 
-        if ( pDBColl )
-        {
-            ScAddress&  rStart  = theCurArea.aStart;
-            ScAddress&  rEnd    = theCurArea.aEnd;
-            const ScDBData* pDBData = pDBColl->GetDBAtArea(
-                rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col(), 
rEnd.Row());
+    if ( pDBColl )
+    {
+        ScAddress&  rStart  = theCurArea.aStart;
+        ScAddress&  rEnd    = theCurArea.aEnd;
+        const ScDBData* pDBData = pDBColl->GetDBAtArea(
+            rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row());
 
-            if ( pDBData )
-            {
-                pBtnHeader->set_active( pDBData->HasHeader() );
-                theDbName = pDBData->GetName();
+        if ( pDBData )
+        {
+            pBtnHeader->set_active( pDBData->HasHeader() );
+            theDbName = pDBData->GetName();
 
-                pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME);
-            }
+            pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME);
         }
+    }
 
-        if ( theDbName != STR_DB_LOCAL_NONAME )
-        {
-            theDbArea += " (" + theDbName + ")";
+    if ( theDbName != STR_DB_LOCAL_NONAME )
+    {
+        theDbArea += " (" + theDbName + ")";
 
-            pFtDbArea->set_label( theDbArea );
-        }
-        else
-        {
-            pFtDbAreaLabel->set_label( OUString() );
-            pFtDbArea->set_label( OUString() );
-        }
+        pFtDbArea->set_label( theDbArea );
+    }
+    else
+    {
+        pFtDbAreaLabel->set_label( OUString() );
+        pFtDbArea->set_label( OUString() );
+    }
 
-        // position to copy to:
+    // position to copy to:
 
-        if ( !rQueryData.bInplace )
-        {
-            OUString aString =
-                ScAddress( rQueryData.nDestCol,
-                           rQueryData.nDestRow,
-                           rQueryData.nDestTab
-                         ).Format(ScRefFlags::ADDR_ABS_3D, pDoc, eConv);
-
-            pBtnCopyResult->set_active(true);
-            pEdCopyArea->SetText( aString );
-            EdAreaModifyHdl( *pEdCopyArea );
-            pLbCopyArea->set_sensitive(true);
-            pEdCopyArea->GetWidget()->set_sensitive(true);
-            pRbCopyArea->GetWidget()->set_sensitive(true);
-            pBtnDestPers->set_sensitive(true);
-        }
-        else
-        {
-            pBtnCopyResult->set_active( false );
-            pEdCopyArea->SetText( OUString() );
-            pLbCopyArea->set_sensitive(false);
-            pEdCopyArea->GetWidget()->set_sensitive(false);
-            pRbCopyArea->GetWidget()->set_sensitive(false);
-            pBtnDestPers->set_sensitive(false);
-        }
+    if ( !rQueryData.bInplace )
+    {
+        OUString aString =
+            ScAddress( rQueryData.nDestCol,
+                       rQueryData.nDestRow,
+                       rQueryData.nDestTab
+                     ).Format(ScRefFlags::ADDR_ABS_3D, &rDoc, eConv);
+
+        pBtnCopyResult->set_active(true);
+        pEdCopyArea->SetText( aString );
+        EdAreaModifyHdl( *pEdCopyArea );
+        pLbCopyArea->set_sensitive(true);
+        pEdCopyArea->GetWidget()->set_sensitive(true);
+        pRbCopyArea->GetWidget()->set_sensitive(true);
+        pBtnDestPers->set_sensitive(true);
     }
     else
+    {
+        pBtnCopyResult->set_active( false );
         pEdCopyArea->SetText( OUString() );
+        pLbCopyArea->set_sensitive(false);
+        pEdCopyArea->GetWidget()->set_sensitive(false);
+        pRbCopyArea->GetWidget()->set_sensitive(false);
+        pBtnDestPers->set_sensitive(false);
+    }
 }
 
 bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const
@@ -188,7 +181,7 @@ bool ScFilterOptionsMgr::VerifyPosStr( const OUString& 
rPosStr ) const
     if ( -1 != nColonPos )
         aPosStr = aPosStr.copy( 0, nColonPos );
 
-    ScRefFlags nResult = ScAddress().Parse( aPosStr, *pDoc, 
pDoc->GetAddressConvention() );
+    ScRefFlags nResult = ScAddress().Parse( aPosStr, rDoc, 
rDoc.GetAddressConvention() );
 
     return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID;
 }
@@ -215,7 +208,7 @@ IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, 
formula::RefEdit&, rEd, void )
         return;
 
     OUString  theCurPosStr = rEd.GetText();
-    ScRefFlags  nResult = ScAddress().Parse( theCurPosStr, *pDoc, 
pDoc->GetAddressConvention() );
+    ScRefFlags  nResult = ScAddress().Parse( theCurPosStr, rDoc, 
rDoc.GetAddressConvention() );
 
     if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID)
     {
diff --git a/sc/source/ui/dbgui/pfiltdlg.cxx b/sc/source/ui/dbgui/pfiltdlg.cxx
index 47a2c729d262..2b94f895b297 100644
--- a/sc/source/ui/dbgui/pfiltdlg.cxx
+++ b/sc/source/ui/dbgui/pfiltdlg.cxx
@@ -36,7 +36,7 @@
 #include <svl/sharedstringpool.hxx>
 #include <osl/diagnose.h>
 
-ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& 
rArgSet,
+ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& 
rArgSet, ScViewData& rData,
                                    SCTAB nSourceTab )
     : GenericDialogController(pParent, 
u"modules/scalc/ui/pivotfilterdialog.ui"_ustr, u"PivotFilterDialog"_ustr)
     , aStrNone(ScResId(SCSTR_NONE))
@@ -45,8 +45,8 @@ ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, 
const SfxItemSet& rArg
     , aStrColumn(ScResId(SCSTR_COLUMN_LETTER))
     , nWhichQuery(rArgSet.GetPool()->GetWhichIDFromSlotID(SID_QUERY))
     , theQueryData(static_cast<const 
ScQueryItem&>(rArgSet.Get(nWhichQuery)).GetQueryData())
-    , pViewData(nullptr)
-    , pDoc(nullptr)
+    , rViewData(rData)
+    , rDoc(rViewData.GetDocument())
     , nSrcTab(nSourceTab)     // is not in QueryParam
     , m_xLbField1(m_xBuilder->weld_combo_box(u"field1"_ustr))
     , m_xLbCond1(m_xBuilder->weld_combo_box(u"cond1"_ustr))
@@ -64,18 +64,15 @@ ScPivotFilterDlg::ScPivotFilterDlg(weld::Window* pParent, 
const SfxItemSet& rArg
     , m_xBtnUnique(m_xBuilder->weld_check_button(u"unique"_ustr))
     , m_xFtDbArea(m_xBuilder->weld_label(u"dbarea"_ustr))
 {
-    Init( rArgSet );
+    Init();
 }
 
 ScPivotFilterDlg::~ScPivotFilterDlg()
 {
 }
 
-void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
+void ScPivotFilterDlg::Init()
 {
-    const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
-                                    rArgSet.Get( nWhichQuery ));
-
     m_xBtnCase->connect_toggled( LINK( this, ScPivotFilterDlg, CheckBoxHdl ) );
 
     m_xLbField1->connect_changed  ( LINK( this, ScPivotFilterDlg, LbSelectHdl 
) );
@@ -88,9 +85,6 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
     m_xBtnRegExp->set_active( theQueryData.eSearchType == 
utl::SearchParam::SearchType::Regexp );
     m_xBtnUnique->set_active( !theQueryData.bDuplicate );
 
-    pViewData   = rQueryItem.GetViewData();
-    pDoc        = pViewData ? &pViewData->GetDocument() : nullptr;
-
     // for easier access:
     aFieldLbArr  [0] = m_xLbField1.get();
     aFieldLbArr  [1] = m_xLbField2.get();
@@ -102,38 +96,31 @@ void ScPivotFilterDlg::Init( const SfxItemSet& rArgSet )
     aCondLbArr   [1] = m_xLbCond2.get();
     aCondLbArr   [2] = m_xLbCond3.get();
 
-    if ( pViewData && pDoc )
-    {
-        ScRange         theCurArea ( ScAddress( theQueryData.nCol1,
-                                                theQueryData.nRow1,
-                                                nSrcTab ),
-                                     ScAddress( theQueryData.nCol2,
-                                                theQueryData.nRow2,
-                                                nSrcTab ) );
-        ScDBCollection* pDBColl     = pDoc->GetDBCollection();
-        OUString theDbName = STR_DB_LOCAL_NONAME;
-
-         // Check if the passed range is a database range
-
-        if ( pDBColl )
-        {
-            ScAddress&  rStart  = theCurArea.aStart;
-            ScAddress&  rEnd    = theCurArea.aEnd;
-            ScDBData*   pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
-                                                        rStart.Col(), 
rStart.Row(),
-                                                        rEnd.Col(),   
rEnd.Row() );
-            if ( pDBData )
-                theDbName = pDBData->GetName();
-        }
+    ScRange         theCurArea ( ScAddress( theQueryData.nCol1,
+                                            theQueryData.nRow1,
+                                            nSrcTab ),
+                                 ScAddress( theQueryData.nCol2,
+                                            theQueryData.nRow2,
+                                            nSrcTab ) );
+    ScDBCollection* pDBColl     = rDoc.GetDBCollection();
+    OUString theDbName = STR_DB_LOCAL_NONAME;
 
-        OUString sLabel = " (" + theDbName + ")";
-        m_xFtDbArea->set_label(sLabel);
-    }
-    else
+     // Check if the passed range is a database range
+
+    if ( pDBColl )
     {
-        m_xFtDbArea->set_label(OUString());
+        ScAddress&  rStart  = theCurArea.aStart;
+        ScAddress&  rEnd    = theCurArea.aEnd;
+        ScDBData*   pDBData = pDBColl->GetDBAtArea( rStart.Tab(),
+                                                    rStart.Col(), rStart.Row(),
+                                                    rEnd.Col(),   rEnd.Row() );
+        if ( pDBData )
+            theDbName = pDBData->GetName();
     }
 
+    OUString sLabel = " (" + theDbName + ")";
+    m_xFtDbArea->set_label(sLabel);
+
     // Read the field lists and select the entries:
 
     FillFieldLists();
@@ -219,9 +206,6 @@ void ScPivotFilterDlg::FillFieldLists()
     m_xLbField2->append_text(aStrNone);
     m_xLbField3->append_text(aStrNone);
 
-    if ( !pDoc )
-        return;
-
     OUString  aFieldName;
     SCTAB   nTab        = nSrcTab;
     SCCOL   nFirstCol   = theQueryData.nCol1;
@@ -231,7 +215,7 @@ void ScPivotFilterDlg::FillFieldLists()
 
     for ( col=nFirstCol; col<=nMaxCol; col++ )
     {
-        aFieldName = pDoc->GetString(col, nFirstRow, nTab);
+        aFieldName = rDoc.GetString(col, nFirstRow, nTab);
         if ( aFieldName.isEmpty() )
         {
             aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, u"%1", 
ScColToAlpha( col ));
@@ -244,7 +228,7 @@ void ScPivotFilterDlg::FillFieldLists()
 
 void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList )
 {
-    if ( !(pDoc && nList>0 && nList<=3) )
+    if ( !(nList>0 && nList<=3) )
         return;
 
     weld::ComboBox* pValList        = aValueEdArr[nList-1];
@@ -255,7 +239,7 @@ void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList )
     pValList->append_text(aStrNotEmpty);
     pValList->append_text(aStrEmpty);
 
-    if ( pDoc && nFieldSelPos )
+    if ( nFieldSelPos )
     {
         SCCOL nColumn = theQueryData.nCol1 + static_cast<SCCOL>(nFieldSelPos) 
- 1;
         if (!m_pEntryLists[nColumn])
@@ -268,7 +252,7 @@ void ScPivotFilterDlg::UpdateValueList( sal_uInt16 nList )
             nFirstRow++;
             bool bCaseSens = m_xBtnCase->get_active();
             m_pEntryLists[nColumn].reset( new ScFilterEntries);
-            pDoc->GetFilterEntriesArea(
+            rDoc.GetFilterEntriesArea(
                 nColumn, nFirstRow, nLastRow, nTab, bCaseSens, 
*m_pEntryLists[nColumn]);
         }
 
@@ -307,7 +291,7 @@ const ScQueryItem& ScPivotFilterDlg::GetOutputItem()
     sal_Int32          nConnect1 = m_xLbConnect1->get_active();
     sal_Int32          nConnect2 = m_xLbConnect2->get_active();
 
-    svl::SharedStringPool& rPool = 
pViewData->GetDocument().GetSharedStringPool();
+    svl::SharedStringPool& rPool = 
rViewData.GetDocument().GetSharedStringPool();
 
     for ( SCSIZE i=0; i<3; i++ )
     {
@@ -368,7 +352,7 @@ const ScQueryItem& ScPivotFilterDlg::GetOutputItem()
     theParam.bCaseSens      = m_xBtnCase->get_active();
     theParam.eSearchType    = m_xBtnRegExp->get_active() ? 
utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal;
 
-    pOutItem.reset( new ScQueryItem( nWhichQuery, pViewData, &theParam ) );
+    pOutItem.reset( new ScQueryItem( nWhichQuery, &theParam ) );
 
     return *pOutItem;
 }
diff --git a/sc/source/ui/dbgui/sfiltdlg.cxx b/sc/source/ui/dbgui/sfiltdlg.cxx
index e0527121ce89..f2b1225e38e8 100644
--- a/sc/source/ui/dbgui/sfiltdlg.cxx
+++ b/sc/source/ui/dbgui/sfiltdlg.cxx
@@ -51,15 +51,15 @@ namespace
 
 
 ScSpecialFilterDlg::ScSpecialFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, 
weld::Window* pParent,
-                                        const SfxItemSet&   rArgSet )
+                                        ScViewData& rData, const SfxItemSet&   
rArgSet )
 
     : ScAnyRefDlgController(pB, pCW, pParent, 
u"modules/scalc/ui/advancedfilterdialog.ui"_ustr, u"AdvancedFilterDialog"_ustr)
     , aStrUndefined   ( ScResId(SCSTR_UNDEFINED) )
     , nWhichQuery     ( rArgSet.GetPool()->GetWhichIDFromSlotID( SID_QUERY ) )
     , theQueryData    ( static_cast<const ScQueryItem&>(
                            rArgSet.Get( nWhichQuery )).GetQueryData() )
-    , pViewData(nullptr)
-    , pDoc(nullptr)
+    , rViewData(rData)
+    , rDoc(rViewData.GetDocument())
     , bRefInputMode(false)
     , m_pRefInputEdit(nullptr)
     , m_xLbFilterArea(m_xBuilder->weld_combo_box(u"lbfilterarea"_ustr))
@@ -112,44 +112,38 @@ ScSpecialFilterDlg::~ScSpecialFilterDlg()
 
 void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet )
 {
-    const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
-                                    rArgSet.Get( nWhichQuery ));
-
     m_xBtnOk->connect_clicked( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) );
     m_xBtnCancel->connect_clicked( LINK( this, ScSpecialFilterDlg, EndDlgHdl ) 
);
     m_xLbFilterArea->connect_changed( LINK( this, ScSpecialFilterDlg, 
FilterAreaSelHdl ) );
     m_xEdFilterArea->SetModifyHdl  ( LINK( this, ScSpecialFilterDlg, 
FilterAreaModHdl ) );
 
-    pViewData   = rQueryItem.GetViewData();
-    pDoc        = pViewData ? &pViewData->GetDocument() : nullptr;
-
     m_xEdFilterArea->SetText( OUString() );      // may be overwritten below
 
-    if ( pViewData && pDoc )
-    {
-        if(pDoc->GetChangeTrack()!=nullptr) 
m_xBtnCopyResult->set_sensitive(false);
+    if(rDoc.GetChangeTrack()!=nullptr) m_xBtnCopyResult->set_sensitive(false);
 
-        ScRangeName* pRangeNames = pDoc->GetRangeName();
-        m_xLbFilterArea->clear();
-        m_xLbFilterArea->append_text(aStrUndefined);
+    ScRangeName* pRangeNames = rDoc.GetRangeName();
+    m_xLbFilterArea->clear();
+    m_xLbFilterArea->append_text(aStrUndefined);
 
-        for (const auto& rEntry : *pRangeNames)
-        {
-            if (!rEntry.second->HasType(ScRangeData::Type::Criteria))
-                continue;
+    for (const auto& rEntry : *pRangeNames)
+    {
+        if (!rEntry.second->HasType(ScRangeData::Type::Criteria))
+            continue;
 
-            OUString aSymbol = rEntry.second->GetSymbol();
-            m_xLbFilterArea->append(aSymbol, rEntry.second->GetName());
-        }
+        OUString aSymbol = rEntry.second->GetSymbol();
+        m_xLbFilterArea->append(aSymbol, rEntry.second->GetName());
+    }
 
-        //  is there a stored source range?
+    //  is there a stored source range?
 
-        ScRange aAdvSource;
-        if (rQueryItem.GetAdvancedQuerySource(aAdvSource))
-        {
-            OUString aRefStr(aAdvSource.Format(*pDoc, 
ScRefFlags::RANGE_ABS_3D, pDoc->GetAddressConvention()));
-            m_xEdFilterArea->SetRefString( aRefStr );
-        }
+    ScRange aAdvSource;
+    const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
+                                    rArgSet.Get( nWhichQuery ));
+
+    if (rQueryItem.GetAdvancedQuerySource(aAdvSource))
+    {
+        OUString aRefStr(aAdvSource.Format(rDoc, ScRefFlags::RANGE_ABS_3D, 
rDoc.GetAddressConvention()));
+        m_xEdFilterArea->SetRefString( aRefStr );
     }
 
     m_xLbFilterArea->set_active( 0 );
@@ -157,7 +151,7 @@ void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet )
     // let options be initialized:
 
     pOptionsMgr.reset( new ScFilterOptionsMgr(
-                            pViewData,
+                            rViewData,
                             theQueryData,
                             m_xBtnCase.get(),
                             m_xBtnRegExp.get(),
@@ -184,8 +178,7 @@ void ScSpecialFilterDlg::Init( const SfxItemSet& rArgSet )
 
 void ScSpecialFilterDlg::Close()
 {
-    if (pViewData)
-        pViewData->GetDocShell()->CancelAutoDBRange();
+    rViewData.GetDocShell()->CancelAutoDBRange();
 
     DoClose( ScSpecialFilterDlgWrapper::GetChildWindowId() );
 }
@@ -236,7 +229,7 @@ void ScSpecialFilterDlg::SetActive()
 ScQueryItem* ScSpecialFilterDlg::GetOutputItem( const ScQueryParam& rParam,
                                                 const ScRange& rSource )
 {
-    pOutItem.reset(new ScQueryItem( nWhichQuery, pViewData, &rParam ));
+    pOutItem.reset(new ScQueryItem( nWhichQuery, &rParam ));
     pOutItem->SetAdvancedQuerySource( &rSource );
     return pOutItem.get();
 }
@@ -250,9 +243,7 @@ bool ScSpecialFilterDlg::IsRefInputMode() const
 
 IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, rBtn, void)
 {
-    OSL_ENSURE( pDoc && pViewData, "Document or ViewData not found. :-/" );
-
-    if (&rBtn == m_xBtnOk.get() && pDoc && pViewData)
+    if (&rBtn == m_xBtnOk.get())
     {
         OUString          theCopyStr( m_xEdCopyArea->GetText() );
         OUString          theAreaStr( m_xEdFilterArea->GetText() );
@@ -261,7 +252,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, 
rBtn, void)
         bool            bEditInputOk    = true;
         bool            bQueryOk        = false;
         ScRange         theFilterArea;
-        const formula::FormulaGrammar::AddressConvention eConv = 
pDoc->GetAddressConvention();
+        const formula::FormulaGrammar::AddressConvention eConv = 
rDoc.GetAddressConvention();
 
         if ( m_xBtnCopyResult->get_active() )
         {
@@ -270,7 +261,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, 
rBtn, void)
             if ( -1 != nColonPos )
                 theCopyStr = theCopyStr.copy( 0, nColonPos );
 
-            ScRefFlags nResult = theAdrCopy.Parse( theCopyStr, *pDoc, eConv );
+            ScRefFlags nResult = theAdrCopy.Parse( theCopyStr, rDoc, eConv );
 
             if ( (nResult & ScRefFlags::VALID) == ScRefFlags::ZERO )
             {
@@ -285,7 +276,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, 
rBtn, void)
 
         if ( bEditInputOk )
         {
-            ScRefFlags nResult = ScRange().Parse( theAreaStr, *pDoc, eConv );
+            ScRefFlags nResult = ScRange().Parse( theAreaStr, rDoc, eConv );
 
             if ( (nResult & ScRefFlags::VALID) == ScRefFlags::ZERO )
             {
@@ -302,7 +293,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, 
rBtn, void)
              * a ScQueryParam from the filter area:
              */
 
-            ScRefFlags  nResult = theFilterArea.Parse( theAreaStr, *pDoc, 
eConv );
+            ScRefFlags  nResult = theFilterArea.Parse( theAreaStr, rDoc, eConv 
);
 
             if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID )
             {
@@ -332,7 +323,7 @@ IMPL_LINK(ScSpecialFilterDlg, EndDlgHdl, weld::Button&, 
rBtn, void)
                 theOutParam.bDuplicate = !m_xBtnUnique->get_active();
                 theOutParam.bDestPers  = m_xBtnDestPers->get_active();
 
-                bQueryOk = pDoc->CreateQueryParam(ScRange(rStart,rEnd), 
theOutParam);
+                bQueryOk = rDoc.CreateQueryParam(ScRange(rStart,rEnd), 
theOutParam);
             }
         }
 
@@ -408,28 +399,23 @@ IMPL_LINK( ScSpecialFilterDlg, FilterAreaModHdl, 
formula::RefEdit&, rEd, void )
     if (&rEd != m_xEdFilterArea.get())
         return;
 
-    if ( pDoc && pViewData )
-    {
-        OUString  theCurAreaStr = rEd.GetText();
-        ScRefFlags  nResult = ScRange().Parse( theCurAreaStr, *pDoc );
+    OUString  theCurAreaStr = rEd.GetText();
+    ScRefFlags  nResult = ScRange().Parse( theCurAreaStr, rDoc );
 
-        if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID )
+    if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID )
+    {
+        const sal_Int32 nCount  = m_xLbFilterArea->get_count();
+        for (sal_Int32 i = 1; i < nCount; ++i)
         {
-            const sal_Int32 nCount  = m_xLbFilterArea->get_count();
-            for (sal_Int32 i = 1; i < nCount; ++i)
+            OUString aStr = m_xLbFilterArea->get_id(i);
+            if (theCurAreaStr == aStr)
             {
-                OUString aStr = m_xLbFilterArea->get_id(i);
-                if (theCurAreaStr == aStr)
-                {
-                    m_xLbFilterArea->set_active( i );
-                    return;
-                }
+                m_xLbFilterArea->set_active( i );
+                return;
             }
-            m_xLbFilterArea->set_active( 0 );
         }
-    }
-    else
         m_xLbFilterArea->set_active( 0 );
+    }
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx
index a99bc93edf8c..efd1e0f20244 100644
--- a/sc/source/ui/inc/filtdlg.hxx
+++ b/sc/source/ui/inc/filtdlg.hxx
@@ -50,6 +50,7 @@ class ScFilterDlg : public ScAnyRefDlgController
     typedef std::map<SCCOL, std::unique_ptr<EntryList>> EntryListsMap;
 public:
     ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent,
+                ScViewData& rData,
                 const SfxItemSet& rArgSet);
     virtual ~ScFilterDlg() override;
 
@@ -78,8 +79,8 @@ private:
     const sal_uInt16        nWhichQuery;
     ScQueryParam        theQueryData;
     std::unique_ptr<ScQueryItem> pOutItem;
-    ScViewData*         pViewData;
-    ScDocument*         pDoc;
+    ScViewData&         rViewData;
+    ScDocument&         rDoc;
     SCTAB               nSrcTab;
 
     std::vector<weld::ComboBox*> maValueEdArr;
@@ -147,7 +148,7 @@ private:
     std::unique_ptr<weld::Label> m_xFtDbArea;
 
 private:
-    void            Init            ( const SfxItemSet& rArgSet );
+    void            Init            ();
     void            FillFieldLists  ();
     void            UpdateValueList ( size_t nList );
     void            UpdateHdrInValueList( size_t nList );
@@ -177,7 +178,7 @@ class ScSpecialFilterDlg : public ScAnyRefDlgController
 {
 public:
     ScSpecialFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* 
pParent,
-                       const SfxItemSet& rArgSet);
+                       ScViewData& rData, const SfxItemSet& rArgSet);
     virtual ~ScSpecialFilterDlg() override;
 
     virtual void    SetReference( const ScRange& rRef, ScDocument& rDoc ) 
override;
@@ -195,8 +196,8 @@ private:
     const sal_uInt16    nWhichQuery;
     const ScQueryParam  theQueryData;
     std::unique_ptr<ScQueryItem> pOutItem;
-    ScViewData*         pViewData;
-    ScDocument*         pDoc;
+    ScViewData&         rViewData;
+    ScDocument&         rDoc;
 
     bool                bRefInputMode;
 
diff --git a/sc/source/ui/inc/foptmgr.hxx b/sc/source/ui/inc/foptmgr.hxx
index 580563183a2f..eadd4696a009 100644
--- a/sc/source/ui/inc/foptmgr.hxx
+++ b/sc/source/ui/inc/foptmgr.hxx
@@ -33,7 +33,7 @@ class ScViewData;
 class ScFilterOptionsMgr
 {
 public:
-    ScFilterOptionsMgr(ScViewData* ptrViewData,
+    ScFilterOptionsMgr(ScViewData& rViewData,
                      const ScQueryParam& refQueryData,
                      weld::CheckButton*  refBtnCase,
                      weld::CheckButton* refBtnRegExp,
@@ -50,8 +50,8 @@ public:
     bool    VerifyPosStr ( const OUString& rPosStr ) const;
 
 private:
-    ScViewData*     pViewData;
-    ScDocument*     pDoc;
+    ScViewData&     rViewData;
+    ScDocument&     rDoc;
 
     weld::CheckButton* pBtnCase;
     weld::CheckButton* pBtnRegExp;
diff --git a/sc/source/ui/inc/pfiltdlg.hxx b/sc/source/ui/inc/pfiltdlg.hxx
index 892d8655255f..adf80455f3fe 100644
--- a/sc/source/ui/inc/pfiltdlg.hxx
+++ b/sc/source/ui/inc/pfiltdlg.hxx
@@ -34,7 +34,7 @@ struct ScFilterEntries;
 class ScPivotFilterDlg : public weld::GenericDialogController
 {
 public:
-    ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, SCTAB 
nSourceTab);
+    ScPivotFilterDlg(weld::Window* pParent, const SfxItemSet& rArgSet, 
ScViewData& rData, SCTAB nSourceTab);
     virtual ~ScPivotFilterDlg() override;
 
     const ScQueryItem&  GetOutputItem();
@@ -48,8 +48,8 @@ private:
     const sal_uInt16    nWhichQuery;
     const ScQueryParam  theQueryData;
     std::unique_ptr<ScQueryItem> pOutItem;
-    ScViewData*         pViewData;
-    ScDocument*         pDoc;
+    ScViewData&         rViewData;
+    ScDocument&         rDoc;
     SCTAB               nSrcTab;
 
     std::unique_ptr<weld::ComboBox> m_xLbField1;
@@ -78,7 +78,7 @@ private:
     std::array<std::unique_ptr<ScFilterEntries>, MAXCOLCOUNT> m_pEntryLists;
 
 private:
-    void    Init            ( const SfxItemSet& rArgSet );
+    void    Init            ();
     void    FillFieldLists  ();
     void    UpdateValueList ( sal_uInt16 nList );
     void    ClearValueList  ( sal_uInt16 nList );
diff --git a/sc/source/ui/inc/uiitems.hxx b/sc/source/ui/inc/uiitems.hxx
index 5ea756dd409b..c14b2be92c61 100644
--- a/sc/source/ui/inc/uiitems.hxx
+++ b/sc/source/ui/inc/uiitems.hxx
@@ -147,7 +147,6 @@ class SC_DLLPUBLIC ScQueryItem : public SfxPoolItem
 public:
                             DECLARE_ITEM_TYPE_FUNCTION(ScQueryItem)
                             ScQueryItem( sal_uInt16                 nWhich,
-                                         ScViewData*            ptrViewData,
                                          const ScQueryParam*    pQueryData );
                             ScQueryItem( const ScQueryItem& rItem );
                             virtual ~ScQueryItem() override;
@@ -155,7 +154,6 @@ public:
     virtual bool            operator==( const SfxPoolItem& ) const override;
     virtual ScQueryItem*    Clone( SfxItemPool *pPool = nullptr ) const 
override;
 
-    ScViewData*         GetViewData () const { return pViewData; }
     const ScQueryParam& GetQueryData() const;
 
     bool        GetAdvancedQuerySource(ScRange& rSource) const;
@@ -163,7 +161,6 @@ public:
 
 private:
     std::unique_ptr<ScQueryParam> mpQueryData;
-    ScViewData*     pViewData;
     ScRange         aAdvSource;
     bool            bIsAdvanced;
 };
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index 02df37caac6f..21046171acbd 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -207,13 +207,13 @@ void ScGridWindow::DoPushPivotButton( SCCOL nCol, SCROW 
nRow, const MouseEvent&
             }
 
             SfxItemSet 
aArgSet(SfxItemSet::makeFixedSfxItemSet<SCITEM_QUERYDATA, 
SCITEM_QUERYDATA>(mrViewData.GetViewShell()->GetPool()));
-            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &mrViewData, 
&aQueryParam ) );
+            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) );
 
             ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
 
             ScopedVclPtr<AbstractScPivotFilterDlg> pDlg(
                 pFact->CreateScPivotFilterDlg(
-                    mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, 
nSrcTab));
+                    mrViewData.GetViewShell()->GetFrameWeld(), aArgSet, 
mrViewData, nSrcTab));
             if ( pDlg->Execute() == RET_OK )
             {
                 ScSheetSourceDesc aNewDesc(&rDoc);
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
index 40c6425a4025..84e2c3e2a103 100644
--- a/sc/source/ui/view/pivotsh.cxx
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -95,12 +95,12 @@ void ScPivotShell::Execute( const SfxRequest& rReq )
 
                 ScViewData& rViewData = pViewShell->GetViewData();
                 SfxItemSetFixed<SCITEM_QUERYDATA, SCITEM_QUERYDATA> aArgSet( 
pViewShell->GetPool() );
-                aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &rViewData, 
&aQueryParam ) );
+                aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) );
 
                 ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
 
                 ScopedVclPtr<AbstractScPivotFilterDlg> 
pDlg(pFact->CreateScPivotFilterDlg(
-                    pViewShell->GetFrameWeld(), aArgSet, nSrcTab));
+                    pViewShell->GetFrameWeld(), aArgSet, rViewData, nSrcTab));
 
                 if( pDlg->Execute() == RET_OK )
                 {
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index e95fa932178d..2ce3f1826a83 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -345,14 +345,12 @@ std::shared_ptr<SfxModelessDialogController> 
ScTabViewShell::CreateRefDialogCont
             pDBData->GetArea(aArea);
             MarkRange(aArea, false);
 
-            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
-                                      &GetViewData(),
-                                      &aQueryParam ) );
+            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA, &aQueryParam ) );
 
             // mark current sheet (due to RefInput in dialog)
             GetViewData().SetRefTabNo( GetViewData().GetTabNo() );
 
-            xResult = std::make_shared<ScFilterDlg>(pB, pCW, pParent, aArgSet);
+            xResult = std::make_shared<ScFilterDlg>(pB, pCW, pParent, 
GetViewData(), aArgSet);
             break;
         }
         case SID_SPECIAL_FILTER:
@@ -369,7 +367,7 @@ std::shared_ptr<SfxModelessDialogController> 
ScTabViewShell::CreateRefDialogCont
             pDBData->GetArea(aArea);
             MarkRange(aArea, false);
 
-            ScQueryItem aItem( SCITEM_QUERYDATA, &GetViewData(), &aQueryParam 
);
+            ScQueryItem aItem( SCITEM_QUERYDATA, &aQueryParam );
             ScRange aAdvSource;
             if (pDBData->GetAdvancedQuerySource(aAdvSource))
                 aItem.SetAdvancedQuerySource( &aAdvSource );
@@ -379,7 +377,7 @@ std::shared_ptr<SfxModelessDialogController> 
ScTabViewShell::CreateRefDialogCont
             // mark current sheet (due to RefInput in dialog)
             GetViewData().SetRefTabNo( GetViewData().GetTabNo() );
 
-            xResult = std::make_shared<ScSpecialFilterDlg>(pB, pCW, pParent, 
aArgSet);
+            xResult = std::make_shared<ScSpecialFilterDlg>(pB, pCW, pParent, 
GetViewData(), aArgSet);
             break;
         }
         case SID_OPENDLG_OPTSOLVER:

Reply via email to