diff options
Diffstat (limited to 'framework/source')
21 files changed, 126 insertions, 99 deletions
diff --git a/framework/source/classes/fwktabwindow.cxx b/framework/source/classes/fwktabwindow.cxx index b01cf418f48a..da2c187e9f68 100644 --- a/framework/source/classes/fwktabwindow.cxx +++ b/framework/source/classes/fwktabwindow.cxx @@ -81,8 +81,14 @@ FwkTabPage::FwkTabPage( FwkTabPage::~FwkTabPage() { + disposeOnce(); +} + +void FwkTabPage::dispose() +{ Hide(); DeactivatePage(); + TabPage::dispose(); } void FwkTabPage::CreateDialog() @@ -174,20 +180,27 @@ void FwkTabPage::Resize() // class FwkTabWindow --------------------------------------------- FwkTabWindow::FwkTabWindow( vcl::Window* pParent ) : Window(pParent) - , m_aTabCtrl(this) + , m_aTabCtrl(VclPtr<FwkTabControl>::Create(this)) { m_xWinProvider = awt::ContainerWindowProvider::create( ::comphelper::getProcessComponentContext() ); SetPaintTransparent(true); - m_aTabCtrl.SetActivatePageHdl( LINK( this, FwkTabWindow, ActivatePageHdl ) ); - m_aTabCtrl.SetDeactivatePageHdl( LINK( this, FwkTabWindow, DeactivatePageHdl ) ); - m_aTabCtrl.Show(); + m_aTabCtrl->SetActivatePageHdl( LINK( this, FwkTabWindow, ActivatePageHdl ) ); + m_aTabCtrl->SetDeactivatePageHdl( LINK( this, FwkTabWindow, DeactivatePageHdl ) ); + m_aTabCtrl->Show(); } FwkTabWindow::~FwkTabWindow() { + disposeOnce(); +} + +void FwkTabWindow::dispose() +{ ClearEntryList(); + m_aTabCtrl.disposeAndClear(); + vcl::Window::dispose(); } void FwkTabWindow::ClearEntryList() @@ -245,40 +258,40 @@ TabEntry* FwkTabWindow::FindEntry( sal_Int32 nIndex ) const IMPL_LINK_NOARG(FwkTabWindow, ActivatePageHdl) { - const sal_uInt16 nId = m_aTabCtrl.GetCurPageId(); - FwkTabPage* pTabPage = static_cast< FwkTabPage* >( m_aTabCtrl.GetTabPage( nId ) ); + const sal_uInt16 nId = m_aTabCtrl->GetCurPageId(); + FwkTabPage* pTabPage = static_cast< FwkTabPage* >( m_aTabCtrl->GetTabPage( nId ) ); if ( !pTabPage ) { TabEntry* pEntry = FindEntry( nId ); if ( pEntry ) { - pTabPage = new FwkTabPage( &m_aTabCtrl, pEntry->m_sPageURL, pEntry->m_xEventHdl, m_xWinProvider ); + pTabPage = VclPtr<FwkTabPage>::Create( m_aTabCtrl.get(), pEntry->m_sPageURL, pEntry->m_xEventHdl, m_xWinProvider ); pEntry->m_pPage = pTabPage; - m_aTabCtrl.SetTabPage( nId, pTabPage ); + m_aTabCtrl->SetTabPage( nId, pTabPage ); pTabPage->Show(); pTabPage->ActivatePage(); } } else { pTabPage->ActivatePage(); } - m_aTabCtrl.BroadcastEvent( VCLEVENT_TABPAGE_ACTIVATE ); + m_aTabCtrl->BroadcastEvent( VCLEVENT_TABPAGE_ACTIVATE ); return 1; } IMPL_LINK_NOARG(FwkTabWindow, DeactivatePageHdl) { - m_aTabCtrl.BroadcastEvent( VCLEVENT_TABPAGE_DEACTIVATE ); + m_aTabCtrl->BroadcastEvent( VCLEVENT_TABPAGE_DEACTIVATE ); return 1; } void FwkTabWindow::AddEventListener( const Link& rEventListener ) { - m_aTabCtrl.AddEventListener( rEventListener ); + m_aTabCtrl->AddEventListener( rEventListener ); } void FwkTabWindow::RemoveEventListener( const Link& rEventListener ) { - m_aTabCtrl.RemoveEventListener( rEventListener ); + m_aTabCtrl->RemoveEventListener( rEventListener ); } FwkTabPage* FwkTabWindow::AddTabPage( sal_Int32 nIndex, const uno::Sequence< beans::NamedValue >& rProperties ) @@ -311,20 +324,20 @@ FwkTabPage* FwkTabWindow::AddTabPage( sal_Int32 nIndex, const uno::Sequence< bea TabEntry* pEntry = new TabEntry( nIndex, sPageURL, xEventHdl ); m_TabList.push_back( pEntry ); sal_uInt16 nIdx = static_cast< sal_uInt16 >( nIndex ); - m_aTabCtrl.InsertPage( nIdx, sTitle ); + m_aTabCtrl->InsertPage( nIdx, sTitle ); if ( !sToolTip.isEmpty() ) - m_aTabCtrl.SetHelpText( nIdx, sToolTip ); + m_aTabCtrl->SetHelpText( nIdx, sToolTip ); if ( xImage.is() ) - m_aTabCtrl.SetPageImage( nIdx, Image( xImage ) ); + m_aTabCtrl->SetPageImage( nIdx, Image( xImage ) ); if ( bDisabled ) - m_aTabCtrl.EnablePage( nIdx, false ); + m_aTabCtrl->EnablePage( nIdx, false ); return pEntry->m_pPage; } void FwkTabWindow::ActivatePage( sal_Int32 nIndex ) { - m_aTabCtrl.SetCurPageId( static_cast< sal_uInt16 >( nIndex ) ); + m_aTabCtrl->SetCurPageId( static_cast< sal_uInt16 >( nIndex ) ); ActivatePageHdl( &m_aTabCtrl ); } @@ -333,7 +346,7 @@ void FwkTabWindow::RemovePage( sal_Int32 nIndex ) TabEntry* pEntry = FindEntry(nIndex); if ( pEntry ) { - m_aTabCtrl.RemovePage( static_cast< sal_uInt16 >( nIndex ) ); + m_aTabCtrl->RemovePage( static_cast< sal_uInt16 >( nIndex ) ); if (RemoveEntry(nIndex)) delete pEntry; } @@ -342,7 +355,7 @@ void FwkTabWindow::RemovePage( sal_Int32 nIndex ) void FwkTabWindow::Resize() { Size aPageSize = GetSizePixel(); - m_aTabCtrl.SetTabPageSizePixel( aPageSize ); + m_aTabCtrl->SetTabPageSizePixel( aPageSize ); } } // namespace framework diff --git a/framework/source/helper/vclstatusindicator.cxx b/framework/source/helper/vclstatusindicator.cxx index e02c4e747ca9..18f08294d489 100644 --- a/framework/source/helper/vclstatusindicator.cxx +++ b/framework/source/helper/vclstatusindicator.cxx @@ -48,7 +48,7 @@ void SAL_CALL VCLStatusIndicator::start(const OUString& sText , vcl::Window* pParentWindow = VCLUnoHelper::GetWindow(m_xParentWindow); if (!m_pStatusBar) - m_pStatusBar = new StatusBar(pParentWindow, WB_3DLOOK|WB_BORDER); + m_pStatusBar = VclPtr<StatusBar>::Create(pParentWindow, WB_3DLOOK|WB_BORDER); VCLStatusIndicator::impl_recalcLayout(m_pStatusBar, pParentWindow); @@ -91,8 +91,7 @@ void SAL_CALL VCLStatusIndicator::end() m_pStatusBar->EndProgressMode(); m_pStatusBar->Show(false); - delete m_pStatusBar; - m_pStatusBar = 0; + m_pStatusBar.disposeAndClear(); } } diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index f3434b739541..6ccaf62f89e6 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -906,7 +906,7 @@ void LayoutManager::implts_createProgressBar() vcl::Window* pWindow = VCLUnoHelper::GetWindow( xContainerWindow ); if ( pWindow ) { - StatusBar* pStatusBar = new StatusBar( pWindow, WinBits( WB_LEFT | WB_3DLOOK ) ); + VclPtrInstance<StatusBar> pStatusBar( pWindow, WinBits( WB_LEFT | WB_3DLOOK ) ); Reference< awt::XWindow > xStatusBarWindow2( VCLUnoHelper::GetInterface( pStatusBar )); pWrapper->setStatusBar( xStatusBarWindow2, true ); } diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx index f40b98d068f2..1b1b9fc41948 100644 --- a/framework/source/layoutmanager/toolbarlayoutmanager.cxx +++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx @@ -1031,14 +1031,14 @@ void ToolbarLayoutManager::setParentWindow( if ( xParentWindow.is() ) { SolarMutexGuard aGuard; - ::DockingAreaWindow* pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xTopDockWindow ) ); + VclPtr< ::DockingAreaWindow > pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xTopDockWindow ).get() ); if( pWindow ) pWindow->SetAlign( WINDOWALIGN_TOP ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xBottomDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_BOTTOM ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xLeftDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_LEFT ); - pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xRightDockWindow ) ); - if( pWindow ) pWindow->SetAlign( WINDOWALIGN_RIGHT ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xBottomDockWindow ).get() ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_BOTTOM ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xLeftDockWindow ).get() ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_LEFT ); + pWindow = dynamic_cast< ::DockingAreaWindow* >(VCLUnoHelper::GetWindow( xRightDockWindow ).get() ); + if( pWindow ) pWindow->SetAlign( WINDOWALIGN_RIGHT ); implts_reparentToolbars(); } else diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx index b235a624cd4e..0a23fa606e66 100644 --- a/framework/source/services/autorecovery.cxx +++ b/framework/source/services/autorecovery.cxx @@ -4205,11 +4205,11 @@ void AutoRecovery::impl_showFullDiscError() if (sBackupPath.getLength() < 1) sBackupPath = sBackupURL; - ErrorBox dlgError( - 0, WB_OK, + ScopedVclPtrInstance<ErrorBox> dlgError( + nullptr, WB_OK, sMsg.replaceAll("%PATH", sBackupPath)); - dlgError.SetButtonText(dlgError.GetButtonId(0), sBtn); - dlgError.Execute(); + dlgError->SetButtonText(dlgError->GetButtonId(0), sBtn); + dlgError->Execute(); } void AutoRecovery::impl_establishProgress(const AutoRecovery::TDocumentInfo& rInfo , diff --git a/framework/source/services/tabwindowservice.cxx b/framework/source/services/tabwindowservice.cxx index dd9c46e58235..f93aee07ed9a 100644 --- a/framework/source/services/tabwindowservice.cxx +++ b/framework/source/services/tabwindowservice.cxx @@ -68,8 +68,8 @@ struct TTabPageInfo public: ::sal_Int32 m_nIndex; - bool m_bCreated; - FwkTabPage* m_pPage; + bool m_bCreated; + VclPtr<FwkTabPage> m_pPage; css::uno::Sequence< css::beans::NamedValue > m_lProperties; }; @@ -159,7 +159,7 @@ private: css::uno::Reference< css::awt::XWindow > m_xTabWin; /// the VCL tab window - FwkTabWindow* m_pTabWin; + VclPtr<FwkTabWindow> m_pTabWin; /// container of inserted tab pages TTabPageInfoHash m_lTabPageInfos; @@ -356,7 +356,7 @@ void SAL_CALL TabWindowService::dispose() if (m_pTabWin) m_pTabWin->RemoveEventListener( LINK( this, TabWindowService, EventListener ) ); - m_pTabWin = NULL; + m_pTabWin.clear(); m_xTabWin.clear(); } diff --git a/framework/source/uielement/addonstoolbarwrapper.cxx b/framework/source/uielement/addonstoolbarwrapper.cxx index 77987fa3c279..35506a24e86c 100644 --- a/framework/source/uielement/addonstoolbarwrapper.cxx +++ b/framework/source/uielement/addonstoolbarwrapper.cxx @@ -114,7 +114,7 @@ void SAL_CALL AddonsToolBarWrapper::initialize( const Sequence< Any >& aArgument { sal_uLong nStyles = WB_LINESPACING | WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; - pToolBar = new ToolBox( pWindow, nStyles ); + pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); pToolBarManager = new AddonsToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); m_xToolBarManager = Reference< XComponent >( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); } diff --git a/framework/source/uielement/buttontoolbarcontroller.cxx b/framework/source/uielement/buttontoolbarcontroller.cxx index 2219b5c6ff97..aaf068591354 100644 --- a/framework/source/uielement/buttontoolbarcontroller.cxx +++ b/framework/source/uielement/buttontoolbarcontroller.cxx @@ -152,7 +152,7 @@ void SAL_CALL ButtonToolbarController::dispose() throw (::com::sun::star::uno::R m_xContext.clear(); m_xURLTransformer.clear(); m_xFrame.clear(); - m_pToolbar = 0; + m_pToolbar.clear(); m_bDisposed = true; } } diff --git a/framework/source/uielement/comboboxtoolbarcontroller.cxx b/framework/source/uielement/comboboxtoolbarcontroller.cxx index 2f3cefb4f4d0..15fb15cfd3a9 100644 --- a/framework/source/uielement/comboboxtoolbarcontroller.cxx +++ b/framework/source/uielement/comboboxtoolbarcontroller.cxx @@ -55,6 +55,7 @@ class ComboBoxControl : public ComboBox public: ComboBoxControl( vcl::Window* pParent, WinBits nStyle, IComboBoxListener* pComboBoxListener ); virtual ~ComboBoxControl(); + virtual void dispose() SAL_OVERRIDE; virtual void Select() SAL_OVERRIDE; virtual void DoubleClick() SAL_OVERRIDE; @@ -76,7 +77,13 @@ ComboBoxControl::ComboBoxControl( vcl::Window* pParent, WinBits nStyle, IComboBo ComboBoxControl::~ComboBoxControl() { + disposeOnce(); +} + +void ComboBoxControl::dispose() +{ m_pComboBoxListener = 0; + ComboBox::dispose(); } void ComboBoxControl::Select() @@ -142,7 +149,7 @@ ComboboxToolbarController::ComboboxToolbarController( ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand ) , m_pComboBox( 0 ) { - m_pComboBox = new ComboBoxControl( m_pToolbar, WB_DROPDOWN, this ); + m_pComboBox = VclPtr<ComboBoxControl>::Create( m_pToolbar, WB_DROPDOWN, this ); if ( nWidth == 0 ) nWidth = 100; @@ -164,11 +171,9 @@ throw ( RuntimeException, std::exception ) SolarMutexGuard aSolarMutexGuard; m_pToolbar->SetItemWindow( m_nID, 0 ); - delete m_pComboBox; + m_pComboBox.disposeAndClear(); ComplexToolbarController::dispose(); - - m_pComboBox = 0; } Sequence<PropertyValue> ComboboxToolbarController::getExecuteArgs(sal_Int16 KeyModifier) const diff --git a/framework/source/uielement/complextoolbarcontroller.cxx b/framework/source/uielement/complextoolbarcontroller.cxx index 871c7b2bba6a..05f1d1c27a44 100644 --- a/framework/source/uielement/complextoolbarcontroller.cxx +++ b/framework/source/uielement/complextoolbarcontroller.cxx @@ -76,7 +76,7 @@ throw ( RuntimeException, std::exception ) svt::ToolboxController::dispose(); m_xURLTransformer.clear(); - m_pToolbar = 0; + m_pToolbar.clear(); m_nID = 0; } diff --git a/framework/source/uielement/dropdownboxtoolbarcontroller.cxx b/framework/source/uielement/dropdownboxtoolbarcontroller.cxx index 5eb339284cb9..7d00fbcd70d9 100644 --- a/framework/source/uielement/dropdownboxtoolbarcontroller.cxx +++ b/framework/source/uielement/dropdownboxtoolbarcontroller.cxx @@ -54,6 +54,7 @@ class ListBoxControl : public ListBox public: ListBoxControl( vcl::Window* pParent, WinBits nStyle, IListBoxListener* pListBoxListener ); virtual ~ListBoxControl(); + virtual void dispose() SAL_OVERRIDE; virtual void Select() SAL_OVERRIDE; virtual void DoubleClick() SAL_OVERRIDE; @@ -73,7 +74,13 @@ ListBoxControl::ListBoxControl( vcl::Window* pParent, WinBits nStyle, IListBoxLi ListBoxControl::~ListBoxControl() { + disposeOnce(); +} + +void ListBoxControl::dispose() +{ m_pListBoxListener = 0; + ListBox::dispose(); } void ListBoxControl::Select() @@ -125,7 +132,7 @@ DropdownToolbarController::DropdownToolbarController( ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand ) , m_pListBoxControl( 0 ) { - m_pListBoxControl = new ListBoxControl( m_pToolbar, WB_DROPDOWN|WB_AUTOHSCROLL|WB_BORDER, this ); + m_pListBoxControl = VclPtr<ListBoxControl>::Create( m_pToolbar, WB_DROPDOWN|WB_AUTOHSCROLL|WB_BORDER, this ); if ( nWidth == 0 ) nWidth = 100; @@ -148,11 +155,9 @@ throw ( RuntimeException, std::exception ) SolarMutexGuard aSolarMutexGuard; m_pToolbar->SetItemWindow( m_nID, 0 ); - delete m_pListBoxControl; + m_pListBoxControl.disposeAndClear(); ComplexToolbarController::dispose(); - - m_pListBoxControl = 0; } Sequence<PropertyValue> DropdownToolbarController::getExecuteArgs(sal_Int16 KeyModifier) const diff --git a/framework/source/uielement/edittoolbarcontroller.cxx b/framework/source/uielement/edittoolbarcontroller.cxx index 67cdcb1e2e3d..41403fd9f7e7 100644 --- a/framework/source/uielement/edittoolbarcontroller.cxx +++ b/framework/source/uielement/edittoolbarcontroller.cxx @@ -53,6 +53,7 @@ class EditControl : public Edit public: EditControl( vcl::Window* pParent, WinBits nStyle, IEditListener* pEditListener ); virtual ~EditControl(); + virtual void dispose() SAL_OVERRIDE; virtual void Modify() SAL_OVERRIDE; virtual void KeyInput( const ::KeyEvent& rKEvt ) SAL_OVERRIDE; @@ -72,7 +73,13 @@ EditControl::EditControl( vcl::Window* pParent, WinBits nStyle, IEditListener* p EditControl::~EditControl() { + disposeOnce(); +} + +void EditControl::dispose() +{ m_pEditListener = 0; + Edit::dispose(); } void EditControl::Modify() @@ -124,7 +131,7 @@ EditToolbarController::EditToolbarController( ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand ) , m_pEditControl( 0 ) { - m_pEditControl = new EditControl( m_pToolbar, WB_BORDER, this ); + m_pEditControl = VclPtr<EditControl>::Create( m_pToolbar, WB_BORDER, this ); if ( nWidth == 0 ) nWidth = 100; @@ -145,11 +152,9 @@ throw ( RuntimeException, std::exception ) SolarMutexGuard aSolarMutexGuard; m_pToolbar->SetItemWindow( m_nID, 0 ); - delete m_pEditControl; + m_pEditControl.disposeAndClear(); ComplexToolbarController::dispose(); - - m_pEditControl = 0; } Sequence<PropertyValue> EditToolbarController::getExecuteArgs(sal_Int16 KeyModifier) const diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx index 3e097655c9ab..7ad43146d4cc 100644 --- a/framework/source/uielement/fontsizemenucontroller.cxx +++ b/framework/source/uielement/fontsizemenucontroller.cxx @@ -135,7 +135,7 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r if ( pVCLPopupMenu ) { boost::scoped_ptr<FontList> pFontList; - boost::scoped_ptr<Printer> pInfoPrinter; + ScopedVclPtr<Printer> pInfoPrinter; OUString aPrinterName; SolarMutexGuard aSolarMutexGuard; @@ -144,7 +144,7 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r aPrinterName = retrievePrinterName( m_xFrame ); if ( !aPrinterName.isEmpty() ) { - pInfoPrinter.reset(new Printer( aPrinterName )); + pInfoPrinter.reset(VclPtr<Printer>::Create( aPrinterName )); if ( pInfoPrinter && pInfoPrinter->GetDevFontCount() > 0 ) pFontList.reset(new FontList( pInfoPrinter.get() )); } diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx index c2cdf4058fe4..7bf96258312d 100644 --- a/framework/source/uielement/generictoolbarcontroller.cxx +++ b/framework/source/uielement/generictoolbarcontroller.cxx @@ -125,7 +125,7 @@ throw ( RuntimeException, std::exception ) svt::ToolboxController::dispose(); - m_pToolbar = 0; + m_pToolbar.clear(); m_nID = 0; } diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx index 259601ea8855..c2e324717825 100644 --- a/framework/source/uielement/popuptoolbarcontroller.cxx +++ b/framework/source/uielement/popuptoolbarcontroller.cxx @@ -146,7 +146,7 @@ throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) } SolarMutexGuard aSolarLock; - ToolBox* pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ) ); + VclPtr< ToolBox > pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ).get() ); if ( pToolBox ) { ToolBoxItemBits nCurStyle( pToolBox->GetItemBits( m_nToolBoxId ) ); @@ -181,7 +181,7 @@ PopupMenuToolbarController::createPopupWindow() createPopupMenuController(); SolarMutexGuard aSolarLock; - ToolBox* pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ) ); + VclPtr< ToolBox > pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ).get() ); if ( !pToolBox ) return xRet; @@ -540,7 +540,7 @@ static bool Impl_ExistURLInMenu( void NewToolbarController::setItemImage( const OUString &rCommand ) { SolarMutexGuard aSolarLock; - ToolBox* pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ) ); + VclPtr< ToolBox> pToolBox = static_cast< ToolBox* >( VCLUnoHelper::GetWindow( getParent() ).get() ); if ( !pToolBox ) return; diff --git a/framework/source/uielement/spinfieldtoolbarcontroller.cxx b/framework/source/uielement/spinfieldtoolbarcontroller.cxx index efe6a711877f..3d60f613e000 100644 --- a/framework/source/uielement/spinfieldtoolbarcontroller.cxx +++ b/framework/source/uielement/spinfieldtoolbarcontroller.cxx @@ -59,6 +59,7 @@ class SpinfieldControl : public SpinField public: SpinfieldControl( vcl::Window* pParent, WinBits nStyle, ISpinfieldListener* pSpinFieldListener ); virtual ~SpinfieldControl(); + virtual void dispose() SAL_OVERRIDE; virtual void Up() SAL_OVERRIDE; virtual void Down() SAL_OVERRIDE; @@ -84,7 +85,13 @@ SpinfieldControl::SpinfieldControl( vcl::Window* pParent, WinBits nStyle, ISpinf SpinfieldControl::~SpinfieldControl() { + disposeOnce(); +} + +void SpinfieldControl::dispose() +{ m_pSpinFieldListener = 0; + SpinField::dispose(); } void SpinfieldControl::Up() @@ -185,7 +192,7 @@ SpinfieldToolbarController::SpinfieldToolbarController( , m_nStep( 0.0 ) , m_pSpinfieldControl( 0 ) { - m_pSpinfieldControl = new SpinfieldControl( m_pToolbar, WB_SPIN|WB_BORDER, this ); + m_pSpinfieldControl = VclPtr<SpinfieldControl>::Create( m_pToolbar, WB_SPIN|WB_BORDER, this ); if ( nWidth == 0 ) nWidth = 100; @@ -206,11 +213,9 @@ throw ( RuntimeException, std::exception ) SolarMutexGuard aSolarMutexGuard; m_pToolbar->SetItemWindow( m_nID, 0 ); - delete m_pSpinfieldControl; + m_pSpinfieldControl.disposeAndClear(); ComplexToolbarController::dispose(); - - m_pSpinfieldControl = 0; } Sequence<PropertyValue> SpinfieldToolbarController::getExecuteArgs(sal_Int16 KeyModifier) const diff --git a/framework/source/uielement/statusbar.cxx b/framework/source/uielement/statusbar.cxx index 9358efe228b2..2f520ec46d95 100644 --- a/framework/source/uielement/statusbar.cxx +++ b/framework/source/uielement/statusbar.cxx @@ -34,10 +34,6 @@ FrameworkStatusBar::FrameworkStatusBar( SetOutputSizePixel( CalcWindowSizePixel() ); } -FrameworkStatusBar::~FrameworkStatusBar() -{ -} - void FrameworkStatusBar::SetStatusBarManager( StatusBarManager* pStatusBarManager ) { SolarMutexGuard aSolarMutexGuard; diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx index d04529352636..f6bfb7eaf03e 100644 --- a/framework/source/uielement/statusbarmanager.cxx +++ b/framework/source/uielement/statusbarmanager.cxx @@ -200,40 +200,39 @@ void SAL_CALL StatusBarManager::dispose() throw( uno::RuntimeException, std::exc { SolarMutexGuard g; - if ( !m_bDisposed ) + if ( m_bDisposed ) + return; + + RemoveControllers(); + + // destroy the item data + for ( sal_uInt16 n = 0; n < m_pStatusBar->GetItemCount(); n++ ) { - RemoveControllers(); + AddonStatusbarItemData *pUserData = static_cast< AddonStatusbarItemData *>( + m_pStatusBar->GetItemData( m_pStatusBar->GetItemId( n ) ) ); + if ( pUserData ) + delete pUserData; + } - // destroy the item data - for ( sal_uInt16 n = 0; n < m_pStatusBar->GetItemCount(); n++ ) + m_pStatusBar.disposeAndClear(); + + if ( m_bFrameActionRegistered && m_xFrame.is() ) + { + try { - AddonStatusbarItemData *pUserData = static_cast< AddonStatusbarItemData *>( - m_pStatusBar->GetItemData( m_pStatusBar->GetItemId( n ) ) ); - if ( pUserData ) - delete pUserData; + m_xFrame->removeFrameActionListener( uno::Reference< frame::XFrameActionListener >( + static_cast< ::cppu::OWeakObject *>( this ), + uno::UNO_QUERY )); } - - delete m_pStatusBar; - m_pStatusBar = 0; - - if ( m_bFrameActionRegistered && m_xFrame.is() ) + catch ( const uno::Exception& ) { - try - { - m_xFrame->removeFrameActionListener( uno::Reference< frame::XFrameActionListener >( - static_cast< ::cppu::OWeakObject *>( this ), - uno::UNO_QUERY )); - } - catch ( const uno::Exception& ) - { - } } + } - m_xFrame.clear(); - m_xContext.clear(); + m_xFrame.clear(); + m_xContext.clear(); - m_bDisposed = true; - } + m_bDisposed = true; } } diff --git a/framework/source/uielement/statusbarwrapper.cxx b/framework/source/uielement/statusbarwrapper.cxx index 7d5322f12e8a..2f1f74028a0c 100644 --- a/framework/source/uielement/statusbarwrapper.cxx +++ b/framework/source/uielement/statusbarwrapper.cxx @@ -110,7 +110,7 @@ void SAL_CALL StatusBarWrapper::initialize( const Sequence< Any >& aArguments ) { sal_uLong nStyles = WinBits( WB_LEFT | WB_3DLOOK ); - pStatusBar = new FrameworkStatusBar( pWindow, nStyles ); + pStatusBar = VclPtr<FrameworkStatusBar>::Create( pWindow, nStyles ); pStatusBarManager = new StatusBarManager( m_xContext, xFrame, m_aResourceURL, pStatusBar ); static_cast<FrameworkStatusBar*>(pStatusBar)->SetStatusBarManager( pStatusBarManager ); m_xStatusBarManager = Reference< XComponent >( static_cast< OWeakObject *>( pStatusBarManager ), UNO_QUERY ); diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 4de9df463d66..aca1580fef76 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -1,4 +1,3 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * @@ -250,7 +249,7 @@ ToolBarManager::~ToolBarManager() void ToolBarManager::Destroy() { - OSL_ASSERT( m_pToolBar != 0 ); + OSL_ASSERT( m_pToolBar != nullptr ); SolarMutexGuard g; if ( m_bAddedToTaskPaneList ) { @@ -288,7 +287,7 @@ void ToolBarManager::Destroy() m_pToolBar->SetDataChangedHdl( aEmpty ); m_pToolBar->SetCommandHdl( aEmpty ); - m_pToolBar = 0; + m_pToolBar.clear(); SvtMiscOptions().RemoveListenerLink( LINK( this, ToolBarManager, MiscOptionsChanged ) ); } @@ -599,6 +598,7 @@ void SAL_CALL ToolBarManager::dispose() throw( RuntimeException, std::exception // We have to destroy our toolbar instance now. Destroy(); + m_pToolBar.clear(); if ( m_bFrameActionRegistered && m_xFrame.is() ) { @@ -727,7 +727,7 @@ void ToolBarManager::setToolBarImage(const Image& _aImage,const CommandToInfoMap { const ::std::vector< sal_uInt16 >& _rIDs = _pIter->second.aIds; m_pToolBar->SetItemImage( _pIter->second.nId, _aImage ); - ::std::for_each(_rIDs.begin(),_rIDs.end(),::boost::bind(&ToolBox::SetItemImage,m_pToolBar,_1,_aImage)); + ::std::for_each(_rIDs.begin(),_rIDs.end(),::boost::bind(&ToolBox::SetItemImage,m_pToolBar.get(),_1,_aImage)); } void SAL_CALL ToolBarManager::elementReplaced( const ::com::sun::star::ui::ConfigurationEvent& Event ) throw (::com::sun::star::uno::RuntimeException, std::exception) diff --git a/framework/source/uielement/toolbarwrapper.cxx b/framework/source/uielement/toolbarwrapper.cxx index ad609a20cca8..36f9909a250b 100644 --- a/framework/source/uielement/toolbarwrapper.cxx +++ b/framework/source/uielement/toolbarwrapper.cxx @@ -150,7 +150,7 @@ void SAL_CALL ToolBarWrapper::initialize( const Sequence< Any >& aArguments ) th { sal_uLong nStyles = WB_LINESPACING | WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; - pToolBar = new ToolBox( pWindow, nStyles ); + pToolBar = VclPtr<ToolBox>::Create( pWindow, nStyles ); pToolBarManager = new ToolBarManager( m_xContext, xFrame, m_aResourceURL, pToolBar ); m_xToolBarManager = Reference< XComponent >( static_cast< OWeakObject *>( pToolBarManager ), UNO_QUERY ); pToolBar->WillUsePopupMode( bPopupMode ); |