include/formula/funcutl.hxx                  |    1 
 sc/qa/unit/tiledrendering/tiledrendering.cxx |    5 
 sc/source/ui/dbgui/filtdlg.cxx               |  771 ++++++++++------------
 sc/source/ui/dbgui/foptmgr.cxx               |  230 ++++++
 sc/source/ui/inc/filtdlg.hxx                 |  110 +--
 sc/source/ui/inc/foptmgr.hxx                 |   52 +
 sc/source/ui/inc/reffact.hxx                 |    2 
 sc/source/ui/view/reffact.cxx                |    4 
 sc/source/ui/view/tabvwshc.cxx               |   53 -
 sc/uiconfig/scalc/ui/standardfilterdialog.ui |  916 +++++++++++++--------------
 solenv/sanitizers/ui/modules/scalc.suppr     |    1 
 11 files changed, 1206 insertions(+), 939 deletions(-)

New commits:
commit 59d1d9e661ee4a805ee280d7afab51a52bb11ed3
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Apr 15 20:49:03 2019 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Apr 16 22:20:17 2019 +0200

    weld ScFilterDlg
    
    Change-Id: I8bb8860d398af2ee9d6dd434c50f914e78b8021b
    Reviewed-on: https://gerrit.libreoffice.org/70801
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/formula/funcutl.hxx b/include/formula/funcutl.hxx
index 22e46ecc81c1..3654d9ebd966 100644
--- a/include/formula/funcutl.hxx
+++ b/include/formula/funcutl.hxx
@@ -177,6 +177,7 @@ public:
     void SetGetFocusHdl(const Link<WeldRefEdit&,void>& rLink) { maGetFocusHdl 
= rLink; }
     void SetLoseFocusHdl(const Link<WeldRefEdit&,void>& rLink) { 
maLoseFocusHdl = rLink; }
     void SetModifyHdl(const Link<WeldRefEdit&,void>& rLink) { maModifyHdl = 
rLink; }
+    const Link<WeldRefEdit&,void>& GetModifyHdl() const { return maModifyHdl; }
     void SetActivateHdl(const Link<weld::Widget&,bool>& rLink) { maActivateHdl 
= rLink; }
 };
 
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx 
b/sc/qa/unit/tiledrendering/tiledrendering.cxx
index 5222a64c8dbb..326966e940af 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -1647,11 +1647,8 @@ void ScTiledRenderingTest::testFilterDlg()
     CPPUNIT_ASSERT_EQUAL(true, 
pView2->GetViewFrame()->GetDispatcher()->IsLocked());
     CPPUNIT_ASSERT_EQUAL(false, 
pView1->GetViewFrame()->GetDispatcher()->IsLocked());
 
-    KeyEvent aEvent(27, KEY_ESCAPE, 0);
-    Application::PostKeyEvent(VclEventId::WindowKeyInput, 
pRefWindow->GetWindow(), &aEvent);
-    Application::PostKeyEvent(VclEventId::WindowKeyUp, 
pRefWindow->GetWindow(), &aEvent);
+    pRefWindow->GetController()->response(RET_CANCEL);
 
-    Scheduler::ProcessEventsToIdle();
     CPPUNIT_ASSERT_EQUAL(false, 
pView2->GetViewFrame()->GetDispatcher()->IsLocked());
     CPPUNIT_ASSERT_EQUAL(false, 
pView1->GetViewFrame()->GetDispatcher()->IsLocked());
 
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 9b6fe0ea03da..477dc0f63cbd 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -46,10 +46,10 @@
 ScFilterDlg::EntryList::EntryList() :
     mnHeaderPos(INVALID_HEADER_POS) {}
 
-ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, vcl::Window* 
pParent,
+ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* 
pParent,
     const SfxItemSet& rArgSet)
-    : ScAnyRefDlg ( pB, pCW, pParent, "StandardFilterDialog",
-        "modules/scalc/ui/standardfilterdialog.ui" )
+    : ScAnyRefDlgController(pB, pCW, pParent,
+        "modules/scalc/ui/standardfilterdialog.ui", "StandardFilterDialog")
     , aStrUndefined(ScResId(SCSTR_UNDEFINED))
     , aStrNone(ScResId(SCSTR_NONE))
     , aStrEmpty(ScResId(SCSTR_FILTER_EMPTY))
@@ -61,41 +61,42 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* 
pCW, vcl::Window* pPar
     , pDoc(nullptr)
     , nSrcTab(0)
     , bRefInputMode(false)
+    , m_xLbConnect1(m_xBuilder->weld_combo_box("connect1"))
+    , m_xLbField1(m_xBuilder->weld_combo_box("field1"))
+    , m_xLbCond1(m_xBuilder->weld_combo_box("cond1"))
+    , m_xEdVal1(m_xBuilder->weld_combo_box("val1"))
+    , m_xLbConnect2(m_xBuilder->weld_combo_box("connect2"))
+    , m_xLbField2(m_xBuilder->weld_combo_box("field2"))
+    , m_xLbCond2(m_xBuilder->weld_combo_box("cond2"))
+    , m_xEdVal2(m_xBuilder->weld_combo_box("val2"))
+    , m_xLbConnect3(m_xBuilder->weld_combo_box("connect3"))
+    , m_xLbField3(m_xBuilder->weld_combo_box("field3"))
+    , m_xLbCond3(m_xBuilder->weld_combo_box("cond3"))
+    , m_xEdVal3(m_xBuilder->weld_combo_box("val3"))
+    , m_xLbConnect4(m_xBuilder->weld_combo_box("connect4"))
+    , m_xLbField4(m_xBuilder->weld_combo_box("field4"))
+    , m_xLbCond4(m_xBuilder->weld_combo_box("cond4"))
+    , m_xEdVal4(m_xBuilder->weld_combo_box("val4"))
+    , m_xContents(m_xBuilder->weld_widget("grid"))
+    , m_xScrollBar(m_xBuilder->weld_scrolled_window("scrollbar"))
+    , m_xExpander(m_xBuilder->weld_expander("more"))
+    , m_xBtnOk(m_xBuilder->weld_button("ok"))
+    , m_xBtnCancel(m_xBuilder->weld_button("cancel"))
+    , m_xBtnCase(m_xBuilder->weld_check_button("case"))
+    , m_xBtnRegExp(m_xBuilder->weld_check_button("regexp"))
+    , m_xBtnHeader(m_xBuilder->weld_check_button("header"))
+    , m_xBtnUnique(m_xBuilder->weld_check_button("unique"))
+    , m_xBtnCopyResult(m_xBuilder->weld_check_button("copyresult"))
+    , m_xLbCopyArea(m_xBuilder->weld_combo_box("lbcopyarea"))
+    , m_xEdCopyArea(new 
formula::WeldRefEdit(m_xBuilder->weld_entry("edcopyarea")))
+    , m_xRbCopyArea(new 
formula::WeldRefButton(m_xBuilder->weld_button("rbcopyarea")))
+    , m_xBtnDestPers(m_xBuilder->weld_check_button("destpers"))
+    , m_xFtDbAreaLabel(m_xBuilder->weld_label("dbarealabel"))
+    , m_xFtDbArea(m_xBuilder->weld_label("dbarea"))
 {
-    get(pLbConnect1,"connect1");
-    get(pLbField1,"field1");
-    get(pLbCond1,"cond1");
-    get(pEdVal1,"val1");
-    get(pLbConnect2,"connect2");
-    get(pLbField2,"field2");
-    get(pLbCond2,"cond2");
-    get(pEdVal2,"val2");
-    get(pLbConnect3,"connect3");
-    get(pLbField3,"field3");
-    get(pLbCond3,"cond3");
-    get(pEdVal3,"val3");
-    get(pLbConnect4,"connect4");
-    get(pLbField4,"field4");
-    get(pLbCond4,"cond4");
-    get(pEdVal4,"val4");
-    get(pScrollBar,"scrollbar");
-    get(pExpander,"more");
-    pExpander->SetExpandedHdl(LINK(this, ScFilterDlg, MoreExpandedHdl));
-    get(pBtnOk,"ok");
-    get(pBtnCancel,"cancel");
-    get(pBtnCase,"case");
-    get(pBtnRegExp,"regexp");
-    get(pBtnHeader,"header");
-    get(pBtnUnique,"unique");
-    get(pBtnCopyResult,"copyresult");
-    get(pLbCopyArea,"lbcopyarea");
-    get(pEdCopyArea,"edcopyarea");
-    pEdCopyArea->SetReferences(this, pBtnCopyResult);
-    get(pRbCopyArea,"rbcopyarea");
-    pRbCopyArea->SetReferences(this, pEdCopyArea);
-    get(pBtnDestPers,"destpers");
-    get(pFtDbAreaLabel,"dbarealabel");
-    get(pFtDbArea,"dbarea");
+    m_xExpander->connect_expanded(LINK(this, ScFilterDlg, MoreExpandedHdl));
+    m_xEdCopyArea->SetReferences(this, m_xFtDbAreaLabel.get());
+    m_xRbCopyArea->SetReferences(this, m_xEdCopyArea.get());
 
     Init( rArgSet );
 
@@ -107,54 +108,12 @@ ScFilterDlg::ScFilterDlg(SfxBindings* pB, SfxChildWindow* 
pCW, vcl::Window* pPar
 
 ScFilterDlg::~ScFilterDlg()
 {
-    disposeOnce();
-}
-
-void ScFilterDlg::dispose()
-{
     pOptionsMgr.reset();
     pOutItem.reset();
 
     // Hack: RefInput control
     pTimer->Stop();
     pTimer.reset();
-
-    pLbConnect1.clear();
-    pLbField1.clear();
-    pLbCond1.clear();
-    pEdVal1.clear();
-    pLbConnect2.clear();
-    pLbField2.clear();
-    pLbCond2.clear();
-    pEdVal2.clear();
-    pLbConnect3.clear();
-    pLbField3.clear();
-    pLbCond3.clear();
-    pEdVal3.clear();
-    pLbConnect4.clear();
-    pLbField4.clear();
-    pLbCond4.clear();
-    pEdVal4.clear();
-    pScrollBar.clear();
-    pExpander.clear();
-    pBtnOk.clear();
-    pBtnCancel.clear();
-    pBtnCase.clear();
-    pBtnRegExp.clear();
-    pBtnHeader.clear();
-    pBtnUnique.clear();
-    pBtnCopyResult.clear();
-    pLbCopyArea.clear();
-    pEdCopyArea.clear();
-    pRbCopyArea.clear();
-    pBtnDestPers.clear();
-    pFtDbAreaLabel.clear();
-    pFtDbArea.clear();
-    maValueEdArr.clear();
-    maFieldLbArr.clear();
-    maCondLbArr.clear();
-    maConnLbArr.clear();
-    ScAnyRefDlg::dispose();
 }
 
 void ScFilterDlg::Init( const SfxItemSet& rArgSet )
@@ -162,29 +121,34 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
     const ScQueryItem& rQueryItem = static_cast<const ScQueryItem&>(
                                     rArgSet.Get( nWhichQuery ));
 
-    pBtnOk->SetClickHdl      ( LINK( this, ScFilterDlg, EndDlgHdl ) );
-    pBtnCancel->SetClickHdl  ( LINK( this, ScFilterDlg, EndDlgHdl ) );
-    pBtnHeader->SetClickHdl  ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
-    pBtnCase->SetClickHdl    ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
-
-    pLbField1->SetSelectHdl  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbField2->SetSelectHdl  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbField3->SetSelectHdl  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbField4->SetSelectHdl  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbConnect1->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbConnect2->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbConnect3->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbConnect4->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-
-    pLbField1->setMaxWidthChars(10);
-    pLbField2->setMaxWidthChars(10);
-    pLbField3->setMaxWidthChars(10);
-    pLbField4->setMaxWidthChars(10);
-
-    pLbCond1->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbCond2->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbCond3->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
-    pLbCond4->SetSelectHdl( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xBtnOk->connect_clicked      ( LINK( this, ScFilterDlg, EndDlgHdl ) );
+    m_xBtnCancel->connect_clicked  ( LINK( this, ScFilterDlg, EndDlgHdl ) );
+    m_xBtnHeader->connect_clicked  ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
+    m_xBtnCase->connect_clicked    ( LINK( this, ScFilterDlg, CheckBoxHdl ) );
+
+    m_xLbField1->connect_changed  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbField2->connect_changed  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbField3->connect_changed  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbField4->connect_changed  ( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbConnect1->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbConnect2->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbConnect3->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbConnect4->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+
+    m_xLbField1->append_text("0000000000");
+    m_xLbField1->set_active(0);
+    auto nPrefWidth = m_xLbField1->get_preferred_size().Width();
+    m_xLbField1->clear();
+
+    m_xLbField1->set_size_request(nPrefWidth, -1);
+    m_xLbField2->set_size_request(nPrefWidth, -1);
+    m_xLbField3->set_size_request(nPrefWidth, -1);
+    m_xLbField4->set_size_request(nPrefWidth, -1);
+
+    m_xLbCond1->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbCond2->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbCond3->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
+    m_xLbCond4->connect_changed( LINK( this, ScFilterDlg, LbSelectHdl ) );
 
     pViewData   = rQueryItem.GetViewData();
     pDoc        = pViewData ? pViewData->GetDocument() : nullptr;
@@ -192,41 +156,41 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
 
     // for easier access:
     maFieldLbArr.reserve(QUERY_ENTRY_COUNT);
-    maFieldLbArr.push_back(pLbField1);
-    maFieldLbArr.push_back(pLbField2);
-    maFieldLbArr.push_back(pLbField3);
-    maFieldLbArr.push_back(pLbField4);
+    maFieldLbArr.push_back(m_xLbField1.get());
+    maFieldLbArr.push_back(m_xLbField2.get());
+    maFieldLbArr.push_back(m_xLbField3.get());
+    maFieldLbArr.push_back(m_xLbField4.get());
     maValueEdArr.reserve(QUERY_ENTRY_COUNT);
-    maValueEdArr.push_back(pEdVal1);
-    maValueEdArr.push_back(pEdVal2);
-    maValueEdArr.push_back(pEdVal3);
-    maValueEdArr.push_back(pEdVal4);
+    maValueEdArr.push_back(m_xEdVal1.get());
+    maValueEdArr.push_back(m_xEdVal2.get());
+    maValueEdArr.push_back(m_xEdVal3.get());
+    maValueEdArr.push_back(m_xEdVal4.get());
     maCondLbArr.reserve(QUERY_ENTRY_COUNT);
-    maCondLbArr.push_back(pLbCond1);
-    maCondLbArr.push_back(pLbCond2);
-    maCondLbArr.push_back(pLbCond3);
-    maCondLbArr.push_back(pLbCond4);
+    maCondLbArr.push_back(m_xLbCond1.get());
+    maCondLbArr.push_back(m_xLbCond2.get());
+    maCondLbArr.push_back(m_xLbCond3.get());
+    maCondLbArr.push_back(m_xLbCond4.get());
     maConnLbArr.reserve(QUERY_ENTRY_COUNT);
-    maConnLbArr.push_back(pLbConnect1);
-    maConnLbArr.push_back(pLbConnect2);
-    maConnLbArr.push_back(pLbConnect3);
-    maConnLbArr.push_back(pLbConnect4);
+    maConnLbArr.push_back(m_xLbConnect1.get());
+    maConnLbArr.push_back(m_xLbConnect2.get());
+    maConnLbArr.push_back(m_xLbConnect3.get());
+    maConnLbArr.push_back(m_xLbConnect4.get());
 
     // Option initialization:
-    pOptionsMgr.reset( new ScFilterOptionsMgr(
+    pOptionsMgr.reset( new FilterOptionsMgr(
                             pViewData,
                             theQueryData,
-                            pBtnCase,
-                            pBtnRegExp,
-                            pBtnHeader,
-                            pBtnUnique,
-                            pBtnCopyResult,
-                            pBtnDestPers,
-                            pLbCopyArea,
-                            pEdCopyArea,
-                            pRbCopyArea,
-                            pFtDbAreaLabel,
-                            pFtDbArea,
+                            m_xBtnCase.get(),
+                            m_xBtnRegExp.get(),
+                            m_xBtnHeader.get(),
+                            m_xBtnUnique.get(),
+                            m_xBtnCopyResult.get(),
+                            m_xBtnDestPers.get(),
+                            m_xLbCopyArea.get(),
+                            m_xEdCopyArea.get(),
+                            m_xRbCopyArea.get(),
+                            m_xFtDbAreaLabel.get(),
+                            m_xFtDbArea.get(),
                             aStrUndefined ) );
     // Read in field lists and select entries
 
@@ -247,12 +211,12 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
             if (rEntry.IsQueryByEmpty())
             {
                 aValStr = aStrEmpty;
-                maCondLbArr[i]->Disable();
+                maCondLbArr[i]->set_sensitive(false);
             }
             else if (rEntry.IsQueryByNonEmpty())
             {
                 aValStr = aStrNotEmpty;
-                maCondLbArr[i]->Disable();
+                maCondLbArr[i]->set_sensitive(false);
             }
             else
             {
@@ -301,92 +265,93 @@ void ScFilterDlg::Init( const SfxItemSet& rArgSet )
             maRefreshExceptQuery[i] = true;
 
         }
-        maFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
-        maCondLbArr [i]->SelectEntryPos( nCondPos );
-        maValueEdArr[i]->SetText( aValStr );
-        maValueEdArr[i]->EnableAutocomplete( false );
-        maValueEdArr[i]->SetModifyHdl( LINK( this, ScFilterDlg, ValModifyHdl ) 
);
+        maFieldLbArr[i]->set_active( nFieldSelPos );
+        maCondLbArr [i]->set_active( nCondPos );
+        maValueEdArr[i]->set_entry_text( aValStr );
+        maValueEdArr[i]->set_entry_completion(false);
+        maValueEdArr[i]->connect_changed( LINK( this, ScFilterDlg, 
ValModifyHdl ) );
         UpdateValueList(i+1);
     }
 
-    pScrollBar->SetEndScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
-    pScrollBar->SetScrollHdl( LINK( this, ScFilterDlg, ScrollHdl ) );
+    m_xScrollBar->set_user_managed_scrolling();
+    m_xScrollBar->connect_vadjustment_changed( LINK( this, ScFilterDlg, 
ScrollHdl ) );
+    m_xScrollBar->vadjustment_configure(0, 0, 8, 1, 3, 4);
+    Size aSize(m_xContents->get_preferred_size());
+    m_xContents->set_size_request(aSize.Width(), aSize.Height());
 
-    pScrollBar->SetRange( Range( 0, 4 ) );
-    pScrollBar->SetLineSize( 1 );
-    pLbConnect1->Hide();
+    m_xLbConnect1->hide();
     // Disable/Enable Logic:
 
-    (pLbField1->GetSelectedEntryPos() != 0)
-    && (pLbField2->GetSelectedEntryPos() != 0)
-        ? pLbConnect2->SelectEntryPos( 
static_cast<sal_uInt16>(theQueryData.GetEntry(1).eConnect) )
-        : pLbConnect2->SetNoSelection();
-
-    (pLbField2->GetSelectedEntryPos() != 0)
-    && (pLbField3->GetSelectedEntryPos() != 0)
-        ? pLbConnect3->SelectEntryPos( 
static_cast<sal_uInt16>(theQueryData.GetEntry(2).eConnect) )
-        : pLbConnect3->SetNoSelection();
-
-    (pLbField3->GetSelectedEntryPos() != 0)
-    && (pLbField4->GetSelectedEntryPos() != 0)
-        ? pLbConnect4->SelectEntryPos( 
static_cast<sal_uInt16>(theQueryData.GetEntry(3).eConnect) )
-        : pLbConnect4->SetNoSelection();
-    if ( pLbField1->GetSelectedEntryPos() == 0 )
+    (m_xLbField1->get_active() != 0)
+    && (m_xLbField2->get_active() != 0)
+        ? m_xLbConnect2->set_active( 
static_cast<sal_uInt16>(theQueryData.GetEntry(1).eConnect) )
+        : m_xLbConnect2->set_active(-1);
+
+    (m_xLbField2->get_active() != 0)
+    && (m_xLbField3->get_active() != 0)
+        ? m_xLbConnect3->set_active( 
static_cast<sal_uInt16>(theQueryData.GetEntry(2).eConnect) )
+        : m_xLbConnect3->set_active(-1);
+
+    (m_xLbField3->get_active() != 0)
+    && (m_xLbField4->get_active() != 0)
+        ? m_xLbConnect4->set_active( 
static_cast<sal_uInt16>(theQueryData.GetEntry(3).eConnect) )
+        : m_xLbConnect4->set_active(-1);
+    if ( m_xLbField1->get_active() == 0 )
     {
-        pLbConnect2->Disable();
-        pLbField2->Disable();
-        pLbCond2->Disable();
-        pEdVal2->Disable();
+        m_xLbConnect2->set_sensitive(false);
+        m_xLbField2->set_sensitive(false);
+        m_xLbCond2->set_sensitive(false);
+        m_xEdVal2->set_sensitive(false);
     }
-    else if ( pLbConnect2->GetSelectedEntryCount() == 0 )
+    else if ( m_xLbConnect2->get_active() == -1 )
     {
-        pLbField2->Disable();
-        pLbCond2->Disable();
-        pEdVal2->Disable();
+        m_xLbField2->set_sensitive(false);
+        m_xLbCond2->set_sensitive(false);
+        m_xEdVal2->set_sensitive(false);
     }
 
-    if ( pLbField2->GetSelectedEntryPos() == 0 )
+    if ( m_xLbField2->get_active() == 0 )
     {
-        pLbConnect3->Disable();
-        pLbField3->Disable();
-        pLbCond3->Disable();
-        pEdVal3->Disable();
+        m_xLbConnect3->set_sensitive(false);
+        m_xLbField3->set_sensitive(false);
+        m_xLbCond3->set_sensitive(false);
+        m_xEdVal3->set_sensitive(false);
     }
-    else if ( pLbConnect3->GetSelectedEntryCount() == 0 )
+    else if ( m_xLbConnect3->get_active() == -1 )
     {
-        pLbField3->Disable();
-        pLbCond3->Disable();
-        pEdVal3->Disable();
+        m_xLbField3->set_sensitive(false);
+        m_xLbCond3->set_sensitive(false);
+        m_xEdVal3->set_sensitive(false);
     }
-    if ( pLbField3->GetSelectedEntryPos() == 0 )
+    if ( m_xLbField3->get_active() == 0 )
     {
-        pLbConnect4->Disable();
-        pLbField4->Disable();
-        pLbCond4->Disable();
-        pEdVal4->Disable();
+        m_xLbConnect4->set_sensitive(false);
+        m_xLbField4->set_sensitive(false);
+        m_xLbCond4->set_sensitive(false);
+        m_xEdVal4->set_sensitive(false);
     }
-    else if ( pLbConnect4->GetSelectedEntryCount() == 0 )
+    else if ( m_xLbConnect4->get_active() == -1 )
     {
-        pLbField4->Disable();
-        pLbCond4->Disable();
-        pEdVal4->Disable();
+        m_xLbField4->set_sensitive(false);
+        m_xLbCond4->set_sensitive(false);
+        m_xEdVal4->set_sensitive(false);
     }
 
-    pEdVal1->setMaxWidthChars(10);
-    pEdVal2->setMaxWidthChars(10);
-    pEdVal3->setMaxWidthChars(10);
-    pEdVal4->setMaxWidthChars(10);
+    m_xEdVal1->set_entry_width_chars(10);
+    m_xEdVal2->set_entry_width_chars(10);
+    m_xEdVal3->set_entry_width_chars(10);
+    m_xEdVal4->set_entry_width_chars(10);
 
     if (pDoc != nullptr && pDoc->GetChangeTrack() != nullptr)
-        pBtnCopyResult->Disable();
+        m_xBtnCopyResult->set_sensitive(false);
 }
 
-bool ScFilterDlg::Close()
+void ScFilterDlg::Close()
 {
     if (pViewData)
         pViewData->GetDocShell()->CancelAutoDBRange();
 
-    return DoClose( ScFilterDlgWrapper::GetChildWindowId() );
+    DoClose( ScFilterDlgWrapper::GetChildWindowId() );
 }
 
 // Mouse-selected cell area becomes the new selection and is shown in the
@@ -397,9 +362,9 @@ void ScFilterDlg::SetReference( const ScRange& rRef, 
ScDocument* pDocP )
     if ( bRefInputMode )    // Only possible if in reference edit mode
     {
         if ( rRef.aStart != rRef.aEnd )
-            RefInputStart( pEdCopyArea );
+            RefInputStart( m_xEdCopyArea.get() );
         OUString aRefStr(rRef.aStart.Format(ScRefFlags::ADDR_ABS_3D, pDocP, 
pDocP->GetAddressConvention()));
-        pEdCopyArea->SetRefString( aRefStr );
+        m_xEdCopyArea->SetRefString( aRefStr );
     }
 }
 
@@ -407,25 +372,25 @@ void ScFilterDlg::SetActive()
 {
     if ( bRefInputMode )
     {
-        pEdCopyArea->GrabFocus();
-        pEdCopyArea->GetModifyHdl().Call( *pEdCopyArea );
+        m_xEdCopyArea->GrabFocus();
+        m_xEdCopyArea->GetModifyHdl().Call( *m_xEdCopyArea );
     }
     else
-        GrabFocus();
+        m_xDialog->grab_focus();
 
     RefInputDone();
 }
 
 void ScFilterDlg::FillFieldLists()
 {
-    pLbField1->Clear();
-    pLbField2->Clear();
-    pLbField3->Clear();
-    pLbField4->Clear();
-    pLbField1->InsertEntry( aStrNone, 0 );
-    pLbField2->InsertEntry( aStrNone, 0 );
-    pLbField3->InsertEntry( aStrNone, 0 );
-    pLbField4->InsertEntry( aStrNone, 0 );
+    m_xLbField1->clear();
+    m_xLbField2->clear();
+    m_xLbField3->clear();
+    m_xLbField4->clear();
+    m_xLbField1->append_text( aStrNone );
+    m_xLbField2->append_text( aStrNone );
+    m_xLbField3->append_text( aStrNone );
+    m_xLbField4->append_text( aStrNone );
 
     if ( pDoc )
     {
@@ -435,42 +400,39 @@ void ScFilterDlg::FillFieldLists()
         SCROW   nFirstRow   = theQueryData.nRow1;
         SCCOL   nMaxCol     = theQueryData.nCol2;
         SCCOL   col = 0;
-        sal_uInt16  i=1;
 
         for ( col=nFirstCol; col<=nMaxCol; col++ )
         {
             aFieldName = pDoc->GetString(col, nFirstRow, nTab);
-            if (!pBtnHeader->IsChecked() || aFieldName.isEmpty())
+            if (!m_xBtnHeader->get_active() || aFieldName.isEmpty())
             {
                 aFieldName = ScGlobal::ReplaceOrAppend( aStrColumn, "%1", 
ScColToAlpha( col ));
             }
-            pLbField1->InsertEntry( aFieldName, i );
-            pLbField2->InsertEntry( aFieldName, i );
-            pLbField3->InsertEntry( aFieldName, i );
-            pLbField4->InsertEntry( aFieldName, i );
-            i++;
+            m_xLbField1->append_text( aFieldName );
+            m_xLbField2->append_text( aFieldName );
+            m_xLbField3->append_text( aFieldName );
+            m_xLbField4->append_text( aFieldName );
         }
     }
 }
 
 void ScFilterDlg::UpdateValueList( size_t nList )
 {
-    bool bCaseSens = pBtnCase->IsChecked();
+    bool bCaseSens = m_xBtnCase->get_active();
 
     if (pDoc && nList > 0 && nList <= QUERY_ENTRY_COUNT)
     {
-        ComboBox*   pValList        = maValueEdArr[nList-1].get();
-        const sal_Int32 nFieldSelPos = 
maFieldLbArr[nList-1]->GetSelectedEntryPos();
-        sal_Int32 nListPos = 0;
-        OUString aCurValue = pValList->GetText();
+        weld::ComboBox* pValList = maValueEdArr[nList-1];
+        const sal_Int32 nFieldSelPos = maFieldLbArr[nList-1]->get_active();
+        OUString aCurValue = pValList->get_active_text();
 
-        pValList->Clear();
-        pValList->InsertEntry( aStrNotEmpty, nListPos++ );
-        pValList->InsertEntry( aStrEmpty, nListPos++ );
+        pValList->clear();
+        pValList->append_text(aStrNotEmpty);
+        pValList->append_text(aStrEmpty);
 
         if ( nFieldSelPos )
         {
-            WaitObject aWaiter( this );     // even if only the list box has 
content
+            weld::WaitObject aWaiter(m_xDialog.get());     // even if only the 
list box has content
 
             SCCOL nColumn = theQueryData.nCol1 + 
static_cast<SCCOL>(nFieldSelPos) - 1;
             EntryList* pList = nullptr;
@@ -532,11 +494,10 @@ void ScFilterDlg::UpdateValueList( size_t nList )
 
             for (const auto& rEntry : pList->maFilterEntries)
             {
-                pValList->InsertEntry(rEntry.GetString(), nListPos++);
+                pValList->append_text(rEntry.GetString());
             }
         }
-        pValList->SetText( aCurValue );
-        pValList->EnableDDAutoWidth(false);
+        pValList->set_entry_text(aCurValue);
     }
 
     UpdateHdrInValueList( nList );
@@ -552,7 +513,7 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList )
     if (nList == 0 || nList > QUERY_ENTRY_COUNT)
         return;
 
-    size_t nFieldSelPos = maFieldLbArr[nList-1]->GetSelectedEntryPos();
+    size_t nFieldSelPos = maFieldLbArr[nList-1]->get_active();
     if (!nFieldSelPos)
         return;
 
@@ -567,24 +528,24 @@ void ScFilterDlg::UpdateHdrInValueList( size_t nList )
     if (nPos == INVALID_HEADER_POS)
         return;
 
-    ComboBox* pValList = maValueEdArr[nList-1].get();
-    size_t nListPos = nPos + 2;                 // for "empty" and "non-empty"
+    weld::ComboBox* pValList = maValueEdArr[nList-1];
+    int nListPos = nPos + 2;                 // for "empty" and "non-empty"
 
     const ScTypedStrData& rHdrEntry = 
m_EntryLists[nColumn]->maFilterEntries.maStrData[nPos];
 
     const OUString& aHdrStr = rHdrEntry.GetString();
-    bool bWasThere = aHdrStr == pValList->GetEntry(nListPos);
-    bool bInclude = !pBtnHeader->IsChecked();
+    bool bWasThere = nListPos < pValList->get_count() && aHdrStr == 
pValList->get_text(nListPos);
+    bool bInclude = !m_xBtnHeader->get_active();
 
     if (bInclude)           // Include entry
     {
         if (!bWasThere)
-            pValList->InsertEntry(aHdrStr, nListPos);
+            pValList->insert_text(nListPos, aHdrStr);
     }
     else                    // Omit entry
     {
         if (bWasThere)
-            pValList->RemoveEntryAt(nListPos);
+            pValList->remove(nListPos);
     }
 }
 
@@ -592,11 +553,11 @@ void ScFilterDlg::ClearValueList( size_t nList )
 {
     if (nList > 0 && nList <= QUERY_ENTRY_COUNT)
     {
-        ComboBox* pValList = maValueEdArr[nList-1].get();
-        pValList->Clear();
-        pValList->InsertEntry( aStrNotEmpty, 0 );
-        pValList->InsertEntry( aStrEmpty, 1 );
-        pValList->SetText( EMPTY_OUSTRING );
+        weld::ComboBox* pValList = maValueEdArr[nList-1];
+        pValList->clear();
+        pValList->append_text( aStrNotEmpty );
+        pValList->append_text( aStrEmpty );
+        pValList->set_entry_text( EMPTY_OUSTRING );
     }
 }
 
@@ -614,14 +575,14 @@ ScQueryItem* ScFilterDlg::GetOutputItem()
     ScQueryParam    theParam( theQueryData );
     bool            bCopyPosOk = false;
 
-    if ( pBtnCopyResult->IsChecked() )
+    if ( m_xBtnCopyResult->get_active() )
     {
         ScRefFlags nResult = theCopyPos.Parse(
-            pEdCopyArea->GetText(), pDoc, pDoc->GetAddressConvention());
+            m_xEdCopyArea->GetText(), pDoc, pDoc->GetAddressConvention());
         bCopyPosOk = (nResult & ScRefFlags::VALID) == ScRefFlags::VALID;
     }
 
-    if ( pBtnCopyResult->IsChecked() && bCopyPosOk )
+    if ( m_xBtnCopyResult->get_active() && bCopyPosOk )
     {
         theParam.bInplace   = false;
         theParam.nDestTab   = theCopyPos.Tab();
@@ -636,12 +597,12 @@ ScQueryItem* ScFilterDlg::GetOutputItem()
         theParam.nDestRow   = 0;
     }
 
-    theParam.bHasHeader     = pBtnHeader->IsChecked();
+    theParam.bHasHeader     = m_xBtnHeader->get_active();
     theParam.bByRow         = true;
-    theParam.bDuplicate     = !pBtnUnique->IsChecked();
-    theParam.bCaseSens      = pBtnCase->IsChecked();
-    theParam.eSearchType    = pBtnRegExp->IsChecked() ? 
utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal;
-    theParam.bDestPers      = pBtnDestPers->IsChecked();
+    theParam.bDuplicate     = !m_xBtnUnique->get_active();
+    theParam.bCaseSens      = m_xBtnCase->get_active();
+    theParam.eSearchType    = m_xBtnRegExp->get_active() ? 
utl::SearchParam::SearchType::Regexp : utl::SearchParam::SearchType::Normal;
+    theParam.bDestPers      = m_xBtnDestPers->get_active();
 
     // only set the three - reset everything else
 
@@ -657,24 +618,24 @@ bool ScFilterDlg::IsRefInputMode() const
 
 // Handler:
 
-IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn, void )
+IMPL_LINK( ScFilterDlg, EndDlgHdl, weld::Button&, rBtn, void )
 {
-    if ( pBtn == pBtnOk )
+    if ( &rBtn == m_xBtnOk.get() )
     {
         bool bAreaInputOk = true;
 
-        if ( pBtnCopyResult->IsChecked() )
+        if ( m_xBtnCopyResult->get_active() )
         {
-            if ( !pOptionsMgr->VerifyPosStr( pEdCopyArea->GetText() ) )
+            if ( !pOptionsMgr->VerifyPosStr( m_xEdCopyArea->GetText() ) )
             {
-                if (!pExpander->get_expanded())
-                  pExpander->set_expanded(true);
+                if (!m_xExpander->get_expanded())
+                  m_xExpander->set_expanded(true);
 
-                std::unique_ptr<weld::MessageDialog> 
xBox(Application::CreateMessageDialog(GetFrameWeld(),
+                std::unique_ptr<weld::MessageDialog> 
xBox(Application::CreateMessageDialog(m_xDialog.get(),
                                                           
VclMessageType::Warning, VclButtonsType::Ok,
                                                           
ScResId(STR_INVALID_TABREF)));
                 xBox->run();
-                pEdCopyArea->GrabFocus();
+                m_xEdCopyArea->GrabFocus();
                 bAreaInputOk = false;
             }
         }
@@ -686,18 +647,18 @@ IMPL_LINK( ScFilterDlg, EndDlgHdl, Button*, pBtn, void )
             GetBindings().GetDispatcher()->ExecuteList(FID_FILTER_OK,
                                       SfxCallMode::SLOT | SfxCallMode::RECORD,
                                       { GetOutputItem() });
-            Close();
+            response(RET_OK);
         }
     }
-    else if ( pBtn == pBtnCancel )
+    else if ( &rBtn == m_xBtnCancel.get() )
     {
-        Close();
+        response(RET_CANCEL);
     }
 }
 
-IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, VclExpander&, void)
+IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, weld::Expander&, void)
 {
-    if ( pExpander->get_expanded() )
+    if ( m_xExpander->get_expanded() )
         pTimer->Start();
     else
     {
@@ -711,55 +672,53 @@ IMPL_LINK_NOARG(ScFilterDlg, MoreExpandedHdl, 
VclExpander&, void)
 IMPL_LINK( ScFilterDlg, TimeOutHdl, Timer*, _pTimer, void )
 {
     // Check if RefInputMode is still true every 50ms
+    if (_pTimer == pTimer.get() && m_xDialog->has_toplevel_focus())
+        bRefInputMode = (m_xEdCopyArea->GetWidget()->has_focus() || 
m_xRbCopyArea->GetWidget()->has_focus());
 
-    if( _pTimer == pTimer.get() && IsActive() )
-        bRefInputMode = (pEdCopyArea->HasFocus() || pRbCopyArea->HasFocus());
-
-    if ( pExpander->get_expanded() )
+    if ( m_xExpander->get_expanded() )
         pTimer->Start();
 }
 
-IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
+IMPL_LINK(ScFilterDlg, LbSelectHdl, weld::ComboBox&, rLb, void)
 {
     /*
      * Handle enable/disable logic depending on which ListBox was selected
      */
     sal_uInt16 nOffset = GetSliderPos();
 
-    if ( &rLb == pLbConnect1 )
+    if ( &rLb == m_xLbConnect1.get() )
     {
-        pLbField1->Enable();
-        pLbCond1->Enable();
-        pEdVal1->Enable();
+        m_xLbField1->set_sensitive(true);
+        m_xLbCond1->set_sensitive(true);
+        m_xEdVal1->set_sensitive(true);
 
-        const sal_Int32 nConnect1 = pLbConnect1->GetSelectedEntryPos();
+        const sal_Int32 nConnect1 = m_xLbConnect1->get_active();
         size_t nQE = nOffset;
         theQueryData.GetEntry(nQE).eConnect 
=static_cast<ScQueryConnect>(nConnect1);
         if (maRefreshExceptQuery.size() < nQE + 1)
             maRefreshExceptQuery.resize(nQE + 1, false);
         maRefreshExceptQuery[nQE] = true;
     }
-
-    else if ( &rLb == pLbConnect2 )
+    else if ( &rLb == m_xLbConnect2.get() )
     {
-        pLbField2->Enable();
-        pLbCond2->Enable();
-        pEdVal2->Enable();
+        m_xLbField2->set_sensitive(true);
+        m_xLbCond2->set_sensitive(true);
+        m_xEdVal2->set_sensitive(true);
 
-        const sal_Int32 nConnect2 = pLbConnect2->GetSelectedEntryPos();
+        const sal_Int32 nConnect2 = m_xLbConnect2->get_active();
         size_t nQE = 1+nOffset;
         theQueryData.GetEntry(nQE).eConnect 
=static_cast<ScQueryConnect>(nConnect2);
         if (maRefreshExceptQuery.size() < nQE + 1)
             maRefreshExceptQuery.resize(nQE + 1, false);
         maRefreshExceptQuery[nQE]=true;
     }
-    else if ( &rLb == pLbConnect3 )
+    else if ( &rLb == m_xLbConnect3.get() )
     {
-        pLbField3->Enable();
-        pLbCond3->Enable();
-        pEdVal3->Enable();
+        m_xLbField3->set_sensitive(true);
+        m_xLbCond3->set_sensitive(true);
+        m_xEdVal3->set_sensitive(true);
 
-        const sal_Int32 nConnect3 = pLbConnect3->GetSelectedEntryPos();
+        const sal_Int32 nConnect3 = m_xLbConnect3->get_active();
         size_t nQE = 2 + nOffset;
         theQueryData.GetEntry(nQE).eConnect = 
static_cast<ScQueryConnect>(nConnect3);
         if (maRefreshExceptQuery.size() < nQE + 1)
@@ -767,49 +726,49 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
         maRefreshExceptQuery[nQE] = true;
 
     }
-    else if ( &rLb == pLbConnect4 )
+    else if ( &rLb == m_xLbConnect4.get() )
     {
-        pLbField4->Enable();
-        pLbCond4->Enable();
-        pEdVal4->Enable();
+        m_xLbField4->set_sensitive(true);
+        m_xLbCond4->set_sensitive(true);
+        m_xEdVal4->set_sensitive(true);
 
-        const sal_Int32 nConnect4 = pLbConnect4->GetSelectedEntryPos();
+        const sal_Int32 nConnect4 = m_xLbConnect4->get_active();
         size_t nQE = 3 + nOffset;
         theQueryData.GetEntry(nQE).eConnect = 
static_cast<ScQueryConnect>(nConnect4);
         if (maRefreshExceptQuery.size() < nQE + 1)
             maRefreshExceptQuery.resize(nQE + 1, false);
         maRefreshExceptQuery[nQE] = true;
     }
-    else if ( &rLb == pLbField1 )
+    else if ( &rLb == m_xLbField1.get() )
     {
-        if ( pLbField1->GetSelectedEntryPos() == 0 )
+        if ( m_xLbField1->get_active() == 0 )
         {
-            pLbConnect2->SetNoSelection();
-            pLbConnect3->SetNoSelection();
-            pLbConnect4->SetNoSelection();
-            pLbField2->SelectEntryPos( 0 );
-            pLbField3->SelectEntryPos( 0 );
-            pLbField4->SelectEntryPos( 0 );
-            pLbCond2->SelectEntryPos( 0 );
-            pLbCond3->SelectEntryPos( 0 );
-            pLbCond4->SelectEntryPos( 0 );
+            m_xLbConnect2->set_active(-1);
+            m_xLbConnect3->set_active(-1);
+            m_xLbConnect4->set_active(-1);
+            m_xLbField2->set_active( 0 );
+            m_xLbField3->set_active( 0 );
+            m_xLbField4->set_active( 0 );
+            m_xLbCond2->set_active( 0 );
+            m_xLbCond3->set_active( 0 );
+            m_xLbCond4->set_active( 0 );
             ClearValueList( 1 );
             ClearValueList( 2 );
             ClearValueList( 3 );
             ClearValueList( 4 );
 
-            pLbConnect2->Disable();
-            pLbConnect3->Disable();
-            pLbConnect4->Disable();
-            pLbField2->Disable();
-            pLbField3->Disable();
-            pLbField4->Disable();
-            pLbCond2->Disable();
-            pLbCond3->Disable();
-            pLbCond4->Disable();
-            pEdVal2->Disable();
-            pEdVal3->Disable();
-            pEdVal4->Disable();
+            m_xLbConnect2->set_sensitive(false);
+            m_xLbConnect3->set_sensitive(false);
+            m_xLbConnect4->set_sensitive(false);
+            m_xLbField2->set_sensitive(false);
+            m_xLbField3->set_sensitive(false);
+            m_xLbField4->set_sensitive(false);
+            m_xLbCond2->set_sensitive(false);
+            m_xLbCond3->set_sensitive(false);
+            m_xLbCond4->set_sensitive(false);
+            m_xEdVal2->set_sensitive(false);
+            m_xEdVal3->set_sensitive(false);
+            m_xEdVal4->set_sensitive(false);
             SCSIZE nCount = theQueryData.GetEntryCount();
             if (maRefreshExceptQuery.size() < nCount + 1)
                 maRefreshExceptQuery.resize(nCount + 1, false);
@@ -824,37 +783,37 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
         else
         {
             UpdateValueList( 1 );
-            if ( !pLbConnect2->IsEnabled() )
+            if ( !m_xLbConnect2->get_sensitive() )
             {
-                pLbConnect2->Enable();
+                m_xLbConnect2->set_sensitive(true);
             }
             theQueryData.GetEntry(nOffset).bDoQuery = true;
-            const sal_Int32 nField  = rLb.GetSelectedEntryPos();
+            const sal_Int32 nField  = rLb.get_active();
             theQueryData.GetEntry(nOffset).nField = theQueryData.nCol1 + 
static_cast<SCCOL>(nField) - 1 ;
         }
     }
-    else if ( &rLb == pLbField2 )
+    else if ( &rLb == m_xLbField2.get() )
     {
-        if ( pLbField2->GetSelectedEntryPos() == 0 )
+        if ( m_xLbField2->get_active() == 0 )
         {
-            pLbConnect3->SetNoSelection();
-            pLbConnect4->SetNoSelection();
-            pLbField3->SelectEntryPos( 0 );
-            pLbField4->SelectEntryPos( 0 );
-            pLbCond3->SelectEntryPos( 0 );
-            pLbCond4->SelectEntryPos( 0 );
+            m_xLbConnect3->set_active(-1);
+            m_xLbConnect4->set_active(-1);
+            m_xLbField3->set_active( 0 );
+            m_xLbField4->set_active( 0 );
+            m_xLbCond3->set_active( 0 );
+            m_xLbCond4->set_active( 0 );
             ClearValueList( 2 );
             ClearValueList( 3 );
             ClearValueList( 4 );
 
-            pLbConnect3->Disable();
-            pLbConnect4->Disable();
-            pLbField3->Disable();
-            pLbField4->Disable();
-            pLbCond3->Disable();
-            pLbCond4->Disable();
-            pEdVal3->Disable();
-            pEdVal4->Disable();
+            m_xLbConnect3->set_sensitive(false);
+            m_xLbConnect4->set_sensitive(false);
+            m_xLbField3->set_sensitive(false);
+            m_xLbField4->set_sensitive(false);
+            m_xLbCond3->set_sensitive(false);
+            m_xLbCond4->set_sensitive(false);
+            m_xEdVal3->set_sensitive(false);
+            m_xEdVal4->set_sensitive(false);
 
             sal_uInt16 nTemp=nOffset+1;
             SCSIZE nCount = theQueryData.GetEntryCount();
@@ -871,30 +830,30 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
         else
         {
             UpdateValueList( 2 );
-            if ( !pLbConnect3->IsEnabled() )
+            if ( !m_xLbConnect3->get_sensitive() )
             {
-                pLbConnect3->Enable();
+                m_xLbConnect3->set_sensitive(true);
             }
-            const sal_Int32 nField = rLb.GetSelectedEntryPos();
+            const sal_Int32 nField = rLb.get_active();
             sal_uInt16 nQ=1+nOffset;
             theQueryData.GetEntry(nQ).bDoQuery = true;
             theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + 
static_cast<SCCOL>(nField) - 1 ;
         }
     }
-    else if ( &rLb == pLbField3 )
+    else if ( &rLb == m_xLbField3.get() )
     {
-        if ( pLbField3->GetSelectedEntryPos() == 0 )
+        if ( m_xLbField3->get_active() == 0 )
         {
-            pLbConnect4->SetNoSelection();
-            pLbField4->SelectEntryPos( 0 );
-            pLbCond4->SelectEntryPos( 0 );
+            m_xLbConnect4->set_active(-1);
+            m_xLbField4->set_active( 0 );
+            m_xLbCond4->set_active( 0 );
             ClearValueList( 3 );
             ClearValueList( 4 );
 
-            pLbConnect4->Disable();
-            pLbField4->Disable();
-            pLbCond4->Disable();
-            pEdVal4->Disable();
+            m_xLbConnect4->set_sensitive(false);
+            m_xLbField4->set_sensitive(false);
+            m_xLbCond4->set_sensitive(false);
+            m_xEdVal4->set_sensitive(false);
 
             sal_uInt16 nTemp=nOffset+2;
             SCSIZE nCount = theQueryData.GetEntryCount();
@@ -911,21 +870,21 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
         else
         {
             UpdateValueList( 3 );
-            if ( !pLbConnect4->IsEnabled() )
+            if ( !m_xLbConnect4->get_sensitive() )
             {
-                pLbConnect4->Enable();
+                m_xLbConnect4->set_sensitive(true);
             }
 
-            const sal_Int32 nField = rLb.GetSelectedEntryPos();
+            const sal_Int32 nField = rLb.get_active();
             sal_uInt16 nQ=2+nOffset;
             theQueryData.GetEntry(nQ).bDoQuery = true;
             theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + 
static_cast<SCCOL>(nField) - 1 ;
 
         }
     }
-    else if ( &rLb == pLbField4 )
+    else if ( &rLb == m_xLbField4.get() )
     {
-        if ( pLbField4->GetSelectedEntryPos() == 0 )
+        if ( m_xLbField4->get_active() == 0 )
         {
             ClearValueList( 4 );
             sal_uInt16 nTemp=nOffset+3;
@@ -943,35 +902,35 @@ IMPL_LINK( ScFilterDlg, LbSelectHdl, ListBox&, rLb, void )
         else
         {
             UpdateValueList( 4 );
-            const sal_Int32 nField = rLb.GetSelectedEntryPos();
+            const sal_Int32 nField = rLb.get_active();
             sal_uInt16 nQ=3+nOffset;
             theQueryData.GetEntry(nQ).bDoQuery = true;
             theQueryData.GetEntry(nQ).nField = theQueryData.nCol1 + 
static_cast<SCCOL>(nField) - 1 ;
         }
 
     }
-    else if ( &rLb == pLbCond1)
+    else if ( &rLb == m_xLbCond1.get())
     {
-        
theQueryData.GetEntry(nOffset).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos());
+        
theQueryData.GetEntry(nOffset).eOp=static_cast<ScQueryOp>(rLb.get_active());
     }
-    else if ( &rLb == pLbCond2)
+    else if ( &rLb == m_xLbCond2.get())
     {
         sal_uInt16 nQ=1+nOffset;
-        
theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos());
+        theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active());
     }
-    else if ( &rLb == pLbCond3)
+    else if ( &rLb == m_xLbCond3.get())
     {
         sal_uInt16 nQ=2+nOffset;
-        
theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos());
+        theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active());
     }
     else
     {
         sal_uInt16 nQ=3+nOffset;
-        
theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.GetSelectedEntryPos());
+        theQueryData.GetEntry(nQ).eOp=static_cast<ScQueryOp>(rLb.get_active());
     }
 }
 
-IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void )
+IMPL_LINK( ScFilterDlg, CheckBoxHdl, weld::Button&, rBox, void )
 {
     //  Column headers:
     //      Field list: Columnxx <-> column header string
@@ -979,17 +938,17 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void )
     //  Upper/lower case:
     //      Value list: completely new
 
-    if ( pBox == pBtnHeader )              // Field list and value list
+    if ( &rBox == m_xBtnHeader.get() )              // Field list and value 
list
     {
-        const sal_Int32 nCurSel1 = pLbField1->GetSelectedEntryPos();
-        const sal_Int32 nCurSel2 = pLbField2->GetSelectedEntryPos();
-        const sal_Int32 nCurSel3 = pLbField3->GetSelectedEntryPos();
-        const sal_Int32 nCurSel4 = pLbField4->GetSelectedEntryPos();
+        const sal_Int32 nCurSel1 = m_xLbField1->get_active();
+        const sal_Int32 nCurSel2 = m_xLbField2->get_active();
+        const sal_Int32 nCurSel3 = m_xLbField3->get_active();
+        const sal_Int32 nCurSel4 = m_xLbField4->get_active();
         FillFieldLists();
-        pLbField1->SelectEntryPos( nCurSel1 );
-        pLbField2->SelectEntryPos( nCurSel2 );
-        pLbField3->SelectEntryPos( nCurSel3 );
-        pLbField4->SelectEntryPos( nCurSel4 );
+        m_xLbField1->set_active( nCurSel1 );
+        m_xLbField2->set_active( nCurSel2 );
+        m_xLbField3->set_active( nCurSel3 );
+        m_xLbField4->set_active( nCurSel4 );
 
         UpdateHdrInValueList( 1 );
         UpdateHdrInValueList( 2 );
@@ -997,7 +956,7 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void )
         UpdateHdrInValueList( 4 );
     }
 
-    if ( pBox == pBtnCase )            // Complete value list
+    if ( &rBox == m_xBtnCase.get() )            // Complete value list
     {
         m_EntryLists.clear();
         UpdateValueList( 1 );       // current text is recorded
@@ -1007,43 +966,43 @@ IMPL_LINK( ScFilterDlg, CheckBoxHdl, Button*, pBox, void 
)
     }
 }
 
-IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void )
+IMPL_LINK( ScFilterDlg, ValModifyHdl, weld::ComboBox&, rEd, void )
 {
     size_t nOffset = GetSliderPos();
     size_t i = 0;
     size_t nQE = i + nOffset;
-    OUString aStrVal = rEd.GetText();
-    ListBox*  pLbCond   = pLbCond1;
-    ListBox*  pLbField  = pLbField1;
-    if ( &rEd == pEdVal2 )
+    OUString aStrVal = rEd.get_active_text();
+    weld::ComboBox*  pLbCond   = m_xLbCond1.get();
+    weld::ComboBox*  pLbField  = m_xLbField1.get();
+    if ( &rEd == m_xEdVal2.get() )
     {
-        pLbCond  = pLbCond2;
-        pLbField = pLbField2;
+        pLbCond  = m_xLbCond2.get();
+        pLbField = m_xLbField2.get();
         i=1;
         nQE=i+nOffset;
     }
-    if ( &rEd == pEdVal3 )
+    if ( &rEd == m_xEdVal3.get() )
     {
-        pLbCond = pLbCond3;
-        pLbField = pLbField3;
+        pLbCond = m_xLbCond3.get();
+        pLbField = m_xLbField3.get();
         i=2;
         nQE=i+nOffset;
     }
-    if ( &rEd == pEdVal4 )
+    if ( &rEd == m_xEdVal4.get() )
     {
-        pLbCond = pLbCond4;
-        pLbField = pLbField4;
+        pLbCond = m_xLbCond4.get();
+        pLbField = m_xLbField4.get();
         i=3;
         nQE=i+nOffset;
     }
 
     if ( aStrEmpty == aStrVal || aStrNotEmpty == aStrVal )
     {
-        pLbCond->SelectEntry(OUString('='));
-        pLbCond->Disable();
+        pLbCond->set_active_text(OUString('='));
+        pLbCond->set_sensitive(false);
     }
     else
-        pLbCond->Enable();
+        pLbCond->set_sensitive(true);
 
     if (maHasDates.size() < nQE + 1)
         maHasDates.resize(nQE + 1, false);
@@ -1052,7 +1011,7 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void )
 
     ScQueryEntry& rEntry = theQueryData.GetEntry( nQE );
     ScQueryEntry::Item& rItem = rEntry.GetQueryItem();
-    bool bDoThis = (pLbField->GetSelectedEntryPos() != 0);
+    bool bDoThis = (pLbField->get_active() != 0);
     rEntry.bDoQuery = bDoThis;
 
     if ( rEntry.bDoQuery || maRefreshExceptQuery[nQE] )
@@ -1079,18 +1038,18 @@ IMPL_LINK( ScFilterDlg, ValModifyHdl, Edit&, rEd, void )
             rItem.meType = bNumber ? ScQueryEntry::ByValue : 
ScQueryEntry::ByString;
         }
 
-        const sal_Int32 nField = pLbField->GetSelectedEntryPos();
+        const sal_Int32 nField = pLbField->get_active();
         rEntry.nField = nField ? (theQueryData.nCol1 +
             static_cast<SCCOL>(nField) - 1) : static_cast<SCCOL>(0);
 
-        ScQueryOp eOp  = 
static_cast<ScQueryOp>(pLbCond->GetSelectedEntryPos());
+        ScQueryOp eOp  = static_cast<ScQueryOp>(pLbCond->get_active());
         rEntry.eOp     = eOp;
         if (maHasDates[nQE] && !bByEmptyOrNotByEmpty)
             rItem.meType = ScQueryEntry::ByDate;
     }
 }
 
-IMPL_LINK_NOARG(ScFilterDlg, ScrollHdl, ScrollBar*, void)
+IMPL_LINK_NOARG(ScFilterDlg, ScrollHdl, weld::ScrolledWindow&, void)
 {
     SliderMoved();
 }
@@ -1103,15 +1062,15 @@ void ScFilterDlg::SliderMoved()
 
 size_t ScFilterDlg::GetSliderPos()
 {
-    return static_cast<size_t>(pScrollBar->GetThumbPos());
+    return static_cast<size_t>(m_xScrollBar->vadjustment_get_value());
 }
 
 void ScFilterDlg::RefreshEditRow( size_t nOffset )
 {
     if (nOffset==0)
-        maConnLbArr[0]->Hide();
+        maConnLbArr[0]->hide();
     else
-        maConnLbArr[0]->Show();
+        maConnLbArr[0]->show();
 
     for (size_t i = 0; i < QUERY_ENTRY_COUNT; ++i)
     {
@@ -1135,51 +1094,51 @@ void ScFilterDlg::RefreshEditRow( size_t nOffset )
             if (rEntry.IsQueryByEmpty())
             {
                 aValStr = aStrEmpty;
-                maCondLbArr[i]->Disable();
+                maCondLbArr[i]->set_sensitive(false);
             }
             else if (rEntry.IsQueryByNonEmpty())
             {
                 aValStr = aStrNotEmpty;
-                maCondLbArr[i]->Disable();
+                maCondLbArr[i]->set_sensitive(false);
             }
             else
             {
                 aValStr = aQueryStr;
-                maCondLbArr[i]->Enable();
+                maCondLbArr[i]->set_sensitive(true);
             }
-            maFieldLbArr[i]->Enable();
-            maValueEdArr[i]->Enable();
+            maFieldLbArr[i]->set_sensitive(true);
+            maValueEdArr[i]->set_sensitive(true);
 
             if (nOffset==0)
             {
                 if (i<3)
                 {
                     if(rEntry.bDoQuery)
-                        maConnLbArr[i+1]->Enable();
+                        maConnLbArr[i+1]->set_sensitive(true);
                     else
-                        maConnLbArr[i+1]->Disable();
+                        maConnLbArr[i+1]->set_sensitive(false);
                     size_t nQENext = nQE + 1;
                     if (maRefreshExceptQuery.size() < nQENext + 1)
                         maRefreshExceptQuery.resize(nQENext + 1, false);
                     if (theQueryData.GetEntry(nQENext).bDoQuery || 
maRefreshExceptQuery[nQENext])
-                        maConnLbArr[i+1]->SelectEntryPos( 
static_cast<sal_uInt16>(theQueryData.GetEntry(nQENext).eConnect) );
+                        maConnLbArr[i+1]->set_active( 
static_cast<sal_uInt16>(theQueryData.GetEntry(nQENext).eConnect) );
                     else
-                        maConnLbArr[i+1]->SetNoSelection();
+                        maConnLbArr[i+1]->set_active(-1);
                 }
             }
             else
             {
                 if(theQueryData.GetEntry( nQE-1).bDoQuery)
-                    maConnLbArr[i]->Enable();
+                    maConnLbArr[i]->set_sensitive(true);
                 else
-                    maConnLbArr[i]->Disable();
+                    maConnLbArr[i]->set_sensitive(false);
 
                 if (maRefreshExceptQuery.size() < nQE + 1)
                     maRefreshExceptQuery.resize(nQE + 1, false);
                 if(rEntry.bDoQuery || maRefreshExceptQuery[nQE])
-                    maConnLbArr[i]->SelectEntryPos( 
static_cast<sal_uInt16>(rEntry.eConnect) );
+                    maConnLbArr[i]->set_active( 
static_cast<sal_uInt16>(rEntry.eConnect) );
                 else
-                    maConnLbArr[i]->SetNoSelection();
+                    maConnLbArr[i]->set_active(-1);
             }
 
         }
@@ -1189,25 +1148,25 @@ void ScFilterDlg::RefreshEditRow( size_t nOffset )
             {
                 if(i<3)
                 {
-                    maConnLbArr[i+1]->SetNoSelection();
-                    maConnLbArr[i+1]->Disable();
+                    maConnLbArr[i+1]->set_active(-1);
+                    maConnLbArr[i+1]->set_sensitive(false);
                 }
             }
             else
             {
                 if(theQueryData.GetEntry( nQE-1).bDoQuery)
-                    maConnLbArr[i]->Enable();
+                    maConnLbArr[i]->set_sensitive(true);
                 else
-                    maConnLbArr[i]->Disable();
-                maConnLbArr[i]->SetNoSelection();
+                    maConnLbArr[i]->set_sensitive(false);
+                maConnLbArr[i]->set_active(-1);
             }
-            maFieldLbArr[i]->Disable();
-            maCondLbArr[i]->Disable();
-            maValueEdArr[i]->Disable();
+            maFieldLbArr[i]->set_sensitive(false);
+            maCondLbArr[i]->set_sensitive(false);
+            maValueEdArr[i]->set_sensitive(false);
         }
-        maFieldLbArr[i]->SelectEntryPos( nFieldSelPos );
-        maCondLbArr [i]->SelectEntryPos( nCondPos );
-        maValueEdArr[i]->SetText( aValStr );
+        maFieldLbArr[i]->set_active( nFieldSelPos );
+        maCondLbArr [i]->set_active( nCondPos );
+        maValueEdArr[i]->set_entry_text( aValStr );
         UpdateValueList(i+1);
     }
 }
diff --git a/sc/source/ui/dbgui/foptmgr.cxx b/sc/source/ui/dbgui/foptmgr.cxx
index 1449504d444e..47e0274a6aec 100644
--- a/sc/source/ui/dbgui/foptmgr.cxx
+++ b/sc/source/ui/dbgui/foptmgr.cxx
@@ -66,6 +66,41 @@ ScFilterOptionsMgr::ScFilterOptionsMgr(
     Init();
 }
 
+FilterOptionsMgr::FilterOptionsMgr(
+                                ScViewData*         ptrViewData,
+                                const ScQueryParam& refQueryData,
+                                weld::CheckButton* refBtnCase,
+                                weld::CheckButton* refBtnRegExp,
+                                weld::CheckButton* refBtnHeader,
+                                weld::CheckButton* refBtnUnique,
+                                weld::CheckButton* refBtnCopyResult,
+                                weld::CheckButton* refBtnDestPers,
+                                weld::ComboBox* refLbCopyArea,
+                                formula::WeldRefEdit* refEdCopyArea,
+                                formula::WeldRefButton* refRbCopyArea,
+                                weld::Label* refFtDbAreaLabel,
+                                weld::Label* refFtDbArea,
+                                const OUString&     refStrUndefined )
+
+    :   pViewData       ( ptrViewData ),
+        pDoc            ( ptrViewData ? ptrViewData->GetDocument() : nullptr ),
+        pBtnCase        ( refBtnCase ),
+        pBtnRegExp      ( refBtnRegExp ),
+        pBtnHeader      ( refBtnHeader ),
+        pBtnUnique      ( refBtnUnique ),
+        pBtnCopyResult  ( refBtnCopyResult ),
+        pBtnDestPers    ( refBtnDestPers ),
+        pLbCopyArea      ( refLbCopyArea ),
+        pEdCopyArea      ( refEdCopyArea ),
+        pRbCopyArea      ( refRbCopyArea ),
+        pFtDbAreaLabel  ( refFtDbAreaLabel ),
+        pFtDbArea       ( refFtDbArea ),
+        rStrUndefined   ( refStrUndefined ),
+        rQueryData      ( refQueryData )
+{
+    Init();
+}
+
 ScFilterOptionsMgr::~ScFilterOptionsMgr()
 {
     const sal_Int32 nEntries = pLbCopyArea->GetEntryCount();
@@ -74,6 +109,10 @@ ScFilterOptionsMgr::~ScFilterOptionsMgr()
         delete static_cast<OUString*>(pLbCopyArea->GetEntryData( i ));
 }
 
+FilterOptionsMgr::~FilterOptionsMgr()
+{
+}
+
 void ScFilterOptionsMgr::Init()
 {
 //moggi:TODO
@@ -193,6 +232,121 @@ void ScFilterOptionsMgr::Init()
         pEdCopyArea->SetText( EMPTY_OUSTRING );
 }
 
+void FilterOptionsMgr::Init()
+{
+//moggi:TODO
+    OSL_ENSURE( pViewData && pDoc, "Init failed :-/" );
+
+    pLbCopyArea->connect_changed( LINK( this, FilterOptionsMgr, LbAreaSelHdl ) 
);
+    pEdCopyArea->SetModifyHdl  ( LINK( this, FilterOptionsMgr, EdAreaModifyHdl 
) );
+    pBtnCopyResult->connect_toggled( LINK( this, FilterOptionsMgr, 
BtnCopyResultHdl ) );
+
+    pBtnCase->set_active( rQueryData.bCaseSens );
+    pBtnHeader->set_active( rQueryData.bHasHeader );
+    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,
+                                                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(ScRefFlags::RANGE_ABS_3D, pDoc, 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);
+        }
+
+        pBtnDestPers->set_active(true);         // always on when called
+        pLbCopyArea->set_active( 0 );
+        pEdCopyArea->SetText( EMPTY_OUSTRING );
+
+        /*
+         * Check whether the transferred area is a database area:
+         */
+
+        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 ( pDBData )
+            {
+                pBtnHeader->set_active( pDBData->HasHeader() );
+                theDbName = pDBData->GetName();
+
+                pBtnHeader->set_sensitive(theDbName == STR_DB_LOCAL_NONAME);
+            }
+        }
+
+        if ( theDbName != STR_DB_LOCAL_NONAME )
+        {
+            theDbArea += " (" + theDbName + ")";
+
+            pFtDbArea->set_label( theDbArea );
+        }
+        else
+        {
+            pFtDbAreaLabel->set_label( OUString() );
+            pFtDbArea->set_label( OUString() );
+        }
+
+        // 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( EMPTY_OUSTRING );
+            pLbCopyArea->set_sensitive(false);
+            pEdCopyArea->GetWidget()->set_sensitive(false);
+            pRbCopyArea->GetWidget()->set_sensitive(false);
+            pBtnDestPers->set_sensitive(false);
+        }
+    }
+    else
+        pEdCopyArea->SetText( EMPTY_OUSTRING );
+}
+
+
 bool ScFilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const
 {
     OUString aPosStr( rPosStr );
@@ -206,6 +360,19 @@ bool ScFilterOptionsMgr::VerifyPosStr( const OUString& 
rPosStr ) const
     return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID;
 }
 
+bool FilterOptionsMgr::VerifyPosStr( const OUString& rPosStr ) const
+{
+    OUString aPosStr( rPosStr );
+    sal_Int32 nColonPos = aPosStr.indexOf( ':' );
+
+    if ( -1 != nColonPos )
+        aPosStr = aPosStr.copy( 0, nColonPos );
+
+    ScRefFlags nResult = ScAddress().Parse( aPosStr, pDoc, 
pDoc->GetAddressConvention() );
+
+    return (nResult & ScRefFlags::VALID) == ScRefFlags::VALID;
+}
+
 // Handler:
 
 IMPL_LINK( ScFilterOptionsMgr, LbAreaSelHdl, ListBox&, rLb, void )
@@ -222,6 +389,21 @@ IMPL_LINK( ScFilterOptionsMgr, LbAreaSelHdl, ListBox&, 
rLb, void )
     }
 }
 
+IMPL_LINK( FilterOptionsMgr, LbAreaSelHdl, weld::ComboBox&, rLb, void )
+{
+    if ( &rLb == pLbCopyArea )
+    {
+        OUString aString;
+        const sal_Int32 nSelPos = pLbCopyArea->get_active();
+
+        if ( nSelPos > 0 )
+            aString = pLbCopyArea->get_id(nSelPos);
+
+        pEdCopyArea->SetText( aString );
+    }
+}
+
+
 IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, Edit&, rEd, void )
 {
     if ( &rEd == pEdCopyArea )
@@ -248,6 +430,32 @@ IMPL_LINK( ScFilterOptionsMgr, EdAreaModifyHdl, Edit&, 
rEd, void )
     }
 }
 
+IMPL_LINK( FilterOptionsMgr, EdAreaModifyHdl, formula::WeldRefEdit&, rEd, void 
)
+{
+    if ( &rEd == pEdCopyArea )
+    {
+        OUString  theCurPosStr = rEd.GetText();
+        ScRefFlags  nResult = ScAddress().Parse( theCurPosStr, pDoc, 
pDoc->GetAddressConvention() );
+
+        if ( (nResult & ScRefFlags::VALID) == ScRefFlags::VALID)
+        {
+            const sal_Int32 nCount = pLbCopyArea->get_count();
+
+            for ( sal_Int32 i=2; i<nCount; ++i )
+            {
+                OUString aStr = pLbCopyArea->get_id(i);
+                if (theCurPosStr == aStr)
+                {
+                    pLbCopyArea->set_active( i );
+                    return;
+                }
+            }
+
+        }
+        pLbCopyArea->set_active( 0 );
+    }
+}
+
 IMPL_LINK( ScFilterOptionsMgr, BtnCopyResultHdl, CheckBox&, rBox, void )
 {
     if ( &rBox == pBtnCopyResult )
@@ -270,4 +478,26 @@ IMPL_LINK( ScFilterOptionsMgr, BtnCopyResultHdl, 
CheckBox&, rBox, void )
     }
 }
 
+IMPL_LINK( FilterOptionsMgr, BtnCopyResultHdl, weld::ToggleButton&, rBox, void 
)
+{
+    if ( &rBox == pBtnCopyResult )
+    {
+        if ( rBox.get_active() )
+        {
+            pBtnDestPers->set_sensitive(true);
+            pLbCopyArea->set_sensitive(true);
+            pEdCopyArea->GetWidget()->set_sensitive(true);
+            pRbCopyArea->GetWidget()->set_sensitive(true);
+            pEdCopyArea->GrabFocus();
+        }
+        else
+        {
+            pBtnDestPers->set_sensitive(false);
+            pLbCopyArea->set_sensitive(false);
+            pEdCopyArea->GetWidget()->set_sensitive(false);
+            pRbCopyArea->GetWidget()->set_sensitive(false);
+        }
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/filtdlg.hxx b/sc/source/ui/inc/filtdlg.hxx
index 5a2ab1542c34..74e87b1cf12b 100644
--- a/sc/source/ui/inc/filtdlg.hxx
+++ b/sc/source/ui/inc/filtdlg.hxx
@@ -34,11 +34,12 @@
 #include <map>
 
 class ScFilterOptionsMgr;
+class FilterOptionsMgr;
 class ScViewData;
 class ScDocument;
 class ScQueryItem;
 
-class ScFilterDlg : public ScAnyRefDlg
+class ScFilterDlg : public ScAnyRefDlgController
 {
     struct EntryList
     {
@@ -52,59 +53,21 @@ class ScFilterDlg : public ScAnyRefDlg
     };
     typedef std::map<SCCOL, std::unique_ptr<EntryList>> EntryListsMap;
 public:
-                    ScFilterDlg( SfxBindings* pB, SfxChildWindow* pCW, 
vcl::Window* pParent,
-                                 const SfxItemSet&  rArgSet );
-                    virtual ~ScFilterDlg() override;
-    virtual void    dispose() override;
+    ScFilterDlg(SfxBindings* pB, SfxChildWindow* pCW, weld::Window* pParent,
+                const SfxItemSet& rArgSet);
+    virtual ~ScFilterDlg() override;
 
     virtual void    SetReference( const ScRange& rRef, ScDocument* pDoc ) 
override;
 
     virtual bool    IsRefInputMode() const override;
     virtual void    SetActive() override;
 
-    virtual bool    Close() override;
+    virtual void    Close() override;
     void            SliderMoved();
     size_t          GetSliderPos();
     void            RefreshEditRow( size_t nOffset );
 
 private:
-    VclPtr<ListBox>         pLbConnect1;
-    VclPtr<ListBox>         pLbField1;
-    VclPtr<ListBox>         pLbCond1;
-    VclPtr<ComboBox>        pEdVal1;
-
-    VclPtr<ListBox>         pLbConnect2;
-    VclPtr<ListBox>         pLbField2;
-    VclPtr<ListBox>         pLbCond2;
-    VclPtr<ComboBox>        pEdVal2;
-
-    VclPtr<ListBox>         pLbConnect3;
-    VclPtr<ListBox>         pLbField3;
-    VclPtr<ListBox>         pLbCond3;
-    VclPtr<ComboBox>        pEdVal3;
-
-    VclPtr<ListBox>         pLbConnect4;
-    VclPtr<ListBox>         pLbField4;
-    VclPtr<ListBox>         pLbCond4;
-    VclPtr<ComboBox>        pEdVal4;
-
-    VclPtr<ScrollBar>       pScrollBar;
-    VclPtr<VclExpander>     pExpander;
-
-    VclPtr<OKButton>        pBtnOk;
-    VclPtr<CancelButton>    pBtnCancel;
-
-    VclPtr<CheckBox>        pBtnCase;
-    VclPtr<CheckBox>        pBtnRegExp;
-    VclPtr<CheckBox>        pBtnHeader;
-    VclPtr<CheckBox>        pBtnUnique;
-    VclPtr<CheckBox>        pBtnCopyResult;
-    VclPtr<ListBox>         pLbCopyArea;
-    VclPtr<formula::RefEdit> pEdCopyArea;
-    VclPtr<formula::RefButton> pRbCopyArea;
-    VclPtr<CheckBox>        pBtnDestPers;
-    VclPtr<FixedText>       pFtDbAreaLabel;
-    VclPtr<FixedText>       pFtDbArea;
     const OUString aStrUndefined;
     const OUString aStrNone;
 
@@ -112,7 +75,7 @@ private:
     const OUString aStrNotEmpty;
     const OUString aStrColumn;
 
-    std::unique_ptr<ScFilterOptionsMgr> pOptionsMgr;
+    std::unique_ptr<FilterOptionsMgr> pOptionsMgr;
 
     const sal_uInt16        nWhichQuery;
     ScQueryParam        theQueryData;
@@ -121,10 +84,10 @@ private:
     ScDocument*         pDoc;
     SCTAB               nSrcTab;
 
-    std::vector<VclPtr<ComboBox>> maValueEdArr;
-    std::vector<VclPtr<ListBox>>  maFieldLbArr;
-    std::vector<VclPtr<ListBox>>  maCondLbArr;
-    std::vector<VclPtr<ListBox>>  maConnLbArr;
+    std::vector<weld::ComboBox*> maValueEdArr;
+    std::vector<weld::ComboBox*> maFieldLbArr;
+    std::vector<weld::ComboBox*> maCondLbArr;
+    std::vector<weld::ComboBox*> maConnLbArr;
 
     std::deque<bool>   maHasDates;
     std::deque<bool>   maRefreshExceptQuery;
@@ -135,6 +98,45 @@ private:
     // Hack: RefInput control
     std::unique_ptr<Timer>  pTimer;
 
+    std::unique_ptr<weld::ComboBox> m_xLbConnect1;
+    std::unique_ptr<weld::ComboBox> m_xLbField1;
+    std::unique_ptr<weld::ComboBox> m_xLbCond1;
+    std::unique_ptr<weld::ComboBox> m_xEdVal1;
+
+    std::unique_ptr<weld::ComboBox> m_xLbConnect2;
+    std::unique_ptr<weld::ComboBox> m_xLbField2;
+    std::unique_ptr<weld::ComboBox> m_xLbCond2;
+    std::unique_ptr<weld::ComboBox> m_xEdVal2;
+
+    std::unique_ptr<weld::ComboBox> m_xLbConnect3;
+    std::unique_ptr<weld::ComboBox> m_xLbField3;
+    std::unique_ptr<weld::ComboBox> m_xLbCond3;
+    std::unique_ptr<weld::ComboBox> m_xEdVal3;
+
+    std::unique_ptr<weld::ComboBox> m_xLbConnect4;
+    std::unique_ptr<weld::ComboBox> m_xLbField4;
+    std::unique_ptr<weld::ComboBox> m_xLbCond4;
+    std::unique_ptr<weld::ComboBox> m_xEdVal4;
+
+    std::unique_ptr<weld::Widget> m_xContents;
+    std::unique_ptr<weld::ScrolledWindow> m_xScrollBar;
+    std::unique_ptr<weld::Expander> m_xExpander;
+
+    std::unique_ptr<weld::Button> m_xBtnOk;
+    std::unique_ptr<weld::Button> m_xBtnCancel;
+
+    std::unique_ptr<weld::CheckButton> m_xBtnCase;
+    std::unique_ptr<weld::CheckButton> m_xBtnRegExp;
+    std::unique_ptr<weld::CheckButton> m_xBtnHeader;
+    std::unique_ptr<weld::CheckButton> m_xBtnUnique;
+    std::unique_ptr<weld::CheckButton> m_xBtnCopyResult;
+    std::unique_ptr<weld::ComboBox> m_xLbCopyArea;
+    std::unique_ptr<formula::WeldRefEdit> m_xEdCopyArea;
+    std::unique_ptr<formula::WeldRefButton> m_xRbCopyArea;
+    std::unique_ptr<weld::CheckButton> m_xBtnDestPers;
+    std::unique_ptr<weld::Label> m_xFtDbAreaLabel;
+    std::unique_ptr<weld::Label> m_xFtDbArea;
+
 private:
     void            Init            ( const SfxItemSet& rArgSet );
     void            FillFieldLists  ();
@@ -145,12 +147,12 @@ private:
     ScQueryItem*    GetOutputItem   ();
 
     // Handler:
-    DECL_LINK( LbSelectHdl,  ListBox&, void );
-    DECL_LINK( ValModifyHdl, Edit&, void );
-    DECL_LINK( CheckBoxHdl,  Button*, void );
-    DECL_LINK( EndDlgHdl,    Button*, void );
-    DECL_LINK( ScrollHdl, ScrollBar*, void );
-    DECL_LINK( MoreExpandedHdl, VclExpander&, void );
+    DECL_LINK( LbSelectHdl,  weld::ComboBox&, void );
+    DECL_LINK( ValModifyHdl, weld::ComboBox&, void );
+    DECL_LINK( CheckBoxHdl,  weld::Button&, void );
+    DECL_LINK( EndDlgHdl,    weld::Button&, void );
+    DECL_LINK( ScrollHdl, weld::ScrolledWindow&, void );
+    DECL_LINK( MoreExpandedHdl, weld::Expander&, void );
 
     // Hack: RefInput control
     DECL_LINK( TimeOutHdl, Timer*, void );
diff --git a/sc/source/ui/inc/foptmgr.hxx b/sc/source/ui/inc/foptmgr.hxx
index eddfc10d2491..b8ac4d170a44 100644
--- a/sc/source/ui/inc/foptmgr.hxx
+++ b/sc/source/ui/inc/foptmgr.hxx
@@ -27,6 +27,8 @@
 namespace formula
 {
     class RefButton;
+    class WeldRefButton;
+    class WeldRefEdit;
 }
 struct ScQueryParam;
 class ScDocument;
@@ -81,6 +83,56 @@ private:
     DECL_LINK( BtnCopyResultHdl,    CheckBox&, void );
 };
 
+class FilterOptionsMgr
+{
+public:
+    FilterOptionsMgr(ScViewData* ptrViewData,
+                     const ScQueryParam& refQueryData,
+                     weld::CheckButton*  refBtnCase,
+                     weld::CheckButton* refBtnRegExp,
+                     weld::CheckButton* refBtnHeader,
+                     weld::CheckButton* refBtnUnique,
+                     weld::CheckButton* refBtnCopyResult,
+                     weld::CheckButton* refBtnDestPers,
+                     weld::ComboBox* refLbCopyArea,
+                     formula::WeldRefEdit* refEdCopyArea,
+                     formula::WeldRefButton* refRbCopyArea,
+                     weld::Label* refFtDbAreaLabel,
+                     weld::Label* refFtDbArea,
+                     const OUString& refStrUndefined );
+    ~FilterOptionsMgr();
+    bool    VerifyPosStr ( const OUString& rPosStr ) const;
+
+private:
+    ScViewData* const     pViewData;
+    ScDocument* const     pDoc;
+
+    weld::CheckButton* pBtnCase;
+    weld::CheckButton* pBtnRegExp;
+    weld::CheckButton* pBtnHeader;
+    weld::CheckButton* pBtnUnique;
+    weld::CheckButton* pBtnCopyResult;
+    weld::CheckButton* pBtnDestPers;
+    weld::ComboBox* pLbCopyArea;
+    formula::WeldRefEdit* pEdCopyArea;
+    formula::WeldRefButton* pRbCopyArea;
+    weld::Label* pFtDbAreaLabel;
+    weld::Label* pFtDbArea;
+
+    const OUString&   rStrUndefined;
+
+    const ScQueryParam& rQueryData;
+
+private:
+    void Init();
+
+    // Handler:
+    DECL_LINK( EdAreaModifyHdl, formula::WeldRefEdit&, void );
+    DECL_LINK( LbAreaSelHdl, weld::ComboBox&, void );
+    DECL_LINK( BtnCopyResultHdl, weld::ToggleButton&, void );
+};
+
+
 #endif // INCLUDED_SC_SOURCE_UI_INC_FOPTMGR_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/reffact.hxx b/sc/source/ui/inc/reffact.hxx
index 81ec1f17e90e..3d44627c9e6d 100644
--- a/sc/source/ui/inc/reffact.hxx
+++ b/sc/source/ui/inc/reffact.hxx
@@ -51,7 +51,7 @@ DECL_WRAPPER_WITHID(ScOptSolverDlgWrapper)
 DECL_WRAPPER_WITHID(ScXMLSourceDlgWrapper)
 DECL_WRAPPER_WITHID(ScPivotLayoutWrapper)
 DECL_WRAPPER_WITHID_CONTROLLER(ScTabOpDlgWrapper)
-DECL_WRAPPER_WITHID(ScFilterDlgWrapper)
+DECL_WRAPPER_WITHID_CONTROLLER(ScFilterDlgWrapper)
 DECL_WRAPPER_WITHID(ScSpecialFilterDlgWrapper)
 DECL_WRAPPER_WITHID_CONTROLLER(ScDbNameDlgWrapper)
 DECL_WRAPPER_WITHID_CONTROLLER(ScConsolidateDlgWrapper)
diff --git a/sc/source/ui/view/reffact.cxx b/sc/source/ui/view/reffact.cxx
index 21e2b8a05e74..445de338882d 100644
--- a/sc/source/ui/view/reffact.cxx
+++ b/sc/source/ui/view/reffact.cxx
@@ -39,7 +39,7 @@ SFX_IMPL_MODELESSDIALOG_WITHID(ScOptSolverDlgWrapper, 
SID_OPENDLG_OPTSOLVER )
 SFX_IMPL_MODELESSDIALOG_WITHID(ScXMLSourceDlgWrapper, SID_MANAGE_XML_SOURCE)
 SFX_IMPL_MODELESSDIALOG_WITHID(ScPivotLayoutWrapper, SID_OPENDLG_PIVOTTABLE )
 SFX_IMPL_CHILDWINDOW_WITHID(ScTabOpDlgWrapper, SID_OPENDLG_TABOP )
-SFX_IMPL_MODELESSDIALOG_WITHID(ScFilterDlgWrapper, SID_FILTER )
+SFX_IMPL_CHILDWINDOW_WITHID(ScFilterDlgWrapper, SID_FILTER )
 SFX_IMPL_MODELESSDIALOG_WITHID(ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER )
 SFX_IMPL_CHILDWINDOW_WITHID(ScDbNameDlgWrapper, SID_DEFINE_DBNAME )
 SFX_IMPL_CHILDWINDOW_WITHID(ScConsolidateDlgWrapper, SID_OPENDLG_CONSOLIDATE)
@@ -135,7 +135,7 @@ IMPL_CHILD_CTOR( ScPivotLayoutWrapper, 
SID_OPENDLG_PIVOTTABLE )
 
 IMPL_CONTROLLER_CHILD_CTOR( ScTabOpDlgWrapper, SID_OPENDLG_TABOP )
 
-IMPL_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER )
+IMPL_CONTROLLER_CHILD_CTOR( ScFilterDlgWrapper, SID_FILTER )
 
 IMPL_CHILD_CTOR( ScSpecialFilterDlgWrapper, SID_SPECIAL_FILTER )
 
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index 202db6f17e6d..40d6a9744ea6 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -173,33 +173,6 @@ VclPtr<SfxModelessDialog> ScTabViewShell::CreateRefDialog(
         }
         break;
 
-        case SID_FILTER:
-        {
-
-            ScQueryParam    aQueryParam;
-            SfxItemSet      aArgSet( GetPool(),
-                                     svl::Items<SCITEM_QUERYDATA,
-                                     SCITEM_QUERYDATA>{} );
-
-            ScDBData* pDBData = GetDBData(false, SC_DB_MAKE, 
ScGetDBSelection::RowDown);
-            pDBData->ExtendDataArea(pDoc);
-            pDBData->GetQueryParam( aQueryParam );
-
-            ScRange aArea;
-            pDBData->GetArea(aArea);
-            MarkRange(aArea, false);
-
-            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
-                                      &GetViewData(),
-                                      &aQueryParam ) );
-
-            // mark current sheet (due to RefInput in dialog)
-            GetViewData().SetRefTabNo( GetViewData().GetTabNo() );
-
-            pResult = VclPtr<ScFilterDlg>::Create( pB, pCW, pParent, aArgSet );
-        }
-        break;
-
         case SID_OPENDLG_OPTSOLVER:
         {
             ScViewData& rViewData = GetViewData();
@@ -486,6 +459,32 @@ std::unique_ptr<SfxModelessDialogController> 
ScTabViewShell::CreateRefDialogCont
             xResult.reset(new ScConsolidateDlg(pB, pCW, pParent, aArgSet));
             break;
         }
+        case SID_FILTER:
+        {
+
+            ScQueryParam    aQueryParam;
+            SfxItemSet      aArgSet( GetPool(),
+                                     svl::Items<SCITEM_QUERYDATA,
+                                     SCITEM_QUERYDATA>{} );
+
+            ScDBData* pDBData = GetDBData(false, SC_DB_MAKE, 
ScGetDBSelection::RowDown);
+            pDBData->ExtendDataArea(pDoc);
+            pDBData->GetQueryParam( aQueryParam );
+
+            ScRange aArea;
+            pDBData->GetArea(aArea);
+            MarkRange(aArea, false);
+
+            aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
+                                      &GetViewData(),
+                                      &aQueryParam ) );
+
+            // mark current sheet (due to RefInput in dialog)
+            GetViewData().SetRefTabNo( GetViewData().GetTabNo() );
+
+            xResult.reset(new ScFilterDlg(pB, pCW, pParent, aArgSet));
+            break;
+        }
     }
 
     if (xResult)
diff --git a/sc/uiconfig/scalc/ui/standardfilterdialog.ui 
b/sc/uiconfig/scalc/ui/standardfilterdialog.ui
index b1b757035b6d..a71da96fbb22 100644
--- a/sc/uiconfig/scalc/ui/standardfilterdialog.ui
+++ b/sc/uiconfig/scalc/ui/standardfilterdialog.ui
@@ -1,14 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="sc">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
   <object class="GtkDialog" id="StandardFilterDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" 
context="standardfilterdialog|StandardFilterDialog">Standard Filter</property>
     <property name="resizable">False</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
@@ -80,6 +84,7 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
             <property name="label_xalign">0</property>
             <property name="shadow_type">none</property>
             <child>
@@ -91,458 +96,479 @@
                 <property name="top_padding">6</property>
                 <property name="left_padding">12</property>
                 <child>
-                  <object class="GtkGrid" id="grid1">
+                  <object class="GtkScrolledWindow" id="scrollbar">
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
+                    <property name="can_focus">True</property>
                     <property name="hexpand">True</property>
                     <property name="vexpand">True</property>
-                    <property name="row_spacing">6</property>
-                    <property name="column_spacing">12</property>
+                    <property name="hscrollbar_policy">never</property>
+                    <property name="vscrollbar_policy">always</property>
+                    <property name="shadow_type">in</property>
                     <child>
-                      <object class="GtkScrollbar" id="scrollbar">
-                        <property name="height_request">1</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="orientation">vertical</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">4</property>
-                        <property name="top_attach">0</property>
-                        <property name="height">5</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="connect1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="yes" 
context="standardfilterdialog|connect1">AND</item>
-                          <item translatable="yes" 
context="standardfilterdialog|connect1">OR</item>
-                        </items>
-                        <accessibility>
-                          <relation type="labelled-by" target="label2"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="connect1-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|connect1-atkobject">Operator 
1</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="connect2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="yes" 
context="standardfilterdialog|connect2">AND</item>
-                          <item translatable="yes" 
context="standardfilterdialog|connect2">OR</item>
-                        </items>
-                        <accessibility>
-                          <relation type="labelled-by" target="label2"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="connect2-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|connect2-atkobject">Operator 
2</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="connect3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="yes" 
context="standardfilterdialog|connect3">AND</item>
-                          <item translatable="yes" 
context="standardfilterdialog|connect3">OR</item>
-                        </items>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="connect3-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|connect3-atkobject">Operator 
3</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="connect4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="yes" 
context="standardfilterdialog|connect4">AND</item>
-                          <item translatable="yes" 
context="standardfilterdialog|connect4">OR</item>
-                        </items>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="connect4-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|connect4-atkobject">Operator 
4</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">4</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes" 
context="standardfilterdialog|label2">Operator</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">0</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes" 
context="standardfilterdialog|label3">Field name</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes" 
context="standardfilterdialog|label4">Condition</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkLabel" id="label5">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes" 
context="standardfilterdialog|label5">Value</property>
-                      </object>
-                      <packing>
-                        <property name="left_attach">3</property>
-                        <property name="top_attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="field1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <accessibility>
-                          <relation type="labelled-by" target="label3"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="field1-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|field1-atkobject">Field Name 
1</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="field2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <accessibility>
-                          <relation type="labelled-by" target="label3"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="field2-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|field2-atkobject">Field Name 
2</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="field3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <accessibility>
-                          <relation type="labelled-by" target="label3"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="field3-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|field3-atkobject">Field Name 
3</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="field4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="field4-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|field4-atkobject">Field Name 
4</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">1</property>
-                        <property name="top_attach">4</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="cond1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="no">=</item>
-                          <item translatable="no">&lt;</item>
-                          <item translatable="no">&gt;</item>
-                          <item translatable="no">&lt;=</item>
-                          <item translatable="no">&gt;=</item>
-                          <item translatable="no">&lt;&gt;</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Largest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Smallest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Largest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Smallest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Contains</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Does not contain</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Begins with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Does not begin with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Ends with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond1">Does not end with</item>
-                        </items>
-                        <accessibility>
-                          <relation type="labelled-by" target="label4"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="cond1-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|cond1-atkobject">Condition 
1</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">1</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="cond2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="no">=</item>
-                          <item translatable="no">&lt;</item>
-                          <item translatable="no">&gt;</item>
-                          <item translatable="no">&lt;=</item>
-                          <item translatable="no">&gt;=</item>
-                          <item translatable="no">&lt;&gt;</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Largest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Smallest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Largest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Smallest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Contains</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Does not contain</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Begins with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Does not begin with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Ends with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond2">Does not end with</item>
-                        </items>
-                        <accessibility>
-                          <relation type="labelled-by" target="label4"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="cond2-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|cond2-atkobject">Condition 
2</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">2</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="cond3">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="no">=</item>
-                          <item translatable="no">&lt;</item>
-                          <item translatable="no">&gt;</item>
-                          <item translatable="no">&lt;=</item>
-                          <item translatable="no">&gt;=</item>
-                          <item translatable="no">&lt;&gt;</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Largest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Smallest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Largest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Smallest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Contains</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Does not contain</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Begins with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Does not begin with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Ends with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond3">Does not end with</item>
-                        </items>
-                        <accessibility>
-                          <relation type="labelled-by" target="label4"/>
-                        </accessibility>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="cond3-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|cond3-atkobject">Condition 
3</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>
-                        <property name="top_attach">3</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <object class="GtkComboBoxText" id="cond4">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <items>
-                          <item translatable="no">=</item>
-                          <item translatable="no">&lt;</item>
-                          <item translatable="no">&gt;</item>
-                          <item translatable="no">&lt;=</item>
-                          <item translatable="no">&gt;=</item>
-                          <item translatable="no">&lt;&gt;</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Largest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Smallest</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Largest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Smallest %</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Contains</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Does not contain</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Begins with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Does not begin with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Ends with</item>
-                          <item translatable="yes" 
context="standardfilterdialog|cond4">Does not end with</item>
-                        </items>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="cond4-atkobject">
-                            <property name="AtkObject::accessible-name" 
translatable="yes" context="standardfilterdialog|cond4-atkobject">Condition 
4</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left_attach">2</property>

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to