Kaydet (Commit) 7fd0cd65 authored tarafından Michael Meeks's avatar Michael Meeks

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

Change-Id: I861c970db9c36c973bcb2fa94a3e8e12f8de4f13
üst 5800a27b
...@@ -1505,6 +1505,7 @@ void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (Clo ...@@ -1505,6 +1505,7 @@ void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (Clo
// SYNCHRONIZED -> // SYNCHRONIZED ->
{ {
DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
assert (!m_bClosing);
m_bClosing = true; m_bClosing = true;
} }
// <- SYNCHRONIZED // <- SYNCHRONIZED
......
...@@ -193,7 +193,6 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo ...@@ -193,7 +193,6 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo
,m_aBorder(new Window(this,WB_BORDER | WB_READONLY)) ,m_aBorder(new Window(this,WB_BORDER | WB_READONLY))
,m_aPreview(new OPreviewWindow(m_aBorder.get())) ,m_aPreview(new OPreviewWindow(m_aBorder.get()))
,m_aDocumentInfo(new ::svtools::ODocumentInfoPreview(m_aBorder.get(), WB_LEFT | WB_VSCROLL | WB_READONLY) ) ,m_aDocumentInfo(new ::svtools::ODocumentInfoPreview(m_aBorder.get(), WB_LEFT | WB_VSCROLL | WB_READONLY) )
,m_pTablePreview(NULL)
,m_ePreviewMode(_ePreviewMode) ,m_ePreviewMode(_ePreviewMode)
{ {
...@@ -212,7 +211,7 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo ...@@ -212,7 +211,7 @@ OAppDetailPageHelper::OAppDetailPageHelper(vcl::Window* _pParent,OAppBorderWindo
m_aPreview->SetHelpId(HID_APP_VIEW_PREVIEW_1); 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_pTablePreview->SetHelpId(HID_APP_VIEW_PREVIEW_2);
m_aDocumentInfo->SetHelpId(HID_APP_VIEW_PREVIEW_3); m_aDocumentInfo->SetHelpId(HID_APP_VIEW_PREVIEW_3);
...@@ -259,6 +258,7 @@ void OAppDetailPageHelper::dispose() ...@@ -259,6 +258,7 @@ void OAppDetailPageHelper::dispose()
m_aTBPreview.disposeAndClear(); m_aTBPreview.disposeAndClear();
m_aPreview.disposeAndClear(); m_aPreview.disposeAndClear();
m_aDocumentInfo.disposeAndClear(); m_aDocumentInfo.disposeAndClear();
m_pTablePreview.disposeAndClear();
m_aBorder.disposeAndClear(); m_aBorder.disposeAndClear();
m_aMenu.reset(); m_aMenu.reset();
......
...@@ -84,8 +84,8 @@ namespace dbaui ...@@ -84,8 +84,8 @@ namespace dbaui
VclPtr<Window> m_aBorder; VclPtr<Window> m_aBorder;
VclPtr<OPreviewWindow> m_aPreview; VclPtr<OPreviewWindow> m_aPreview;
VclPtr<::svtools::ODocumentInfoPreview> VclPtr<::svtools::ODocumentInfoPreview>
m_aDocumentInfo; m_aDocumentInfo;
vcl::Window* m_pTablePreview; VclPtr<vcl::Window> m_pTablePreview;
::std::unique_ptr<PopupMenu> m_aMenu; ::std::unique_ptr<PopupMenu> m_aMenu;
PreviewMode m_ePreviewMode; PreviewMode m_ePreviewMode;
::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 > ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 >
......
...@@ -65,10 +65,9 @@ namespace dbaui ...@@ -65,10 +65,9 @@ namespace dbaui
WinBits nStyle) WinBits nStyle)
:Window(pParent,nStyle) :Window(pParent,nStyle)
,m_xContext(_rxContext) ,m_xContext(_rxContext)
,m_rController( _rController ) ,m_xController( &_rController )
,m_aSeparator( new FixedLine(this) ) ,m_aSeparator( new FixedLine(this) )
{ {
m_rController.acquire();
m_pAccel.reset(::svt::AcceleratorExecute::createAcceleratorHelper()); m_pAccel.reset(::svt::AcceleratorExecute::createAcceleratorHelper());
m_aSeparator->Show(); m_aSeparator->Show();
} }
...@@ -84,7 +83,7 @@ namespace dbaui ...@@ -84,7 +83,7 @@ namespace dbaui
void ODataView::dispose() void ODataView::dispose()
{ {
m_rController.release(); m_xController.clear();
m_aSeparator.disposeAndClear(); m_aSeparator.disposeAndClear();
m_pAccel.reset(); m_pAccel.reset();
vcl::Window::dispose(); vcl::Window::dispose();
...@@ -141,7 +140,7 @@ namespace dbaui ...@@ -141,7 +140,7 @@ namespace dbaui
case MouseNotifyEvent::KEYUP: case MouseNotifyEvent::KEYUP:
case MouseNotifyEvent::MOUSEBUTTONDOWN: case MouseNotifyEvent::MOUSEBUTTONDOWN:
case MouseNotifyEvent::MOUSEBUTTONUP: case MouseNotifyEvent::MOUSEBUTTONUP:
bHandled = m_rController.interceptUserInput( _rNEvt ); bHandled = m_xController->interceptUserInput( _rNEvt );
break; break;
default: default:
break; break;
...@@ -155,7 +154,7 @@ namespace dbaui ...@@ -155,7 +154,7 @@ namespace dbaui
if ( nType == StateChangedType::CONTROLBACKGROUND ) if ( nType == StateChangedType::CONTROLBACKGROUND )
{ {
// Check if we need to get new images for normal/high contrast mode // Check if we need to get new images for normal/high contrast mode
m_rController.notifyHiContrastChanged(); m_xController->notifyHiContrastChanged();
} }
if ( nType == StateChangedType::INITSHOW ) if ( nType == StateChangedType::INITSHOW )
...@@ -164,7 +163,7 @@ namespace dbaui ...@@ -164,7 +163,7 @@ namespace dbaui
// model's arguments. // model's arguments.
try 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 ); Reference< XModel > xModel( xController->getModel(), UNO_QUERY );
if ( xModel.is() ) if ( xModel.is() )
{ {
...@@ -190,7 +189,7 @@ namespace dbaui ...@@ -190,7 +189,7 @@ namespace dbaui
(rDCEvt.GetFlags() & AllSettingsFlags::STYLE)) ) (rDCEvt.GetFlags() & AllSettingsFlags::STYLE)) )
{ {
// Check if we need to get new images for normal/high contrast mode // 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) void ODataView::attachFrame(const Reference< XFrame >& _xFrame)
......
...@@ -37,7 +37,7 @@ namespace dbaui ...@@ -37,7 +37,7 @@ namespace dbaui
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; // the service factory to work with ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; // the service factory to work with
protected: 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; VclPtr<FixedLine> m_aSeparator;
::std::unique_ptr< ::svt::AcceleratorExecute> m_pAccel; ::std::unique_ptr< ::svt::AcceleratorExecute> m_pAccel;
...@@ -58,7 +58,7 @@ namespace dbaui ...@@ -58,7 +58,7 @@ namespace dbaui
virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE; virtual void StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
virtual void DataChanged( const DataChangedEvent& rDCEvt ) 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. /** will be called when the controls need to be resized.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment