dbaccess: nail the last double-dispose issue breaking the test.

Change-Id: I861c970db9c36c973bcb2fa94a3e8e12f8de4f13
diff --git a/dbaccess/source/core/dataaccess/databasedocument.cxx b/dbaccess/source/core/dataaccess/databasedocument.cxx
index c7ea9f3..59c5c57 100644
--- a/dbaccess/source/core/dataaccess/databasedocument.cxx
+++ b/dbaccess/source/core/dataaccess/databasedocument.cxx
@@ -1505,6 +1505,7 @@ void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (Clo
    // SYNCHRONIZED ->
    {
        DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
        assert (!m_bClosing);
        m_bClosing = true;
    }
    // <- SYNCHRONIZED
diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.cxx b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
index 9f264c4..61a047e 100644
--- a/dbaccess/source/ui/app/AppDetailPageHelper.cxx
+++ b/dbaccess/source/ui/app/AppDetailPageHelper.cxx
@@ -193,7 +193,6 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo
    ,m_aBorder(new Window(this,WB_BORDER | WB_READONLY))
    ,m_aPreview(new OPreviewWindow(m_aBorder.get()))
    ,m_aDocumentInfo(new ::svtools::ODocumentInfoPreview(m_aBorder.get(), WB_LEFT | WB_VSCROLL | WB_READONLY) )
    ,m_pTablePreview(NULL)
    ,m_ePreviewMode(_ePreviewMode)
{

@@ -212,7 +211,7 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo

    m_aPreview->SetHelpId(HID_APP_VIEW_PREVIEW_1);

    m_pTablePreview = new OTablePreviewWindow(m_aBorder.get(), WB_READONLY | WB_DIALOGCONTROL );
    m_pTablePreview.set( new OTablePreviewWindow(m_aBorder.get(), WB_READONLY | WB_DIALOGCONTROL ) );
    m_pTablePreview->SetHelpId(HID_APP_VIEW_PREVIEW_2);

    m_aDocumentInfo->SetHelpId(HID_APP_VIEW_PREVIEW_3);
@@ -259,6 +258,7 @@ void OAppDetailPageHelper::dispose()
    m_aTBPreview.disposeAndClear();
    m_aPreview.disposeAndClear();
    m_aDocumentInfo.disposeAndClear();
    m_pTablePreview.disposeAndClear();
    m_aBorder.disposeAndClear();
    m_aMenu.reset();

diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.hxx b/dbaccess/source/ui/app/AppDetailPageHelper.hxx
index a9272fa..90de8ea 100644
--- a/dbaccess/source/ui/app/AppDetailPageHelper.hxx
+++ b/dbaccess/source/ui/app/AppDetailPageHelper.hxx
@@ -84,8 +84,8 @@ namespace dbaui
        VclPtr<Window>            m_aBorder;
        VclPtr<OPreviewWindow>    m_aPreview;
        VclPtr<::svtools::ODocumentInfoPreview>
                                 m_aDocumentInfo;
        vcl::Window*             m_pTablePreview;
                                  m_aDocumentInfo;
        VclPtr<vcl::Window>       m_pTablePreview;
        ::std::unique_ptr<PopupMenu> m_aMenu;
        PreviewMode         m_ePreviewMode;
        ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 >
diff --git a/dbaccess/source/ui/browser/dataview.cxx b/dbaccess/source/ui/browser/dataview.cxx
index ab23fb2..5e617a1 100644
--- a/dbaccess/source/ui/browser/dataview.cxx
+++ b/dbaccess/source/ui/browser/dataview.cxx
@@ -65,10 +65,9 @@ namespace dbaui
                            WinBits nStyle)
        :Window(pParent,nStyle)
        ,m_xContext(_rxContext)
        ,m_rController( _rController )
        ,m_xController( &_rController )
        ,m_aSeparator( new FixedLine(this) )
    {
        m_rController.acquire();
        m_pAccel.reset(::svt::AcceleratorExecute::createAcceleratorHelper());
        m_aSeparator->Show();
    }
@@ -84,7 +83,7 @@ namespace dbaui

    void ODataView::dispose()
    {
        m_rController.release();
        m_xController.clear();
        m_aSeparator.disposeAndClear();
        m_pAccel.reset();
        vcl::Window::dispose();
@@ -141,7 +140,7 @@ namespace dbaui
            case MouseNotifyEvent::KEYUP:
            case MouseNotifyEvent::MOUSEBUTTONDOWN:
            case MouseNotifyEvent::MOUSEBUTTONUP:
                bHandled = m_rController.interceptUserInput( _rNEvt );
                bHandled = m_xController->interceptUserInput( _rNEvt );
                break;
            default:
                break;
@@ -155,7 +154,7 @@ namespace dbaui
        if ( nType == StateChangedType::CONTROLBACKGROUND )
        {
            // Check if we need to get new images for normal/high contrast mode
            m_rController.notifyHiContrastChanged();
            m_xController->notifyHiContrastChanged();
        }

        if ( nType == StateChangedType::INITSHOW )
@@ -164,7 +163,7 @@ namespace dbaui
            // model's arguments.
            try
            {
                Reference< XController > xController( m_rController.getXController(), UNO_SET_THROW );
                Reference< XController > xController( m_xController->getXController(), UNO_SET_THROW );
                Reference< XModel > xModel( xController->getModel(), UNO_QUERY );
                if ( xModel.is() )
                {
@@ -190,7 +189,7 @@ namespace dbaui
            (rDCEvt.GetFlags() & AllSettingsFlags::STYLE)) )
        {
            // Check if we need to get new images for normal/high contrast mode
            m_rController.notifyHiContrastChanged();
            m_xController->notifyHiContrastChanged();
        }
    }
    void ODataView::attachFrame(const Reference< XFrame >& _xFrame)
diff --git a/include/dbaccess/dataview.hxx b/include/dbaccess/dataview.hxx
index d625097..4dabda0 100644
--- a/include/dbaccess/dataview.hxx
+++ b/include/dbaccess/dataview.hxx
@@ -37,7 +37,7 @@ namespace dbaui
        ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >    m_xContext;  // the service factory to work with

    protected:
        IController&        m_rController;  // the controller in where we resides in
        rtl::Reference<IController> m_xController;  // the controller in where we resides in
        VclPtr<FixedLine>   m_aSeparator;
        ::std::unique_ptr< ::svt::AcceleratorExecute> m_pAccel;

@@ -58,7 +58,7 @@ namespace dbaui
        virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
        virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;

        inline IController& getCommandController() const { return m_rController; }
        inline IController& getCommandController() const { return *m_xController.get(); }

        /** will be called when the controls need to be resized.
        */