dbaccess/UIConfig_dbaccess.mk                        |    1 
 dbaccess/source/ui/control/ColumnControlWindow.cxx   |   29 +++++-
 dbaccess/source/ui/control/FieldDescControl.cxx      |   89 ++-----------------
 dbaccess/source/ui/inc/ColumnControlWindow.hxx       |   20 +++-
 dbaccess/source/ui/inc/FieldDescControl.hxx          |   28 ++---
 dbaccess/source/ui/inc/WTypeSelect.hxx               |    2 
 dbaccess/source/ui/misc/WTypeSelect.cxx              |    7 -
 dbaccess/source/ui/tabledesign/TEditControl.cxx      |    1 
 dbaccess/source/ui/tabledesign/TableFieldControl.cxx |    5 -
 dbaccess/source/ui/tabledesign/TableFieldControl.hxx |    4 
 dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx |    4 
 dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx |    2 
 dbaccess/source/ui/uno/ColumnPeer.cxx                |   24 ++---
 dbaccess/uiconfig/ui/colcontrolbox.ui                |   15 +++
 14 files changed, 110 insertions(+), 121 deletions(-)

New commits:
commit 3e5abe71c0f00969425da347e272b49c2624f40b
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Jul 24 19:38:22 2020 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Jul 24 22:42:51 2020 +0200

    drop intermediate TabPage
    
    OColumnControlWindow can be seen used in "use wizard to create table" from 
base
    
    Change-Id: Ib59b487c6711321550c1b516986ef20df402b171
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99414
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/dbaccess/UIConfig_dbaccess.mk b/dbaccess/UIConfig_dbaccess.mk
index f1647bb44b08..d2d30dd9b7fd 100644
--- a/dbaccess/UIConfig_dbaccess.mk
+++ b/dbaccess/UIConfig_dbaccess.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_UIConfig_add_uifiles,dbaccess, \
     dbaccess/uiconfig/ui/authentificationpage \
     dbaccess/uiconfig/ui/autocharsetpage \
     dbaccess/uiconfig/ui/choosedatasourcedialog \
+    dbaccess/uiconfig/ui/colcontrolbox \
     dbaccess/uiconfig/ui/collectionviewdialog \
     dbaccess/uiconfig/ui/colwidthdialog \
     dbaccess/uiconfig/ui/connectionpage \
diff --git a/dbaccess/source/ui/control/ColumnControlWindow.cxx 
b/dbaccess/source/ui/control/ColumnControlWindow.cxx
index 28a77291ce13..8f9186b01ccb 100644
--- a/dbaccess/source/ui/control/ColumnControlWindow.cxx
+++ b/dbaccess/source/ui/control/ColumnControlWindow.cxx
@@ -34,10 +34,33 @@ using namespace ::com::sun::star::util;
 using namespace ::com::sun::star::sdbc;
 using namespace ::com::sun::star::lang;
 
+OColumnControlTopLevel::OColumnControlTopLevel(vcl::Window* pParent,
+                                               const 
Reference<XComponentContext>& _rxContext)
+    : InterimItemWindow(pParent, "dbaccess/ui/colcontrolbox.ui", 
"ColControlBox")
+    , m_xControl(new OColumnControlWindow(m_xContainer.get(), _rxContext))
+{
+}
+
+void OColumnControlTopLevel::dispose()
+{
+    m_xControl.reset();
+    InterimItemWindow::dispose();
+}
+
+void OColumnControlTopLevel::GetFocus()
+{
+    m_xControl->GetFocus();
+}
+
+void OColumnControlTopLevel::LoseFocus()
+{
+    m_xControl->LoseFocus();
+}
+
 // OColumnControlWindow
-OColumnControlWindow::OColumnControlWindow(vcl::Window* pParent
-                                           ,const 
Reference<XComponentContext>& _rxContext)
-            : OFieldDescControl(nullptr, pParent, nullptr)
+OColumnControlWindow::OColumnControlWindow(weld::Container* pParent,
+                                           const Reference<XComponentContext>& 
_rxContext)
+            : OFieldDescControl(pParent, nullptr)
             , m_xContext(_rxContext)
             , m_sTypeNames(DBA_RES(STR_TABLEDESIGN_DBFIELDTYPES))
             , m_bAutoIncrementEnabled(true)
diff --git a/dbaccess/source/ui/control/FieldDescControl.cxx 
b/dbaccess/source/ui/control/FieldDescControl.cxx
index 54365392353b..bb10fb787f9f 100644
--- a/dbaccess/source/ui/control/FieldDescControl.cxx
+++ b/dbaccess/source/ui/control/FieldDescControl.cxx
@@ -65,70 +65,28 @@ namespace
     }
 }
 
-OFieldDescControl::OFieldDescControl(weld::Container* pPage, vcl::Window* 
pParent, OTableDesignHelpBar* pHelpBar)
-    :TabPage(pPage ? Application::GetDefDialogParent() : pParent, WB_3DLOOK | 
WB_DIALOGCONTROL)
-    ,m_pHelp( pHelpBar )
-    ,m_pLastFocusWindow(nullptr)
-    ,m_pActFocusWindow(nullptr)
-    ,m_pPreviousType()
-    ,m_nPos(-1)
-    ,aYes(DBA_RES(STR_VALUE_YES))
-    ,aNo(DBA_RES(STR_VALUE_NO))
-    ,m_nEditWidth(50)
-    ,m_bAdded(false)
-    ,pActFieldDescr(nullptr)
+OFieldDescControl::OFieldDescControl(weld::Container* pPage, 
OTableDesignHelpBar* pHelpBar)
+    : m_xBuilder(Application::CreateBuilder(pPage, 
"dbaccess/ui/fielddescpage.ui"))
+    , m_xContainer(m_xBuilder->weld_container("FieldDescPage"))
+    , m_pHelp( pHelpBar )
+    , m_pLastFocusWindow(nullptr)
+    , m_pActFocusWindow(nullptr)
+    , m_pPreviousType()
+    , m_nPos(-1)
+    , aYes(DBA_RES(STR_VALUE_YES))
+    , aNo(DBA_RES(STR_VALUE_NO))
+    , m_nEditWidth(50)
+    , pActFieldDescr(nullptr)
 {
-    if (pPage)
-        m_xBuilder.reset(Application::CreateBuilder(pPage, 
"dbaccess/ui/fielddescpage.ui"));
-    else
-    {
-        m_xVclContentArea = VclPtr<VclVBox>::Create(this);
-        m_xVclContentArea->Show();
-        m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, 
"dbaccess/ui/fielddescpage.ui"));
-
-        m_aLayoutIdle.SetPriority(TaskPriority::RESIZE);
-        m_aLayoutIdle.SetInvokeHandler( LINK( this, OFieldDescControl, 
ImplHandleLayoutTimerHdl ) );
-        m_aLayoutIdle.SetDebugName( "OFieldDescControl m_aLayoutIdle" );
-    }
-
-    m_xContainer = m_xBuilder->weld_container("FieldDescPage");
-}
-
-void OFieldDescControl::queue_resize(StateChangedType eReason)
-{
-    TabPage::queue_resize(eReason);
-    if (!m_xVclContentArea)
-        return;
-    if (m_aLayoutIdle.IsActive())
-        return;
-    m_aLayoutIdle.Start();
-}
-
-void OFieldDescControl::Resize()
-{
-    TabPage::Resize();
-    if (!m_xVclContentArea)
-        return;
-    queue_resize();
-}
-
-IMPL_LINK_NOARG(OFieldDescControl, ImplHandleLayoutTimerHdl, Timer*, void)
-{
-    m_xVclContentArea->SetPosSizePixel(Point(0,0), GetSizePixel());
 }
 
 OFieldDescControl::~OFieldDescControl()
 {
-    disposeOnce();
+    dispose();
 }
 
 void OFieldDescControl::dispose()
 {
-    m_aLayoutIdle.Stop();
-
-    if ( m_bAdded )
-        
::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
-
     // Destroy children
     DeactivateAggregate( tpDefault );
     DeactivateAggregate( tpRequired );
@@ -172,8 +130,6 @@ void OFieldDescControl::dispose()
     m_xFormat.reset();
     m_xContainer.reset();
     m_xBuilder.reset();
-    m_xVclContentArea.disposeAndClear();
-    TabPage::dispose();
 }
 
 OUString OFieldDescControl::BoolStringPersistent(const OUString& rUIString) 
const
@@ -626,8 +582,6 @@ void OFieldDescControl::ActivateAggregate( EControlType 
eType )
         m_xBoolDefault->show();
         break;
     }
-
-    queue_resize();
 }
 
 void OFieldDescControl::InitializeControl(OPropListBoxCtrl* _pControl,const 
OString& _sHelpId,bool _bAddChangeHandler)
@@ -646,7 +600,7 @@ void OFieldDescControl::InitializeControl(weld::Widget* 
pControl,const OString&
 
     if (dynamic_cast<weld::Entry*>(pControl))
     {
-        int nWidthRequest = LogicToPixel(Size(m_nEditWidth, 0), 
MapMode(MapUnit::MapAppFont)).Width();
+        int nWidthRequest = 
Application::GetDefaultDevice()->LogicToPixel(Size(m_nEditWidth, 0), 
MapMode(MapUnit::MapAppFont)).Width();
         pControl->set_size_request(nWidthRequest, -1);
     }
 }
@@ -723,8 +677,6 @@ void OFieldDescControl::DeactivateAggregate( EControlType 
eType )
         lcl_HideAndDeleteControl(m_nPos,m_xBoolDefault,m_xBoolDefaultText);
         break;
     }
-
-    queue_resize();
 }
 
 void OFieldDescControl::DisplayData(OFieldDescription* pFieldDescr )
@@ -749,20 +701,9 @@ void OFieldDescControl::DisplayData(OFieldDescription* 
pFieldDescr )
         m_pPreviousType = TOTypeInfoSP();
         // Reset the saved focus' pointer
         m_pLastFocusWindow = nullptr;
-        if ( m_bAdded )
-        {
-            
::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::RemoveWindow));
-            m_bAdded = false;
-        }
         return;
     }
 
-    if ( !m_bAdded )
-    {
-        
::dbaui::notifySystemWindow(this,this,::comphelper::mem_fun(&TaskPaneList::AddWindow));
-        m_bAdded = true;
-    }
-
     TOTypeInfoSP pFieldType(pFieldDescr->getTypeInfo());
 
     ActivateAggregate( tpColumnName );
@@ -1228,8 +1169,6 @@ void OFieldDescControl::implFocusLost(weld::Widget* 
_pWhich)
 void OFieldDescControl::LoseFocus()
 {
     implFocusLost(nullptr);
-
-    TabPage::LoseFocus();
 }
 
 bool OFieldDescControl::IsFocusInEditableWidget() const
diff --git a/dbaccess/source/ui/inc/ColumnControlWindow.hxx 
b/dbaccess/source/ui/inc/ColumnControlWindow.hxx
index 1b6d4a5fd8a8..1a5abac2c06d 100644
--- a/dbaccess/source/ui/inc/ColumnControlWindow.hxx
+++ b/dbaccess/source/ui/inc/ColumnControlWindow.hxx
@@ -23,6 +23,7 @@
 #include "TypeInfo.hxx"
 #include <com/sun/star/uno/XComponentContext.hpp>
 #include <com/sun/star/util/XNumberFormatter.hpp>
+#include <vcl/InterimItemWindow.hxx>
 
 namespace dbaui
 {
@@ -53,8 +54,8 @@ namespace dbaui
         virtual void                CellModified(long nRow, sal_uInt16 nColId 
) override;
 
     public:
-        OColumnControlWindow(vcl::Window* pParent
-                            ,const css::uno::Reference< 
css::uno::XComponentContext>& _rxContext);
+        OColumnControlWindow(weld::Container* pParent,
+                             const css::uno::Reference< 
css::uno::XComponentContext>& _rxContext);
 
         void setConnection(const css::uno::Reference< css::sdbc::XConnection>& 
_xCon);
 
@@ -63,6 +64,21 @@ namespace dbaui
         virtual const OTypeInfoMap* getTypeInfo() const override;
         TOTypeInfoSP const & getDefaultTyp() const;
     };
+
+    class OColumnControlTopLevel final : public InterimItemWindow
+    {
+        std::unique_ptr<OColumnControlWindow> m_xControl;
+    public:
+        OColumnControlTopLevel(vcl::Window* pParent,
+                               const css::uno::Reference< 
css::uno::XComponentContext>& _rxContext);
+        virtual void dispose() override;
+
+        OColumnControlWindow& GetControl() { return *m_xControl; }
+
+        virtual void GetFocus() override;
+        virtual void LoseFocus() override;
+    };
+
 }   // namespace dbaui
 #endif // INCLUDED_DBACCESS_SOURCE_UI_INC_COLUMNCONTROLWINDOW_HXX
 
diff --git a/dbaccess/source/ui/inc/FieldDescControl.hxx 
b/dbaccess/source/ui/inc/FieldDescControl.hxx
index 77e439997ab4..3948c11066a8 100644
--- a/dbaccess/source/ui/inc/FieldDescControl.hxx
+++ b/dbaccess/source/ui/inc/FieldDescControl.hxx
@@ -19,9 +19,6 @@
 #ifndef INCLUDED_DBACCESS_SOURCE_UI_INC_FIELDDESCCONTROL_HXX
 #define INCLUDED_DBACCESS_SOURCE_UI_INC_FIELDDESCCONTROL_HXX
 
-#include <vcl/idle.hxx>
-#include <vcl/layout.hxx>
-#include <vcl/tabpage.hxx>
 #include <vcl/weld.hxx>
 #include "IClipBoardTest.hxx"
 #include "QEnumTypes.hxx"
@@ -66,12 +63,9 @@ namespace dbaui
     class OFieldDescription;
     class OPropColumnEditCtrl;
 
-    class OFieldDescControl : public TabPage
-                            , public IClipboardTest
+    class OFieldDescControl : public IClipboardTest
     {
     private:
-        Idle m_aLayoutIdle;
-        VclPtr<VclVBox> m_xVclContentArea;
         std::unique_ptr<weld::Builder> m_xBuilder;
         std::unique_ptr<weld::Container> m_xContainer;
 
@@ -116,13 +110,10 @@ namespace dbaui
 
         sal_Int32               m_nEditWidth;
 
-        bool                m_bAdded;
-
         OFieldDescription*      pActFieldDescr;
 
         DECL_LINK(FormatClickHdl, weld::Button&, void);
         DECL_LINK(ChangeHdl, weld::ComboBox&, void);
-        DECL_LINK(ImplHandleLayoutTimerHdl, Timer*, void);
 
         // used by ActivatePropertyField
         DECL_LINK( OnControlFocusLost, weld::Widget&, void );
@@ -137,6 +128,7 @@ namespace dbaui
 
         bool                IsFocusInEditableWidget() const;
 
+        void                dispose();
     protected:
         void                saveCurrentFieldDescData() { SaveData( 
pActFieldDescr ); }
         OFieldDescription*  getCurrentFieldDescData() { return pActFieldDescr; 
}
@@ -167,9 +159,8 @@ namespace dbaui
         void    implFocusLost(weld::Widget* _pWhich);
 
     public:
-        OFieldDescControl(weld::Container* pPage, vcl::Window* pParent, 
OTableDesignHelpBar* pHelpBar);
-        virtual ~OFieldDescControl() override;
-        virtual void        dispose() override;
+        OFieldDescControl(weld::Container* pPage, OTableDesignHelpBar* 
pHelpBar);
+        virtual ~OFieldDescControl();
 
         void                DisplayData(OFieldDescription* pFieldDescr );
 
@@ -178,6 +169,9 @@ namespace dbaui
         void                SetControlText( sal_uInt16 nControlId, const 
OUString& rText );
         void                SetReadOnly( bool bReadOnly );
 
+        void                Enable(bool bEnable) { 
m_xContainer->set_sensitive(bEnable); }
+        void                SetHelpId(const OString& rId) { 
m_xContainer->set_help_id(rId); }
+
         virtual bool        isCutAllowed() override;
         virtual bool        isCopyAllowed() override;
         virtual bool        isPasteAllowed() override;
@@ -191,12 +185,10 @@ namespace dbaui
             m_aControlFocusIn = rLink;
         }
 
-        void                Init();
-        virtual void        GetFocus() override;
-        virtual void        LoseFocus() override;
-        virtual void        Resize() override;
+        void Init();
 
-        virtual void queue_resize(StateChangedType eReason = 
StateChangedType::Layout) override;
+        void GetFocus();
+        void LoseFocus();
 
         virtual css::uno::Reference< css::sdbc::XDatabaseMetaData> 
getMetaData() = 0;
         virtual css::uno::Reference< css::sdbc::XConnection> getConnection() = 
0;
diff --git a/dbaccess/source/ui/inc/WTypeSelect.hxx 
b/dbaccess/source/ui/inc/WTypeSelect.hxx
index 4a0f240a788f..ddcbf17fa409 100644
--- a/dbaccess/source/ui/inc/WTypeSelect.hxx
+++ b/dbaccess/source/ui/inc/WTypeSelect.hxx
@@ -107,7 +107,7 @@ namespace dbaui
         std::unique_ptr<OWizTypeSelectList> m_xColumnNames;
         std::unique_ptr<weld::Label> m_xColumns;
         std::unique_ptr<weld::Container> m_xControlContainer;
-        VclPtr<OWizTypeSelectControl> m_xTypeControl;
+        std::unique_ptr<OWizTypeSelectControl> m_xTypeControl;
         std::unique_ptr<weld::Label> m_xAutoType;
         std::unique_ptr<weld::Label> m_xAutoFt;
         std::unique_ptr<weld::SpinButton> m_xAutoEt;
diff --git a/dbaccess/source/ui/misc/WTypeSelect.cxx 
b/dbaccess/source/ui/misc/WTypeSelect.cxx
index f42521524d60..3b2647fac719 100644
--- a/dbaccess/source/ui/misc/WTypeSelect.cxx
+++ b/dbaccess/source/ui/misc/WTypeSelect.cxx
@@ -26,6 +26,7 @@
 #include <strings.hrc>
 #include <tools/stream.hxx>
 #include <vcl/commandevent.hxx>
+#include <vcl/svapp.hxx>
 #include <UITools.hxx>
 #include <core_resource.hxx>
 #include <FieldControls.hxx>
@@ -39,7 +40,7 @@ using namespace ::com::sun::star::sdbc;
 
 // OWizTypeSelectControl
 OWizTypeSelectControl::OWizTypeSelectControl(weld::Container* pPage, 
OWizTypeSelect* pParentTabPage)
-    : OFieldDescControl(pPage, nullptr, nullptr)
+    : OFieldDescControl(pPage, nullptr)
     , m_pParentTabPage(pParentTabPage)
 {
 }
@@ -206,7 +207,7 @@ OWizTypeSelect::OWizTypeSelect(weld::Container* pPage, 
OCopyTableWizard* pWizard
     , m_xColumnNames(new 
OWizTypeSelectList(m_xBuilder->weld_tree_view("columnnames")))
     , m_xColumns(m_xBuilder->weld_label("columns"))
     , m_xControlContainer(m_xBuilder->weld_container("control_container"))
-    , 
m_xTypeControl(VclPtr<OWizTypeSelectControl>::Create(m_xControlContainer.get(), 
this))
+    , m_xTypeControl(new OWizTypeSelectControl(m_xControlContainer.get(), 
this))
     , m_xAutoType(m_xBuilder->weld_label("autotype"))
     , m_xAutoFt(m_xBuilder->weld_label("autolabel"))
     , m_xAutoEt(m_xBuilder->weld_spin_button("auto"))
@@ -218,7 +219,6 @@ OWizTypeSelect::OWizTypeSelect(weld::Container* pPage, 
OCopyTableWizard* pWizard
 {
     m_xColumnNames->connect_changed(LINK(this,OWizTypeSelect,ColumnSelectHdl));
 
-    m_xTypeControl->Show();
     m_xTypeControl->Init();
 
     m_xAutoEt->set_text("10");
@@ -239,7 +239,6 @@ OWizTypeSelect::OWizTypeSelect(weld::Container* pPage, 
OCopyTableWizard* pWizard
 
 OWizTypeSelect::~OWizTypeSelect()
 {
-    m_xTypeControl.disposeAndClear();
 }
 
 OUString OWizTypeSelect::GetTitle() const
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx 
b/dbaccess/source/ui/tabledesign/TEditControl.cxx
index 28af7b8bae54..39e3bd86ee3f 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@ -41,6 +41,7 @@
 #include <UITools.hxx>
 #include "TableFieldControl.hxx"
 #include <dsntypes.hxx>
+#include <vcl/builder.hxx>
 #include <vcl/commandevent.hxx>
 #include <vcl/menu.hxx>
 #include <vcl/svapp.hxx>
diff --git a/dbaccess/source/ui/tabledesign/TableFieldControl.cxx 
b/dbaccess/source/ui/tabledesign/TableFieldControl.cxx
index 49cbdf99abca..b384dab2738e 100644
--- a/dbaccess/source/ui/tabledesign/TableFieldControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TableFieldControl.cxx
@@ -34,7 +34,7 @@ using namespace ::com::sun::star::sdbc;
 using namespace dbaui;
 
 OTableFieldControl::OTableFieldControl(weld::Container* pParent, 
OTableDesignHelpBar* pHelpBar, OTableDesignView* pView)
-    : OFieldDescControl(pParent, nullptr, pHelpBar)
+    : OFieldDescControl(pParent, pHelpBar)
     , m_xView(pView)
 {
 }
@@ -42,12 +42,11 @@ OTableFieldControl::OTableFieldControl(weld::Container* 
pParent, OTableDesignHel
 void OTableFieldControl::dispose()
 {
     m_xView.clear();
-    OFieldDescControl::dispose();
 }
 
 OTableFieldControl::~OTableFieldControl()
 {
-    disposeOnce();
+    dispose();
 }
 
 void OTableFieldControl::CellModified(long nRow, sal_uInt16 nColId )
diff --git a/dbaccess/source/ui/tabledesign/TableFieldControl.hxx 
b/dbaccess/source/ui/tabledesign/TableFieldControl.hxx
index e74ab4c8a88b..e71d447b0a77 100644
--- a/dbaccess/source/ui/tabledesign/TableFieldControl.hxx
+++ b/dbaccess/source/ui/tabledesign/TableFieldControl.hxx
@@ -33,6 +33,9 @@ namespace dbaui
         VclPtr<OTableDesignView> m_xView;
 
         OTableEditorCtrl*   GetCtrl() const;
+
+        void dispose();
+
     protected:
         virtual void        ActivateAggregate( EControlType eType ) override;
         virtual void        DeactivateAggregate( EControlType eType ) override;
@@ -51,7 +54,6 @@ namespace dbaui
 
     public:
         OTableFieldControl(weld::Container* pParent, OTableDesignHelpBar* 
pHelpBar, OTableDesignView* pView);
-        virtual void dispose() override;
         virtual ~OTableFieldControl() override;
 
         using OFieldDescControl::BoolStringPersistent;
diff --git a/dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx 
b/dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx
index 530dfd6237a3..2e87c0891e44 100644
--- a/dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx
+++ b/dbaccess/source/ui/tabledesign/TableFieldDescWin.cxx
@@ -34,7 +34,7 @@ OTableFieldDescWin::OTableFieldDescWin(vcl::Window* pParent, 
OTableDesignView* p
     : InterimItemWindow(pParent, "dbaccess/ui/fielddescpanel.ui", 
"FieldDescPanel")
     , m_xHelpBar(new 
OTableDesignHelpBar(m_xBuilder->weld_text_view("textview")))
     , m_xBox(m_xBuilder->weld_container("box"))
-    , m_xFieldControl(VclPtr<OTableFieldControl>::Create(m_xBox.get(), 
m_xHelpBar.get(), pView))
+    , m_xFieldControl(new OTableFieldControl(m_xBox.get(), m_xHelpBar.get(), 
pView))
     , m_xHeader(m_xBuilder->weld_label("header"))
     , m_eChildFocus(NONE)
 {
@@ -55,7 +55,7 @@ OTableFieldDescWin::~OTableFieldDescWin()
 void OTableFieldDescWin::dispose()
 {
     // destroy children
-    m_xFieldControl.disposeAndClear();
+    m_xFieldControl.reset();
     m_xBox.reset();
     m_xHeader.reset();
     m_xHelpBar.reset();
diff --git a/dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx 
b/dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx
index 72f9376a1076..d25c5c61b60b 100644
--- a/dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx
+++ b/dbaccess/source/ui/tabledesign/TableFieldDescWin.hxx
@@ -41,7 +41,7 @@ namespace dbaui
     private:
         std::unique_ptr<OTableDesignHelpBar> m_xHelpBar;
         std::unique_ptr<weld::Container> m_xBox;
-        VclPtr<OTableFieldControl> m_xFieldControl;
+        std::unique_ptr<OTableFieldControl> m_xFieldControl;
         std::unique_ptr<weld::Label>   m_xHeader;
         Link<weld::Widget&, void> m_aFocusInHdl;
 
diff --git a/dbaccess/source/ui/uno/ColumnPeer.cxx 
b/dbaccess/source/ui/uno/ColumnPeer.cxx
index 9dc357eb2a8c..48f5fbce5692 100644
--- a/dbaccess/source/ui/uno/ColumnPeer.cxx
+++ b/dbaccess/source/ui/uno/ColumnPeer.cxx
@@ -36,7 +36,7 @@ OColumnPeer::OColumnPeer(vcl::Window* _pParent,const 
Reference<XComponentContext
 {
     osl_atomic_increment( &m_refCount );
     {
-        VclPtrInstance<OColumnControlWindow> pFieldControl(_pParent, 
_rxContext);
+        VclPtrInstance<OColumnControlTopLevel> pFieldControl(_pParent, 
_rxContext);
         pFieldControl->SetComponentInterface(this);
         pFieldControl->Show();
     }
@@ -46,19 +46,21 @@ OColumnPeer::OColumnPeer(vcl::Window* _pParent,const 
Reference<XComponentContext
 void OColumnPeer::setEditWidth(sal_Int32 _nWidth)
 {
     SolarMutexGuard aGuard;
-    VclPtr<OColumnControlWindow> pFieldControl = GetAs<OColumnControlWindow>();
+    VclPtr<OColumnControlTopLevel> pFieldControl = 
GetAs<OColumnControlTopLevel>();
     if ( pFieldControl )
-        pFieldControl->setEditWidth(_nWidth);
+        pFieldControl->GetControl().setEditWidth(_nWidth);
 }
 
 void OColumnPeer::setColumn(const Reference< XPropertySet>& _xColumn)
 {
     SolarMutexGuard aGuard;
 
-    VclPtr<OColumnControlWindow> pFieldControl = GetAs<OColumnControlWindow>();
+    VclPtr<OColumnControlTopLevel> pFieldControl = 
GetAs<OColumnControlTopLevel>();
     if ( !pFieldControl )
         return;
 
+    OColumnControlWindow& rControl = pFieldControl->GetControl();
+
     if ( m_pActFieldDescr )
     {
         delete m_pActFieldDescr;
@@ -88,22 +90,22 @@ void OColumnPeer::setColumn(const Reference< XPropertySet>& 
_xColumn)
         m_pActFieldDescr = new OFieldDescription(_xColumn,true);
         // search for type
         bool bForce;
-        TOTypeInfoSP pTypeInfo = 
::dbaui::getTypeInfoFromType(*pFieldControl->getTypeInfo(),nType,sTypeName,"x",nPrecision,nScale,bAutoIncrement,bForce);
+        TOTypeInfoSP pTypeInfo = 
::dbaui::getTypeInfoFromType(*rControl.getTypeInfo(),nType,sTypeName,"x",nPrecision,nScale,bAutoIncrement,bForce);
         if ( !pTypeInfo )
-            pTypeInfo = pFieldControl->getDefaultTyp();
+            pTypeInfo = rControl.getDefaultTyp();
 
         m_pActFieldDescr->FillFromTypeInfo(pTypeInfo,true,false);
         m_xColumn = _xColumn;
     }
-    pFieldControl->DisplayData(m_pActFieldDescr);
+    rControl.DisplayData(m_pActFieldDescr);
 }
 
 void OColumnPeer::setConnection(const Reference< XConnection>& _xCon)
 {
     SolarMutexGuard aGuard;
-    VclPtr<OColumnControlWindow> pFieldControl = GetAs<OColumnControlWindow>();
+    VclPtr<OColumnControlTopLevel> pFieldControl = 
GetAs<OColumnControlTopLevel>();
     if ( pFieldControl )
-        pFieldControl->setConnection(_xCon);
+        pFieldControl->GetControl().setConnection(_xCon);
 }
 
 void OColumnPeer::setProperty( const OUString& _rPropertyName, const Any& 
Value)
@@ -127,14 +129,14 @@ void OColumnPeer::setProperty( const OUString& 
_rPropertyName, const Any& Value)
 Any OColumnPeer::getProperty( const OUString& _rPropertyName )
 {
     Any aProp;
-    VclPtr< OFieldDescControl > pFieldControl = GetAs< OFieldDescControl >();
+    VclPtr<OColumnControlTopLevel> pFieldControl = 
GetAs<OColumnControlTopLevel>();
     if (pFieldControl && _rPropertyName == PROPERTY_COLUMN)
     {
         aProp <<= m_xColumn;
     }
     else if (pFieldControl && _rPropertyName == PROPERTY_ACTIVE_CONNECTION)
     {
-        aProp <<= pFieldControl->getConnection();
+        aProp <<= pFieldControl->GetControl().getConnection();
     }
     else
         aProp = VCLXWindow::getProperty(_rPropertyName);
diff --git a/dbaccess/uiconfig/ui/colcontrolbox.ui 
b/dbaccess/uiconfig/ui/colcontrolbox.ui
new file mode 100644
index 000000000000..74ce361e63d8
--- /dev/null
+++ b/dbaccess/uiconfig/ui/colcontrolbox.ui
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.36.0 -->
+<interface domain="dba">
+  <requires lib="gtk+" version="3.18"/>
+  <object class="GtkBox" id="ColControlBox">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
+    <property name="vexpand">True</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <placeholder/>
+    </child>
+  </object>
+</interface>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to