tdf#130623 owner of FieldControl needs to set its allocation

which works fine automatically when its in a dialog (copy table)
but not automatically when hosted inside the design view

this will make the gen case work in master, and the gen and gtk
case work in 6-4

Change-Id: I530cfa0a7e1f5b62c6812ffde255c1edf478930d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88499
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
diff --git a/dbaccess/source/ui/tabledesign/FieldDescGenWin.cxx b/dbaccess/source/ui/tabledesign/FieldDescGenWin.cxx
index bc9486b..9581246 100644
--- a/dbaccess/source/ui/tabledesign/FieldDescGenWin.cxx
+++ b/dbaccess/source/ui/tabledesign/FieldDescGenWin.cxx
@@ -34,6 +34,10 @@ OFieldDescGenWin::OFieldDescGenWin( vcl::Window* pParent, OTableDesignHelpBar* p
    m_pFieldControl = VclPtr<OTableFieldControl>::Create(this,pHelp);
    m_pFieldControl->SetHelpId(HID_TAB_DESIGN_FIELDCONTROL);
    m_pFieldControl->Show();

    maLayoutIdle.SetPriority(TaskPriority::RESIZE);
    maLayoutIdle.SetInvokeHandler( LINK( this, OFieldDescGenWin, ImplHandleLayoutTimerHdl ) );
    maLayoutIdle.SetDebugName( "OFieldDescGenWin maLayoutIdle" );
}

OFieldDescGenWin::~OFieldDescGenWin()
@@ -43,6 +47,7 @@ OFieldDescGenWin::~OFieldDescGenWin()

void OFieldDescGenWin::dispose()
{
    maLayoutIdle.Stop();
    m_pFieldControl.disposeAndClear();
    TabPage::dispose();
}
@@ -54,12 +59,29 @@ void OFieldDescGenWin::Init()
    m_pFieldControl->Init();
}

void OFieldDescGenWin::Resize()
void OFieldDescGenWin::queue_resize(StateChangedType eReason)
{
    TabPage::queue_resize(eReason);
    if (!m_pFieldControl)
        return;
    if (maLayoutIdle.IsActive())
        return;
    maLayoutIdle.Start();
}

IMPL_LINK_NOARG(OFieldDescGenWin, ImplHandleLayoutTimerHdl, Timer*, void)
{
    if (!m_pFieldControl)
        return;
    m_pFieldControl->SetPosSizePixel(Point(0,0),GetSizePixel());
    m_pFieldControl->Resize();
}

void OFieldDescGenWin::Resize()
{
    queue_resize();
}

void OFieldDescGenWin::SetReadOnly( bool bReadOnly )
{

diff --git a/dbaccess/source/ui/tabledesign/FieldDescGenWin.hxx b/dbaccess/source/ui/tabledesign/FieldDescGenWin.hxx
index b43f8d1..47874ff 100644
--- a/dbaccess/source/ui/tabledesign/FieldDescGenWin.hxx
+++ b/dbaccess/source/ui/tabledesign/FieldDescGenWin.hxx
@@ -19,6 +19,7 @@
#ifndef INCLUDED_DBACCESS_SOURCE_UI_TABLEDESIGN_FIELDDESCGENWIN_HXX
#define INCLUDED_DBACCESS_SOURCE_UI_TABLEDESIGN_FIELDDESCGENWIN_HXX

#include <vcl/idle.hxx>
#include <vcl/tabpage.hxx>
#include <IClipBoardTest.hxx>

@@ -33,6 +34,10 @@ namespace dbaui
    {

        VclPtr<OTableFieldControl>  m_pFieldControl;
        Idle  maLayoutIdle;

        DECL_LINK(ImplHandleLayoutTimerHdl, Timer*, void);

    protected:
        virtual void Resize() override;

@@ -41,6 +46,8 @@ namespace dbaui
        virtual ~OFieldDescGenWin() override;
        virtual void dispose() override;

        virtual void queue_resize(StateChangedType eReason = StateChangedType::Layout) override;

        virtual void GetFocus() override;
        virtual void LoseFocus() override;
        void Init();