diff options
Diffstat (limited to 'sfx2/source/appl')
-rw-r--r-- | sfx2/source/appl/appopen.cxx | 10 | ||||
-rw-r--r-- | sfx2/source/appl/appserv.cxx | 12 | ||||
-rw-r--r-- | sfx2/source/appl/childwin.cxx | 24 | ||||
-rw-r--r-- | sfx2/source/appl/fileobj.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/appl/helpinterceptor.hxx | 3 | ||||
-rw-r--r-- | sfx2/source/appl/impldde.cxx | 30 | ||||
-rw-r--r-- | sfx2/source/appl/lnkbase2.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/appl/module.cxx | 5 | ||||
-rw-r--r-- | sfx2/source/appl/newhelp.cxx | 285 | ||||
-rw-r--r-- | sfx2/source/appl/newhelp.hxx | 93 | ||||
-rw-r--r-- | sfx2/source/appl/opengrf.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/appl/openuriexternally.cxx | 6 | ||||
-rw-r--r-- | sfx2/source/appl/sfxhelp.cxx | 12 | ||||
-rw-r--r-- | sfx2/source/appl/workwin.cxx | 29 |
14 files changed, 320 insertions, 199 deletions
diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx index 582a4b8e935d..47938744425e 100644 --- a/sfx2/source/appl/appopen.cxx +++ b/sfx2/source/appl/appopen.cxx @@ -462,8 +462,8 @@ void SfxApplication::NewDocExec_Impl( SfxRequest& rReq ) bool bNewWin = false; vcl::Window* pTopWin = GetTopWindow(); - SfxTemplateManagerDlg aTemplDlg; - int nRet = aTemplDlg.Execute(); + ScopedVclPtrInstance< SfxTemplateManagerDlg > aTemplDlg; + int nRet = aTemplDlg->Execute(); if ( nRet == RET_OK ) { rReq.Done(); @@ -831,11 +831,11 @@ void SfxApplication::OpenDocExec_Impl( SfxRequest& rReq ) SolarMutexGuard aGuard; vcl::Window *pWindow = SfxGetpApp()->GetTopWindow(); - MessageDialog aSecurityWarningBox(pWindow, + ScopedVclPtrInstance<MessageDialog> aSecurityWarningBox(pWindow, SfxResId(STR_SECURITY_WARNING_NO_HYPERLINKS), VCL_MESSAGE_WARNING); - aSecurityWarningBox.SetText( SfxResId(RID_SECURITY_WARNING_TITLE).toString() ); - aSecurityWarningBox.Execute(); + aSecurityWarningBox->SetText( SfxResId(RID_SECURITY_WARNING_TITLE).toString() ); + aSecurityWarningBox->Execute(); return; } diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx index d985a1efdc14..b60da280bf12 100644 --- a/sfx2/source/appl/appserv.cxx +++ b/sfx2/source/appl/appserv.cxx @@ -451,8 +451,8 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) case SID_SHOW_LICENSE: { - LicenseDialog aDialog; - aDialog.Execute(); + ScopedVclPtrInstance< LicenseDialog > aDialog; + aDialog->Execute(); break; } @@ -539,16 +539,16 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq ) case SID_TEMPLATE_MANAGER: { - SfxTemplateManagerDlg dlg; - dlg.Execute(); + ScopedVclPtrInstance< SfxTemplateManagerDlg > dlg; + dlg->Execute(); bDone = true; break; } case SID_TEMPLATE_ADDRESSBOKSOURCE: { - svt::AddressBookSourceDialog aDialog(GetTopWindow(), ::comphelper::getProcessComponentContext()); - aDialog.Execute(); + ScopedVclPtrInstance< svt::AddressBookSourceDialog > aDialog(GetTopWindow(), ::comphelper::getProcessComponentContext()); + aDialog->Execute(); bDone = true; break; } diff --git a/sfx2/source/appl/childwin.cxx b/sfx2/source/appl/childwin.cxx index 2a904ca2421c..e1f2ecd40809 100644 --- a/sfx2/source/appl/childwin.cxx +++ b/sfx2/source/appl/childwin.cxx @@ -160,7 +160,6 @@ SfxChildWindow::SfxChildWindow(vcl::Window *pParentWindow, sal_uInt16 nId) : pParent(pParentWindow) , nType(nId) , eChildAlignment(SfxChildAlignment::NOALIGNMENT) - , pWindow(0L) { pImp = new SfxChildWindow_Impl; pImp->pFact = 0L; @@ -199,7 +198,7 @@ void SfxChildWindow::Destroy() SfxChildWindow::~SfxChildWindow() { delete pContext; - delete pWindow; + pWindow.disposeAndClear(); delete pImp; } @@ -336,16 +335,16 @@ SfxChildWinInfo SfxChildWindow::GetInfo() const sal_uIntPtr nMask = WINDOWSTATE_MASK_POS | WINDOWSTATE_MASK_STATE; if ( pWindow->GetStyle() & WB_SIZEABLE ) nMask |= ( WINDOWSTATE_MASK_WIDTH | WINDOWSTATE_MASK_HEIGHT ); - aInfo.aWinState = static_cast<SystemWindow*>(pWindow)->GetWindowState( nMask ); + aInfo.aWinState = static_cast<SystemWindow*>(pWindow.get())->GetWindowState( nMask ); } else if ( pWindow->GetType() == RSC_DOCKINGWINDOW ) { - if (static_cast<DockingWindow*>(pWindow)->GetFloatingWindow() ) - aInfo.aWinState = static_cast<DockingWindow*>(pWindow)->GetFloatingWindow()->GetWindowState(); + if (static_cast<DockingWindow*>(pWindow.get())->GetFloatingWindow() ) + aInfo.aWinState = static_cast<DockingWindow*>(pWindow.get())->GetFloatingWindow()->GetWindowState(); else { SfxChildWinInfo aTmpInfo; - static_cast<SfxDockingWindow*>(pWindow)->FillInfo( aTmpInfo ); + static_cast<SfxDockingWindow*>(pWindow.get())->FillInfo( aTmpInfo ); aInfo.aExtraString = aTmpInfo.aExtraString; } } @@ -511,14 +510,13 @@ void SfxChildWindow::CreateContext( sal_uInt16 nContextId, SfxBindings& rBinding } SfxChildWindowContext::SfxChildWindowContext( sal_uInt16 nId ) - : pWindow( NULL ) - , nContextId( nId ) + : nContextId( nId ) { } SfxChildWindowContext::~SfxChildWindowContext() { - delete pWindow; + pWindow.disposeAndClear(); } FloatingWindow* SfxChildWindowContext::GetFloatingWindow() const @@ -654,10 +652,10 @@ void SfxChildWindow::Hide() switch ( pWindow->GetType() ) { case RSC_DOCKINGWINDOW : - static_cast<DockingWindow*>(pWindow)->Hide(); + static_cast<DockingWindow*>(pWindow.get())->Hide(); break; case RSC_TOOLBOX : - static_cast<ToolBox*>(pWindow)->Hide(); + static_cast<ToolBox*>(pWindow.get())->Hide(); break; default: pWindow->Hide(); @@ -670,10 +668,10 @@ void SfxChildWindow::Show( sal_uInt16 nFlags ) switch ( pWindow->GetType() ) { case RSC_DOCKINGWINDOW : - static_cast<DockingWindow*>(pWindow)->Show( true, nFlags ); + static_cast<DockingWindow*>(pWindow.get())->Show( true, nFlags ); break; case RSC_TOOLBOX : - static_cast<ToolBox*>(pWindow)->Show( true, nFlags ); + static_cast<ToolBox*>(pWindow.get())->Show( true, nFlags ); break; default: pWindow->Show( true, nFlags ); diff --git a/sfx2/source/appl/fileobj.hxx b/sfx2/source/appl/fileobj.hxx index 85fb53b33a9c..5e2a5fddfcc1 100644 --- a/sfx2/source/appl/fileobj.hxx +++ b/sfx2/source/appl/fileobj.hxx @@ -35,7 +35,7 @@ class SvFileObject : public sfx2::SvLinkSource SfxMediumRef xMed; ImplSVEvent* nPostUserEventId; SfxMediumRef* pDelMed; - vcl::Window* pOldParent; + VclPtr<vcl::Window> pOldParent; sal_uInt8 nType; diff --git a/sfx2/source/appl/helpinterceptor.hxx b/sfx2/source/appl/helpinterceptor.hxx index e34686e7b40d..a990518bc7a4 100644 --- a/sfx2/source/appl/helpinterceptor.hxx +++ b/sfx2/source/appl/helpinterceptor.hxx @@ -28,6 +28,7 @@ #include <cppuhelper/implbase1.hxx> #include <com/sun/star/frame/XStatusListener.hpp> #include <tools/link.hxx> +#include <vcl/vclptr.hxx> #include <vector> struct HelpHistoryEntry_Impl @@ -63,7 +64,7 @@ friend class SfxHelpWindow_Impl; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > m_xListener; HelpHistoryList_Impl* m_pHistory; - SfxHelpWindow_Impl* m_pWindow; + VclPtr<SfxHelpWindow_Impl> m_pWindow; sal_uIntPtr m_nCurPos; OUString m_aCurrentURL; com::sun::star::uno::Any m_aViewData; diff --git a/sfx2/source/appl/impldde.cxx b/sfx2/source/appl/impldde.cxx index aa829e21a54f..11aecd90473f 100644 --- a/sfx2/source/appl/impldde.cxx +++ b/sfx2/source/appl/impldde.cxx @@ -57,14 +57,16 @@ namespace sfx2 class SvDDELinkEditDialog : public ModalDialog { - Edit *m_pEdDdeApp; - Edit *m_pEdDdeTopic; - Edit *m_pEdDdeItem; - OKButton *m_pOKButton; + VclPtr<Edit> m_pEdDdeApp; + VclPtr<Edit> m_pEdDdeTopic; + VclPtr<Edit> m_pEdDdeItem; + VclPtr<OKButton> m_pOKButton; DECL_STATIC_LINK( SvDDELinkEditDialog, EditHdl_Impl, Edit* ); public: SvDDELinkEditDialog( vcl::Window* pParent, SvBaseLink* ); + virtual ~SvDDELinkEditDialog(); + virtual void dispose() SAL_OVERRIDE; OUString GetCmd() const; }; @@ -90,6 +92,20 @@ SvDDELinkEditDialog::SvDDELinkEditDialog( vcl::Window* pParent, SvBaseLink* pLin m_pOKButton->Enable( !sServer.isEmpty() && !sTopic.isEmpty() && !sItem.isEmpty() ); } +SvDDELinkEditDialog::~SvDDELinkEditDialog() +{ + disposeOnce(); +} + +void SvDDELinkEditDialog::dispose() +{ + m_pEdDdeApp.clear(); + m_pEdDdeTopic.clear(); + m_pEdDdeItem.clear(); + m_pOKButton.clear(); + ModalDialog::dispose(); +} + OUString SvDDELinkEditDialog::GetCmd() const { OUString sCmd( m_pEdDdeApp->GetText() ), sRet; @@ -255,10 +271,10 @@ bool SvDDEObject::Connect( SvBaseLink * pSvLink ) void SvDDEObject::Edit( vcl::Window* pParent, sfx2::SvBaseLink* pBaseLink, const Link& rEndEditHdl ) { - SvDDELinkEditDialog aDlg( pParent, pBaseLink ); - if ( RET_OK == aDlg.Execute() && rEndEditHdl.IsSet() ) + ScopedVclPtrInstance< SvDDELinkEditDialog > aDlg(pParent, pBaseLink); + if ( RET_OK == aDlg->Execute() && rEndEditHdl.IsSet() ) { - OUString sCommand = aDlg.GetCmd(); + OUString sCommand = aDlg->GetCmd(); rEndEditHdl.Call( &sCommand ); } } diff --git a/sfx2/source/appl/lnkbase2.cxx b/sfx2/source/appl/lnkbase2.cxx index d06c54df8e4f..8834962b8762 100644 --- a/sfx2/source/appl/lnkbase2.cxx +++ b/sfx2/source/appl/lnkbase2.cxx @@ -45,8 +45,8 @@ class ImplDdeItem; struct BaseLink_Impl { Link m_aEndEditLink; - LinkManager* m_pLinkMgr; - vcl::Window* m_pParentWin; + LinkManager* m_pLinkMgr; + VclPtr<vcl::Window> m_pParentWin; FileDialogHelper* m_pFileDlg; bool m_bIsConnect; diff --git a/sfx2/source/appl/module.cxx b/sfx2/source/appl/module.cxx index 7ea881fa76a8..150563429e07 100644 --- a/sfx2/source/appl/module.cxx +++ b/sfx2/source/appl/module.cxx @@ -33,6 +33,7 @@ #include <sfx2/docfac.hxx> #include <sfx2/objface.hxx> #include <sfx2/viewfrm.hxx> +#include <sfx2/tabdlg.hxx> #include <svl/intitem.hxx> #include <sfx2/taskpane.hxx> #include <tools/diagnose_ex.h> @@ -331,9 +332,9 @@ ImageList* SfxModule::GetImageList_Impl( bool bBig ) return pImpl->GetImageList( pResMgr, bBig ); } -SfxTabPage* SfxModule::CreateTabPage( sal_uInt16, vcl::Window*, const SfxItemSet& ) +VclPtr<SfxTabPage> SfxModule::CreateTabPage( sal_uInt16, vcl::Window*, const SfxItemSet& ) { - return NULL; + return VclPtr<SfxTabPage>(); } SfxModuleArr_Impl& SfxModule::GetModules_Impl() diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx index 9d92d78820cc..25a45ce97baf 100644 --- a/sfx2/source/appl/newhelp.cxx +++ b/sfx2/source/appl/newhelp.cxx @@ -303,6 +303,11 @@ extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeContentListBox(vcl::Wi ContentListBox_Impl::~ContentListBox_Impl() { + disposeOnce(); +} + +void ContentListBox_Impl::dispose() +{ sal_uInt16 nPos = 0; SvTreeListEntry* pEntry = GetEntry( nPos++ ); while ( pEntry ) @@ -311,6 +316,7 @@ ContentListBox_Impl::~ContentListBox_Impl() delete static_cast<ContentEntry_Impl*>(pEntry->GetUserData()); pEntry = GetEntry( nPos++ ); } + SvTreeListBox::dispose(); } void ContentListBox_Impl::InitRoot() @@ -426,6 +432,17 @@ HelpTabPage_Impl::HelpTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Impl { } +HelpTabPage_Impl::~HelpTabPage_Impl() +{ + disposeOnce(); +} + +void HelpTabPage_Impl::dispose() +{ + m_pIdxWin.clear(); + TabPage::dispose(); +} + // class ContentTabPage_Impl --------------------------------------------- ContentTabPage_Impl::ContentTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin) : HelpTabPage_Impl(pParent, _pIdxWin, "HelpContentPage", @@ -437,6 +454,17 @@ ContentTabPage_Impl::ContentTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindo m_pContentBox->set_height_request(aSize.Height()); } +ContentTabPage_Impl::~ContentTabPage_Impl() +{ + disposeOnce(); +} + +void ContentTabPage_Impl::dispose() +{ + m_pContentBox.clear(); + HelpTabPage_Impl::dispose(); +} + void ContentTabPage_Impl::ActivatePage() { if ( !m_pIdxWin->WasCursorLeftOrRight() ) @@ -545,7 +573,15 @@ IndexTabPage_Impl::IndexTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Im IndexTabPage_Impl::~IndexTabPage_Impl() { + disposeOnce(); +} + +void IndexTabPage_Impl::dispose() +{ ClearIndex(); + m_pIndexCB.clear(); + m_pOpenBtn.clear(); + HelpTabPage_Impl::dispose(); } @@ -946,6 +982,11 @@ SearchTabPage_Impl::SearchTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_ SearchTabPage_Impl::~SearchTabPage_Impl() { + disposeOnce(); +} + +void SearchTabPage_Impl::dispose() +{ SvtViewOptions aViewOpt( E_TABPAGE, CONFIGNAME_SEARCHPAGE ); sal_Int32 nChecked = m_pFullWordsCB->IsChecked() ? 1 : 0; OUString aUserData = OUString::number( nChecked ); @@ -967,6 +1008,14 @@ SearchTabPage_Impl::~SearchTabPage_Impl() aUserData = comphelper::string::stripEnd(aUserData, ';'); Any aUserItem = makeAny( OUString( aUserData ) ); aViewOpt.SetUserItem( USERITEM_NAME, aUserItem ); + + m_pSearchED.clear(); + m_pSearchBtn.clear(); + m_pFullWordsCB.clear(); + m_pScopeCB.clear(); + m_pResultsLB.clear(); + m_pOpenBtn.clear(); + HelpTabPage_Impl::dispose(); } @@ -1030,8 +1079,8 @@ IMPL_LINK_NOARG(SearchTabPage_Impl, SearchHdl) if ( aFactories.empty() ) { - MessageDialog aBox( this, SfxResId( STR_INFO_NOSEARCHRESULTS ), VCL_MESSAGE_INFO ); - aBox.Execute(); + ScopedVclPtrInstance< MessageDialog > aBox(this, SfxResId( STR_INFO_NOSEARCHRESULTS ), VCL_MESSAGE_INFO); + aBox->Execute(); } } return 0; @@ -1141,6 +1190,11 @@ extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeBookmarksBox(vcl::Wind BookmarksBox_Impl::~BookmarksBox_Impl() { + disposeOnce(); +} + +void BookmarksBox_Impl::dispose() +{ // save bookmarks to configuration SvtHistoryOptions aHistOpt; aHistOpt.Clear( eHELPBOOKMARKS ); @@ -1153,6 +1207,7 @@ BookmarksBox_Impl::~BookmarksBox_Impl() aHistOpt.AppendItem(eHELPBOOKMARKS, *pURL, sEmpty, aTitle, sEmpty, sEmpty); delete pURL; } + ListBox::dispose(); } @@ -1170,15 +1225,15 @@ void BookmarksBox_Impl::DoAction( sal_uInt16 nAction ) sal_Int32 nPos = GetSelectEntryPos(); if ( nPos != LISTBOX_ENTRY_NOTFOUND ) { - SfxAddHelpBookmarkDialog_Impl aDlg( this, true ); - aDlg.SetTitle( GetEntry( nPos ) ); - if ( aDlg.Execute() == RET_OK ) + ScopedVclPtrInstance< SfxAddHelpBookmarkDialog_Impl > aDlg(this, true); + aDlg->SetTitle( GetEntry( nPos ) ); + if ( aDlg->Execute() == RET_OK ) { OUString* pURL = static_cast<OUString*>(GetEntryData( nPos )); RemoveEntry( nPos ); OUString aImageURL = IMAGE_URL; aImageURL += INetURLObject( *pURL ).GetHost(); - nPos = InsertEntry( aDlg.GetTitle(), SvFileInformationManager::GetImage( INetURLObject(aImageURL), false ) ); + nPos = InsertEntry( aDlg->GetTitle(), SvFileInformationManager::GetImage( INetURLObject(aImageURL), false ) ); SetEntryData( nPos, new OUString( *pURL ) ); SelectEntryPos( nPos ); delete pURL; @@ -1271,6 +1326,17 @@ BookmarksTabPage_Impl::BookmarksTabPage_Impl(vcl::Window* pParent, SfxHelpIndexW } } +BookmarksTabPage_Impl::~BookmarksTabPage_Impl() +{ + disposeOnce(); +} + +void BookmarksTabPage_Impl::dispose() +{ + m_pBookmarksBox.clear(); + m_pBookmarksPB.clear(); + HelpTabPage_Impl::dispose(); +} IMPL_LINK_NOARG(BookmarksTabPage_Impl, OpenHdl) @@ -1416,18 +1482,29 @@ SfxHelpIndexWindow_Impl::SfxHelpIndexWindow_Impl(SfxHelpWindow_Impl* _pParent) SfxHelpIndexWindow_Impl::~SfxHelpIndexWindow_Impl() { + disposeOnce(); +} + +void SfxHelpIndexWindow_Impl::dispose() +{ sfx2::RemoveFromTaskPaneList( this ); - DELETEZ( pCPage ); - DELETEZ( pIPage ); - DELETEZ( pSPage ); - DELETEZ( pBPage ); + pCPage.disposeAndClear(); + pIPage.disposeAndClear(); + pSPage.disposeAndClear(); + pBPage.disposeAndClear(); for ( sal_uInt16 i = 0; i < m_pActiveLB->GetEntryCount(); ++i ) delete static_cast<OUString*>(m_pActiveLB->GetEntryData(i)); SvtViewOptions aViewOpt( E_TABDIALOG, CONFIGNAME_INDEXWIN ); aViewOpt.SetPageID( (sal_Int32)m_pTabCtrl->GetCurPageId() ); + + disposeBuilder(); + m_pActiveLB.clear(); + m_pTabCtrl.clear(); + pParentWin.clear(); + vcl::Window::dispose(); } @@ -1805,10 +1882,6 @@ TextWin_Impl::TextWin_Impl( vcl::Window* p ) : DockingWindow( p, 0 ) { } -TextWin_Impl::~TextWin_Impl() -{ -} - bool TextWin_Impl::Notify( NotifyEvent& rNEvt ) { if( ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) && rNEvt.GetKeyEvent()->GetKeyCode().GetCode() == KEY_TAB ) @@ -1830,15 +1903,15 @@ SfxHelpTextWindow_Impl::SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ) : Window( pParent, WB_CLIPCHILDREN | WB_TABSTOP | WB_DIALOGCONTROL ), - aToolBox ( this, 0 ), - aOnStartupCB ( this, SfxResId( RID_HELP_ONSTARTUP_BOX ) ), + aToolBox ( VclPtr<ToolBox>::Create(this, 0) ), + aOnStartupCB ( VclPtr<CheckBox>::Create(this, SfxResId( RID_HELP_ONSTARTUP_BOX )) ), aIndexOnImage ( SfxResId( IMG_HELP_TOOLBOX_INDEX_ON ) ), aIndexOffImage ( SfxResId( IMG_HELP_TOOLBOX_INDEX_OFF ) ), aIndexOnText ( SfxResId( STR_HELP_BUTTON_INDEX_ON ).toString() ), aIndexOffText ( SfxResId( STR_HELP_BUTTON_INDEX_OFF ).toString() ), aOnStartupText ( SfxResId( RID_HELP_ONSTARTUP_TEXT ).toString() ), pHelpWin ( pParent ), - pTextWin ( new TextWin_Impl( this ) ), + pTextWin ( VclPtr<TextWin_Impl>::Create( this ) ), pSrchDlg ( NULL ), nMinPos ( 0 ), bIsDebug ( false ), @@ -1847,36 +1920,36 @@ SfxHelpTextWindow_Impl::SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ) : bIsFullWordSearch ( false ) { - sfx2::AddToTaskPaneList( &aToolBox ); + sfx2::AddToTaskPaneList( aToolBox.get() ); xFrame = Frame::create( ::comphelper::getProcessComponentContext() ); xFrame->initialize( VCLUnoHelper::GetInterface ( pTextWin ) ); xFrame->setName( "OFFICE_HELP" ); lcl_disableLayoutOfFrame(xFrame); - aToolBox.SetHelpId( HID_HELP_TOOLBOX ); - - aToolBox.InsertItem( TBI_INDEX, aIndexOffText ); - aToolBox.SetHelpId( TBI_INDEX, HID_HELP_TOOLBOXITEM_INDEX ); - aToolBox.InsertSeparator(); - aToolBox.InsertItem( TBI_BACKWARD, SfxResId( STR_HELP_BUTTON_PREV ).toString() ); - aToolBox.SetHelpId( TBI_BACKWARD, HID_HELP_TOOLBOXITEM_BACKWARD ); - aToolBox.InsertItem( TBI_FORWARD, SfxResId( STR_HELP_BUTTON_NEXT ).toString() ); - aToolBox.SetHelpId( TBI_FORWARD, HID_HELP_TOOLBOXITEM_FORWARD ); - aToolBox.InsertItem( TBI_START, SfxResId( STR_HELP_BUTTON_START ).toString() ); - aToolBox.SetHelpId( TBI_START, HID_HELP_TOOLBOXITEM_START ); - aToolBox.InsertSeparator(); - aToolBox.InsertItem( TBI_PRINT, SfxResId( STR_HELP_BUTTON_PRINT ).toString() ); - aToolBox.SetHelpId( TBI_PRINT, HID_HELP_TOOLBOXITEM_PRINT ); - aToolBox.InsertItem( TBI_BOOKMARKS, SfxResId( STR_HELP_BUTTON_ADDBOOKMARK ).toString() ); - aToolBox.SetHelpId( TBI_BOOKMARKS, HID_HELP_TOOLBOXITEM_BOOKMARKS ); - aToolBox.InsertItem( TBI_SEARCHDIALOG, SfxResId( STR_HELP_BUTTON_SEARCHDIALOG ).toString() ); - aToolBox.SetHelpId( TBI_SEARCHDIALOG, HID_HELP_TOOLBOXITEM_SEARCHDIALOG ); + aToolBox->SetHelpId( HID_HELP_TOOLBOX ); + + aToolBox->InsertItem( TBI_INDEX, aIndexOffText ); + aToolBox->SetHelpId( TBI_INDEX, HID_HELP_TOOLBOXITEM_INDEX ); + aToolBox->InsertSeparator(); + aToolBox->InsertItem( TBI_BACKWARD, SfxResId( STR_HELP_BUTTON_PREV ).toString() ); + aToolBox->SetHelpId( TBI_BACKWARD, HID_HELP_TOOLBOXITEM_BACKWARD ); + aToolBox->InsertItem( TBI_FORWARD, SfxResId( STR_HELP_BUTTON_NEXT ).toString() ); + aToolBox->SetHelpId( TBI_FORWARD, HID_HELP_TOOLBOXITEM_FORWARD ); + aToolBox->InsertItem( TBI_START, SfxResId( STR_HELP_BUTTON_START ).toString() ); + aToolBox->SetHelpId( TBI_START, HID_HELP_TOOLBOXITEM_START ); + aToolBox->InsertSeparator(); + aToolBox->InsertItem( TBI_PRINT, SfxResId( STR_HELP_BUTTON_PRINT ).toString() ); + aToolBox->SetHelpId( TBI_PRINT, HID_HELP_TOOLBOXITEM_PRINT ); + aToolBox->InsertItem( TBI_BOOKMARKS, SfxResId( STR_HELP_BUTTON_ADDBOOKMARK ).toString() ); + aToolBox->SetHelpId( TBI_BOOKMARKS, HID_HELP_TOOLBOXITEM_BOOKMARKS ); + aToolBox->InsertItem( TBI_SEARCHDIALOG, SfxResId( STR_HELP_BUTTON_SEARCHDIALOG ).toString() ); + aToolBox->SetHelpId( TBI_SEARCHDIALOG, HID_HELP_TOOLBOXITEM_SEARCHDIALOG ); InitToolBoxImages(); - aToolBox.Show(); + aToolBox->Show(); InitOnStartupBox( false ); - aOnStartupCB.SetClickHdl( LINK( this, SfxHelpTextWindow_Impl, CheckHdl ) ); + aOnStartupCB->SetClickHdl( LINK( this, SfxHelpTextWindow_Impl, CheckHdl ) ); aSelectIdle.SetIdleHdl( LINK( this, SfxHelpTextWindow_Impl, SelectHdl ) ); aSelectIdle.SetPriority( SchedulerPriority::LOWEST ); @@ -1887,19 +1960,29 @@ SfxHelpTextWindow_Impl::SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ) : SvtMiscOptions().AddListenerLink( LINK( this, SfxHelpTextWindow_Impl, NotifyHdl ) ); - if ( !aOnStartupCB.GetHelpId().getLength() ) - aOnStartupCB.SetHelpId( HID_HELP_ONSTARTUP_BOX ); + if ( !aOnStartupCB->GetHelpId().getLength() ) + aOnStartupCB->SetHelpId( HID_HELP_ONSTARTUP_BOX ); } SfxHelpTextWindow_Impl::~SfxHelpTextWindow_Impl() { - sfx2::RemoveFromTaskPaneList( &aToolBox ); + disposeOnce(); +} + +void SfxHelpTextWindow_Impl::dispose() +{ + sfx2::RemoveFromTaskPaneList( aToolBox.get() ); bIsInClose = true; SvtMiscOptions().RemoveListenerLink( LINK( this, SfxHelpTextWindow_Impl, NotifyHdl ) ); - delete pSrchDlg; + pSrchDlg.disposeAndClear(); + aToolBox.disposeAndClear(); + aOnStartupCB.disposeAndClear(); + pHelpWin.clear(); + pTextWin.disposeAndClear(); + vcl::Window::dispose(); } @@ -1928,39 +2011,39 @@ void SfxHelpTextWindow_Impl::InitToolBoxImages() aIndexOnImage = Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_INDEX_ON : IMG_HELP_TOOLBOX_INDEX_ON ) ); aIndexOffImage = Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_INDEX_OFF : IMG_HELP_TOOLBOX_INDEX_OFF ) ); - aToolBox.SetItemImage( TBI_INDEX, bIsIndexOn ? aIndexOffImage : aIndexOnImage ); + aToolBox->SetItemImage( TBI_INDEX, bIsIndexOn ? aIndexOffImage : aIndexOnImage ); - aToolBox.SetItemImage( TBI_BACKWARD, + aToolBox->SetItemImage( TBI_BACKWARD, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_PREV : IMG_HELP_TOOLBOX_PREV ) ) ); - aToolBox.SetItemImage( TBI_FORWARD, + aToolBox->SetItemImage( TBI_FORWARD, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_NEXT : IMG_HELP_TOOLBOX_NEXT ) ) ); - aToolBox.SetItemImage( TBI_START, + aToolBox->SetItemImage( TBI_START, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_START : IMG_HELP_TOOLBOX_START ) ) ); - aToolBox.SetItemImage( TBI_PRINT, + aToolBox->SetItemImage( TBI_PRINT, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_PRINT : IMG_HELP_TOOLBOX_PRINT ) ) ); - aToolBox.SetItemImage( TBI_BOOKMARKS, + aToolBox->SetItemImage( TBI_BOOKMARKS, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_BOOKMARKS : IMG_HELP_TOOLBOX_BOOKMARKS ) ) ); - aToolBox.SetItemImage( TBI_SEARCHDIALOG, + aToolBox->SetItemImage( TBI_SEARCHDIALOG, Image( SfxResId( bLarge ? IMG_HELP_TOOLBOX_L_SEARCHDIALOG : IMG_HELP_TOOLBOX_SEARCHDIALOG ) ) ); - Size aSize = aToolBox.CalcWindowSizePixel(); + Size aSize = aToolBox->CalcWindowSizePixel(); aSize.Height() += TOOLBOX_OFFSET; - aToolBox.SetPosSizePixel( Point( 0, TOOLBOX_OFFSET ), aSize ); + aToolBox->SetPosSizePixel( Point( 0, TOOLBOX_OFFSET ), aSize ); SvtMiscOptions aMiscOptions; - if ( aMiscOptions.GetToolboxStyle() != aToolBox.GetOutStyle() ) - aToolBox.SetOutStyle( aMiscOptions.GetToolboxStyle() ); + if ( aMiscOptions.GetToolboxStyle() != aToolBox->GetOutStyle() ) + aToolBox->SetOutStyle( aMiscOptions.GetToolboxStyle() ); } @@ -1998,7 +2081,7 @@ void SfxHelpTextWindow_Impl::InitOnStartupBox( bool bOnlyText ) } if ( bHideBox ) - aOnStartupCB.Hide(); + aOnStartupCB->Hide(); else { // detect module name @@ -2025,20 +2108,20 @@ void SfxHelpTextWindow_Impl::InitOnStartupBox( bool bOnlyText ) // set module name in checkbox text OUString sText( aOnStartupText ); sText = sText.replaceFirst( "%MODULENAME", sModuleName ); - aOnStartupCB.SetText( sText ); + aOnStartupCB->SetText( sText ); // and show it - aOnStartupCB.Show(); + aOnStartupCB->Show(); // set check state - aOnStartupCB.Check( bHelpAtStartup ); - aOnStartupCB.SaveValue(); + aOnStartupCB->Check( bHelpAtStartup ); + aOnStartupCB->SaveValue(); // calculate and set optimal width of the onstartup checkbox OUString sCBText( "XXX" ); - sCBText += aOnStartupCB.GetText(); - long nTextWidth = aOnStartupCB.GetTextWidth( sCBText ); - Size aSize = aOnStartupCB.GetSizePixel(); + sCBText += aOnStartupCB->GetText(); + long nTextWidth = aOnStartupCB->GetTextWidth( sCBText ); + Size aSize = aOnStartupCB->GetSizePixel(); aSize.Width() = nTextWidth; - aOnStartupCB.SetSizePixel( aSize ); + aOnStartupCB->SetSizePixel( aSize ); SetOnStartupBoxPosition(); } @@ -2046,12 +2129,12 @@ void SfxHelpTextWindow_Impl::InitOnStartupBox( bool bOnlyText ) { // set position of the checkbox Size a3Size = LogicToPixel( Size( 3, 3 ), MAP_APPFONT ); - Size aTBSize = aToolBox.GetSizePixel(); - Size aCBSize = aOnStartupCB.GetSizePixel(); - Point aPnt = aToolBox.GetPosPixel(); + Size aTBSize = aToolBox->GetSizePixel(); + Size aCBSize = aOnStartupCB->GetSizePixel(); + Point aPnt = aToolBox->GetPosPixel(); aPnt.X() += aTBSize.Width() + a3Size.Width(); aPnt.Y() += ( ( aTBSize.Height() - aCBSize.Height() ) / 2 ); - aOnStartupCB.SetPosPixel( aPnt ); + aOnStartupCB->SetPosPixel( aPnt ); nMinPos = aPnt.X(); } } @@ -2061,10 +2144,10 @@ void SfxHelpTextWindow_Impl::InitOnStartupBox( bool bOnlyText ) void SfxHelpTextWindow_Impl::SetOnStartupBoxPosition() { - long nX = std::max( GetOutputSizePixel().Width() - aOnStartupCB.GetSizePixel().Width(), nMinPos ); - Point aPos = aOnStartupCB.GetPosPixel(); + long nX = std::max( GetOutputSizePixel().Width() - aOnStartupCB->GetSizePixel().Width(), nMinPos ); + Point aPos = aOnStartupCB->GetPosPixel(); aPos.X() = nX; - aOnStartupCB.SetPosPixel( aPos ); + aOnStartupCB->SetPosPixel( aPos ); } @@ -2181,7 +2264,7 @@ IMPL_LINK( SfxHelpTextWindow_Impl, NotifyHdl, SvtMiscOptions*, pOptions ) (void)pOptions; // unused variable InitToolBoxImages(); Resize(); - aToolBox.Invalidate(); + aToolBox->Invalidate(); return 0; } @@ -2254,8 +2337,8 @@ IMPL_LINK( SfxHelpTextWindow_Impl, FindHdl, sfx2::SearchDialog*, pDlg ) else { DBG_ASSERT( pSrchDlg, "no search dialog" ); - MessageDialog aBox( pSrchDlg, SfxResId( STR_INFO_NOSEARCHTEXTFOUND ), VCL_MESSAGE_INFO ); - aBox.Execute(); + ScopedVclPtrInstance< MessageDialog > aBox(pSrchDlg, SfxResId( STR_INFO_NOSEARCHTEXTFOUND ), VCL_MESSAGE_INFO); + aBox->Execute(); pSrchDlg->SetFocusOnEdit(); } } @@ -2271,11 +2354,9 @@ IMPL_LINK( SfxHelpTextWindow_Impl, FindHdl, sfx2::SearchDialog*, pDlg ) -IMPL_LINK( SfxHelpTextWindow_Impl, CloseHdl, sfx2::SearchDialog*, pDlg ) +IMPL_LINK( SfxHelpTextWindow_Impl, CloseHdl, sfx2::SearchDialog*, /*pDlg*/ ) { - if ( pDlg ) - delete pSrchDlg; - pSrchDlg = NULL; + pSrchDlg.clear(); return 0; } @@ -2308,7 +2389,7 @@ IMPL_LINK( SfxHelpTextWindow_Impl, CheckHdl, CheckBox*, pBox ) void SfxHelpTextWindow_Impl::Resize() { Size aSize = GetOutputSizePixel(); - long nToolBoxHeight = aToolBox.GetSizePixel().Height() + TOOLBOX_OFFSET; + long nToolBoxHeight = aToolBox->GetSizePixel().Height() + TOOLBOX_OFFSET; aSize.Height() -= nToolBoxHeight; pTextWin->SetPosSizePixel( Point( 0, nToolBoxHeight ), aSize ); SetOnStartupBoxPosition(); @@ -2325,7 +2406,7 @@ bool SfxHelpTextWindow_Impl::PreNotify( NotifyEvent& rNEvt ) const CommandEvent* pCmdEvt = rNEvt.GetCommandEvent(); vcl::Window* pCmdWin = rNEvt.GetWindow(); - if ( pCmdEvt->GetCommand() == COMMAND_CONTEXTMENU && pCmdWin != this && pCmdWin != &aToolBox ) + if ( pCmdEvt->GetCommand() == COMMAND_CONTEXTMENU && pCmdWin != this && pCmdWin != aToolBox.get() ) { Point aPos; if ( pCmdEvt->IsMouseEvent() ) @@ -2430,9 +2511,9 @@ bool SfxHelpTextWindow_Impl::PreNotify( NotifyEvent& rNEvt ) pHelpWin->CloseWindow(); nDone = true; } - else if ( KEY_TAB == nKey && aOnStartupCB.HasChildPathFocus() ) + else if ( KEY_TAB == nKey && aOnStartupCB->HasChildPathFocus() ) { - aToolBox.GrabFocus(); + aToolBox->GrabFocus(); nDone = true; } } @@ -2484,13 +2565,13 @@ void SfxHelpTextWindow_Impl::ToggleIndex( bool bOn ) bIsIndexOn = bOn; if ( bIsIndexOn ) { - aToolBox.SetItemImage( TBI_INDEX, aIndexOffImage ); - aToolBox.SetItemText( TBI_INDEX, aIndexOffText ); + aToolBox->SetItemImage( TBI_INDEX, aIndexOffImage ); + aToolBox->SetItemText( TBI_INDEX, aIndexOffText ); } else { - aToolBox.SetItemImage( TBI_INDEX, aIndexOnImage ); - aToolBox.SetItemText( TBI_INDEX, aIndexOnText ); + aToolBox->SetItemImage( TBI_INDEX, aIndexOnImage ); + aToolBox->SetItemText( TBI_INDEX, aIndexOnText ); } } @@ -2587,7 +2668,7 @@ void SfxHelpTextWindow_Impl::DoSearch() if ( !pSrchDlg ) { // create the search dialog - pSrchDlg = new sfx2::SearchDialog( pTextWin, "HelpSearchDialog" ); + pSrchDlg = VclPtr<sfx2::SearchDialog>::Create( pTextWin, "HelpSearchDialog" ); // set handler pSrchDlg->SetFindHdl( LINK( this, SfxHelpTextWindow_Impl, FindHdl ) ); pSrchDlg->SetCloseHdl( LINK( this, SfxHelpTextWindow_Impl, CloseHdl ) ); @@ -2974,12 +3055,12 @@ SfxHelpWindow_Impl::SfxHelpWindow_Impl( SetStyle( GetStyle() | WB_DIALOGCONTROL ); pHelpInterceptor->InitWaiter( this ); - pIndexWin = new SfxHelpIndexWindow_Impl( this ); + pIndexWin = VclPtr<SfxHelpIndexWindow_Impl>::Create( this ); pIndexWin->SetDoubleClickHdl( LINK( this, SfxHelpWindow_Impl, OpenHdl ) ); pIndexWin->SetSelectFactoryHdl( LINK( this, SfxHelpWindow_Impl, SelectFactoryHdl ) ); pIndexWin->SetSizePixel(LogicToPixel(Size(120, 200), MAP_APPFONT)); pIndexWin->Show(); - pTextWin = new SfxHelpTextWindow_Impl( this ); + pTextWin = VclPtr<SfxHelpTextWindow_Impl>::Create( this ); Reference < XFrames > xFrames = rFrame->getFrames(); xFrames->append( Reference<XFrame>(pTextWin->getFrame(), UNO_QUERY_THROW) ); pTextWin->SetSelectHdl( LINK( this, SfxHelpWindow_Impl, SelectHdl ) ); @@ -2993,13 +3074,16 @@ SfxHelpWindow_Impl::SfxHelpWindow_Impl( SfxHelpWindow_Impl::~SfxHelpWindow_Impl() { - SaveConfig(); - vcl::Window* pDel = pIndexWin; - pIndexWin = NULL; - delete pDel; + disposeOnce(); +} +void SfxHelpWindow_Impl::dispose() +{ + SaveConfig(); + pIndexWin.disposeAndClear(); pTextWin->CloseFrame(); - delete pTextWin; + pTextWin.disposeAndClear(); + SplitWindow::dispose(); } bool SfxHelpWindow_Impl::PreNotify( NotifyEvent& rNEvt ) @@ -3127,11 +3211,11 @@ void SfxHelpWindow_Impl::DoAction( sal_uInt16 nActionId ) if ( aAny >>= aValue ) { OUString aTitle( aValue ); - SfxAddHelpBookmarkDialog_Impl aDlg( this, false ); - aDlg.SetTitle( aTitle ); - if ( aDlg.Execute() == RET_OK ) + ScopedVclPtrInstance< SfxAddHelpBookmarkDialog_Impl > aDlg(this, false); + aDlg->SetTitle( aTitle ); + if ( aDlg->Execute() == RET_OK ) { - aTitle = aDlg.GetTitle(); + aTitle = aDlg->GetTitle(); pIndexWin->AddBookmarks( aTitle, aURL ); } } @@ -3206,7 +3290,16 @@ SfxAddHelpBookmarkDialog_Impl::SfxAddHelpBookmarkDialog_Impl(vcl::Window* pParen SetText(get<FixedText>("alttitle")->GetText()); } +SfxAddHelpBookmarkDialog_Impl::~SfxAddHelpBookmarkDialog_Impl() +{ + disposeOnce(); +} +void SfxAddHelpBookmarkDialog_Impl::dispose() +{ + m_pTitleED.clear(); + ModalDialog::dispose(); +} void SfxAddHelpBookmarkDialog_Impl::SetTitle( const OUString& rTitle ) { diff --git a/sfx2/source/appl/newhelp.hxx b/sfx2/source/appl/newhelp.hxx index 4ccf236b2049..add82d178f9b 100644 --- a/sfx2/source/appl/newhelp.hxx +++ b/sfx2/source/appl/newhelp.hxx @@ -60,7 +60,7 @@ private: public: ContentListBox_Impl(vcl::Window* pParent, WinBits nStyle); virtual ~ContentListBox_Impl(); - + virtual void dispose() SAL_OVERRIDE; virtual void RequestingChildren( SvTreeListEntry* pParent ) SAL_OVERRIDE; virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE; @@ -76,11 +76,13 @@ class SfxHelpIndexWindow_Impl; class HelpTabPage_Impl : public TabPage { protected: - SfxHelpIndexWindow_Impl* m_pIdxWin; + VclPtr<SfxHelpIndexWindow_Impl> m_pIdxWin; public: HelpTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin, const OString& rID, const OUString& rUIXMLDescription); + virtual ~HelpTabPage_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual Control* GetLastFocusControl() = 0; }; @@ -90,10 +92,12 @@ public: class ContentTabPage_Impl : public HelpTabPage_Impl { private: - ContentListBox_Impl* m_pContentBox; + VclPtr<ContentListBox_Impl> m_pContentBox; public: ContentTabPage_Impl(vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin); + virtual ~ContentTabPage_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void ActivatePage() SAL_OVERRIDE; virtual Control* GetLastFocusControl() SAL_OVERRIDE; @@ -119,8 +123,8 @@ public: class IndexTabPage_Impl : public HelpTabPage_Impl { private: - IndexBox_Impl* m_pIndexCB; - PushButton* m_pOpenBtn; + VclPtr<IndexBox_Impl> m_pIndexCB; + VclPtr<PushButton> m_pOpenBtn; Idle aFactoryIdle; Timer aKeywordTimer; @@ -141,6 +145,7 @@ private: public: IndexTabPage_Impl( vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin ); virtual ~IndexTabPage_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void ActivatePage() SAL_OVERRIDE; virtual Control* GetLastFocusControl() SAL_OVERRIDE; @@ -195,12 +200,12 @@ public: class SearchTabPage_Impl : public HelpTabPage_Impl { private: - SearchBox_Impl* m_pSearchED; - PushButton* m_pSearchBtn; - CheckBox* m_pFullWordsCB; - CheckBox* m_pScopeCB; - SearchResultsBox_Impl* m_pResultsLB; - PushButton* m_pOpenBtn; + VclPtr<SearchBox_Impl> m_pSearchED; + VclPtr<PushButton> m_pSearchBtn; + VclPtr<CheckBox> m_pFullWordsCB; + VclPtr<CheckBox> m_pScopeCB; + VclPtr<SearchResultsBox_Impl> m_pResultsLB; + VclPtr<PushButton> m_pOpenBtn; OUString aFactory; @@ -217,6 +222,7 @@ private: public: SearchTabPage_Impl( vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin ); virtual ~SearchTabPage_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void ActivatePage() SAL_OVERRIDE; virtual Control* GetLastFocusControl() SAL_OVERRIDE; @@ -242,6 +248,7 @@ private: public: BookmarksBox_Impl(vcl::Window* pParent, WinBits nStyle); virtual ~BookmarksBox_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE; }; @@ -249,13 +256,15 @@ public: class BookmarksTabPage_Impl : public HelpTabPage_Impl { private: - BookmarksBox_Impl* m_pBookmarksBox; - PushButton* m_pBookmarksPB; + VclPtr<BookmarksBox_Impl> m_pBookmarksBox; + VclPtr<PushButton> m_pBookmarksPB; DECL_LINK(OpenHdl, void *); public: BookmarksTabPage_Impl( vcl::Window* pParent, SfxHelpIndexWindow_Impl* _pIdxWin ); + virtual ~BookmarksTabPage_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void ActivatePage() SAL_OVERRIDE; virtual Control* GetLastFocusControl() SAL_OVERRIDE; @@ -273,8 +282,8 @@ class SfxHelpWindow_Impl; class SfxHelpIndexWindow_Impl : public vcl::Window, public VclBuilderContainer { private: - ListBox* m_pActiveLB; - TabControl* m_pTabCtrl; + VclPtr<ListBox> m_pActiveLB; + VclPtr<TabControl> m_pTabCtrl; Idle aIdle; @@ -283,12 +292,12 @@ private: Link aIndexKeywordLink; OUString sKeyword; - SfxHelpWindow_Impl* pParentWin; + VclPtr<SfxHelpWindow_Impl> pParentWin; - ContentTabPage_Impl* pCPage; - IndexTabPage_Impl* pIPage; - SearchTabPage_Impl* pSPage; - BookmarksTabPage_Impl* pBPage; + VclPtr<ContentTabPage_Impl> pCPage; + VclPtr<IndexTabPage_Impl> pIPage; + VclPtr<SearchTabPage_Impl> pSPage; + VclPtr<BookmarksTabPage_Impl> pBPage; long nMinWidth; bool bWasCursorLeftOrRight; @@ -312,6 +321,7 @@ private: public: SfxHelpIndexWindow_Impl( SfxHelpWindow_Impl* pParent ); virtual ~SfxHelpIndexWindow_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void Resize() SAL_OVERRIDE; virtual Size GetOptimalSize() const SAL_OVERRIDE; @@ -343,7 +353,7 @@ ContentTabPage_Impl* SfxHelpIndexWindow_Impl::GetContentPage() { if ( !pCPage ) { - pCPage = new ContentTabPage_Impl( m_pTabCtrl, this ); + pCPage = VclPtr<ContentTabPage_Impl>::Create( m_pTabCtrl, this ); pCPage->SetOpenHdl( aPageDoubleClickLink ); } return pCPage; @@ -352,7 +362,7 @@ IndexTabPage_Impl* SfxHelpIndexWindow_Impl::GetIndexPage() { if ( !pIPage ) { - pIPage = new IndexTabPage_Impl( m_pTabCtrl, this ); + pIPage = VclPtr<IndexTabPage_Impl>::Create( m_pTabCtrl, this ); pIPage->SetDoubleClickHdl( aPageDoubleClickLink ); pIPage->SetKeywordHdl( aIndexKeywordLink ); } @@ -363,7 +373,7 @@ SearchTabPage_Impl* SfxHelpIndexWindow_Impl::GetSearchPage() { if ( !pSPage ) { - pSPage = new SearchTabPage_Impl( m_pTabCtrl, this ); + pSPage = VclPtr<SearchTabPage_Impl>::Create( m_pTabCtrl, this ); pSPage->SetDoubleClickHdl( aPageDoubleClickLink ); } return pSPage; @@ -373,7 +383,7 @@ BookmarksTabPage_Impl* SfxHelpIndexWindow_Impl::GetBookmarksPage() { if ( !pBPage ) { - pBPage = new BookmarksTabPage_Impl( m_pTabCtrl, this ); + pBPage = VclPtr<BookmarksTabPage_Impl>::Create( m_pTabCtrl, this ); pBPage->SetDoubleClickHdl( aPageDoubleClickLink ); } return pBPage; @@ -392,7 +402,6 @@ class TextWin_Impl : public DockingWindow { public: TextWin_Impl( vcl::Window* pParent ); - virtual ~TextWin_Impl(); virtual bool Notify( NotifyEvent& rNEvt ) SAL_OVERRIDE; }; @@ -405,8 +414,8 @@ class SfxHelpWindow_Impl; class SfxHelpTextWindow_Impl : public vcl::Window { private: - ToolBox aToolBox; - CheckBox aOnStartupCB; + VclPtr<ToolBox> aToolBox; + VclPtr<CheckBox> aOnStartupCB; Idle aSelectIdle; Image aIndexOnImage; Image aIndexOffImage; @@ -416,9 +425,9 @@ private: OUString aOnStartupText; OUString sCurrentFactory; - SfxHelpWindow_Impl* pHelpWin; - vcl::Window* pTextWin; - sfx2::SearchDialog* pSrchDlg; + VclPtr<SfxHelpWindow_Impl> pHelpWin; + VclPtr<vcl::Window> pTextWin; + VclPtr<sfx2::SearchDialog> pSrchDlg; ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 > xFrame; ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > @@ -426,12 +435,12 @@ private: ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xConfiguration; long nMinPos; - bool bIsDebug; - bool bIsIndexOn; - bool bIsInClose; - bool bIsFullWordSearch; + bool bIsDebug; + bool bIsIndexOn; + bool bIsInClose; + bool bIsFullWordSearch; - bool HasSelection() const; + bool HasSelection() const; void InitToolBoxImages(); void InitOnStartupBox( bool bOnlyText ); void SetOnStartupBoxPosition(); @@ -451,6 +460,7 @@ private: public: SfxHelpTextWindow_Impl( SfxHelpWindow_Impl* pParent ); virtual ~SfxHelpTextWindow_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual void Resize() SAL_OVERRIDE; virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE; @@ -460,11 +470,11 @@ public: inline ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 > getFrame() const { return xFrame; } - inline void SetSelectHdl( const Link& rLink ) { aToolBox.SetSelectHdl( rLink ); } + inline void SetSelectHdl( const Link& rLink ) { aToolBox->SetSelectHdl( rLink ); } void ToggleIndex( bool bOn ); void SelectSearchText( const OUString& rSearchText, bool _bIsFullWordSearch ); void SetPageStyleHeaderOff() const; - inline ToolBox& GetToolBox() { return aToolBox; } + inline ToolBox& GetToolBox() { return *aToolBox.get(); } void CloseFrame(); void DoSearch(); }; @@ -485,8 +495,8 @@ friend class SfxHelpIndexWindow_Impl; ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 > xFrame; - SfxHelpIndexWindow_Impl* pIndexWin; - SfxHelpTextWindow_Impl* pTextWin; + VclPtr<SfxHelpIndexWindow_Impl> pIndexWin; + VclPtr<SfxHelpTextWindow_Impl> pTextWin; HelpInterceptor_Impl* pHelpInterceptor; HelpListener_Impl* pHelpListener; @@ -519,6 +529,7 @@ public: SfxHelpWindow_Impl( const ::com::sun::star::uno::Reference < ::com::sun::star::frame::XFrame2 >& rFrame, vcl::Window* pParent, WinBits nBits ); virtual ~SfxHelpWindow_Impl(); + virtual void dispose() SAL_OVERRIDE; virtual bool PreNotify( NotifyEvent& rNEvt ) SAL_OVERRIDE; @@ -556,9 +567,11 @@ public: class SfxAddHelpBookmarkDialog_Impl : public ModalDialog { private: - Edit* m_pTitleED; + VclPtr<Edit> m_pTitleED; public: SfxAddHelpBookmarkDialog_Impl( vcl::Window* pParent, bool bRename = true ); + virtual ~SfxAddHelpBookmarkDialog_Impl(); + virtual void dispose() SAL_OVERRIDE; void SetTitle( const OUString& rTitle ); OUString GetTitle() const { return m_pTitleED->GetText(); } diff --git a/sfx2/source/appl/opengrf.cxx b/sfx2/source/appl/opengrf.cxx index 8c18f4028bf3..4c001886d296 100644 --- a/sfx2/source/appl/opengrf.cxx +++ b/sfx2/source/appl/opengrf.cxx @@ -158,8 +158,8 @@ short SvxOpenGraphicDialog::Execute() // could not load? if ( nFound == USHRT_MAX ) { - WarningBox aWarningBox( NULL, WB_3DLOOK | WB_RETRY_CANCEL, SfxResId( SvxOpenGrfErr2ResId(nImpRet) ).toString() ); - bQuitLoop = aWarningBox.Execute() != RET_RETRY; + ScopedVclPtrInstance< WarningBox > aWarningBox(nullptr, WB_3DLOOK | WB_RETRY_CANCEL, SfxResId( SvxOpenGrfErr2ResId(nImpRet) ).toString()); + bQuitLoop = aWarningBox->Execute() != RET_RETRY; } else { diff --git a/sfx2/source/appl/openuriexternally.cxx b/sfx2/source/appl/openuriexternally.cxx index ecc347eddd27..beb4deed9ec3 100644 --- a/sfx2/source/appl/openuriexternally.cxx +++ b/sfx2/source/appl/openuriexternally.cxx @@ -44,10 +44,10 @@ bool sfx2::openUriExternally( "unexpected IllegalArgumentException: " + e.Message); } SolarMutexGuard g; - MessageDialog eb( + ScopedVclPtrInstance<MessageDialog> eb( SfxGetpApp()->GetTopWindow(), SfxResId(STR_NO_ABS_URI_REF)); - eb.set_primary_text(eb.get_primary_text().replaceFirst("$(ARG1)", uri)); - eb.Execute(); + eb->set_primary_text(eb->get_primary_text().replaceFirst("$(ARG1)", uri)); + eb->Execute(); } catch (css::system::SystemShellExecuteException &) { if (!handleSystemShellExecuteException) { throw; diff --git a/sfx2/source/appl/sfxhelp.cxx b/sfx2/source/appl/sfxhelp.cxx index 247e80e140af..21e56b4c1920 100644 --- a/sfx2/source/appl/sfxhelp.cxx +++ b/sfx2/source/appl/sfxhelp.cxx @@ -402,8 +402,8 @@ SfxHelpWindow_Impl* impl_createHelp(Reference< XFrame2 >& rHelpTask , // create all internal windows and sub frames ... Reference< ::com::sun::star::awt::XWindow > xParentWindow = xHelpTask->getContainerWindow(); - vcl::Window* pParentWindow = VCLUnoHelper::GetWindow( xParentWindow ); - SfxHelpWindow_Impl* pHelpWindow = new SfxHelpWindow_Impl( xHelpTask, pParentWindow, WB_DOCKBORDER ); + vcl::Window* pParentWindow = VCLUnoHelper::GetWindow( xParentWindow ); + VclPtrInstance<SfxHelpWindow_Impl> pHelpWindow( xHelpTask, pParentWindow, WB_DOCKBORDER ); Reference< ::com::sun::star::awt::XWindow > xHelpWindow = VCLUnoHelper::GetInterface( pHelpWindow ); Reference< XFrame > xHelpContent; @@ -429,7 +429,7 @@ SfxHelpWindow_Impl* impl_createHelp(Reference< XFrame2 >& rHelpTask , if (!xHelpContent.is()) { - delete pHelpWindow; + pHelpWindow.disposeAndClear(); return NULL; } @@ -605,8 +605,8 @@ bool SfxHelp::Start_Impl(const OUString& rURL, const vcl::Window* pWindow, const if ( impl_showOnlineHelp( aHelpURL ) ) return true; - NoHelpErrorBox aErrBox( const_cast< vcl::Window* >( pWindow ) ); - aErrBox.Execute(); + ScopedVclPtrInstance< NoHelpErrorBox > aErrBox(const_cast< vcl::Window* >( pWindow )); + aErrBox->Execute(); return false; } @@ -626,7 +626,7 @@ bool SfxHelp::Start_Impl(const OUString& rURL, const vcl::Window* pWindow, const if (!xHelp.is()) pHelpWindow = impl_createHelp(xHelp, xHelpContent); else - pHelpWindow = static_cast<SfxHelpWindow_Impl*>(VCLUnoHelper::GetWindow(xHelp->getComponentWindow())); + pHelpWindow = static_cast<SfxHelpWindow_Impl*>(VCLUnoHelper::GetWindow(xHelp->getComponentWindow()).get()); if (!xHelp.is() || !xHelpContent.is() || !pHelpWindow) return false; diff --git a/sfx2/source/appl/workwin.cxx b/sfx2/source/appl/workwin.cxx index 7f3920dcc088..d6ec61c5ff3c 100644 --- a/sfx2/source/appl/workwin.cxx +++ b/sfx2/source/appl/workwin.cxx @@ -569,7 +569,7 @@ SfxFrameWorkWin_Impl::SfxFrameWorkWin_Impl( vcl::Window *pWin, SfxFrame *pFrm, S n == SFX_SPLITWINDOWS_RIGHT ? SfxChildAlignment::RIGHT : n == SFX_SPLITWINDOWS_TOP ? SfxChildAlignment::TOP : SfxChildAlignment::BOTTOM ); - SfxSplitWindow *pSplitWin = new SfxSplitWindow(pWorkWin, eAlign, this, pParent==0 ); + VclPtr<SfxSplitWindow> pSplitWin = VclPtr<SfxSplitWindow>::Create(pWorkWin, eAlign, this, pParent==0 ); pSplit[n] = pSplitWin; } @@ -606,7 +606,6 @@ SfxWorkWindow::SfxWorkWindow( vcl::Window *pWin, SfxBindings& rB, SfxWorkWindow* m_aTbxTypeName( "private:resource/toolbar/" ), m_aProgressBarResName( "private:resource/progressbar/progressbar" ) { - memset(pSplit, 0, sizeof(pSplit)); DBG_ASSERT (pBindings, "No Bindings!"); pBindings->SetWorkWindow_Impl( this ); @@ -633,10 +632,10 @@ SfxWorkWindow::~SfxWorkWindow() // Delete SplitWindows for ( sal_uInt16 n=0; n<SFX_SPLITWINDOWS_MAX; n++ ) { - SfxSplitWindow *p = pSplit[n]; + VclPtr<SfxSplitWindow> p = pSplit[n]; if (p->GetWindowCount()) ReleaseChild_Impl(*p); - delete p; + pSplit[n].disposeAndClear(); } // Delete help structure for Child-Windows @@ -677,8 +676,8 @@ void SfxWorkWindow::DeleteControllers_Impl() for ( n=0; n<SFX_SPLITWINDOWS_MAX; n++ ) { SfxSplitWindow *p = pSplit[n]; - if (p->GetWindowCount()) - p->Lock(); + if (p->GetWindowCount()) + p->Lock(); } // Delete Child-Windows @@ -853,7 +852,7 @@ SvBorder SfxWorkWindow::Arrange_Impl() case SfxChildAlignment::LOWESTTOP: aSize.Width() = aTmp.GetWidth(); if ( pCli->pWin->GetType() == WINDOW_SPLITWINDOW ) - aSize = static_cast<SplitWindow *>(pCli->pWin)->CalcLayoutSizePixel( aSize ); + aSize = static_cast<SplitWindow *>(pCli->pWin.get())->CalcLayoutSizePixel( aSize ); bAllowHiding = false; aBorder.Top() += aSize.Height(); aPos = aTmp.TopLeft(); @@ -868,7 +867,7 @@ SvBorder SfxWorkWindow::Arrange_Impl() case SfxChildAlignment::HIGHESTBOTTOM: aSize.Width() = aTmp.GetWidth(); if ( pCli->pWin->GetType() == WINDOW_SPLITWINDOW ) - aSize = static_cast<SplitWindow *>(pCli->pWin)->CalcLayoutSizePixel( aSize ); + aSize = static_cast<SplitWindow *>(pCli->pWin.get())->CalcLayoutSizePixel( aSize ); aBorder.Bottom() += aSize.Height(); aPos = aTmp.BottomLeft(); aPos.Y() -= (aSize.Height()-1); @@ -883,7 +882,7 @@ SvBorder SfxWorkWindow::Arrange_Impl() case SfxChildAlignment::TOOLBOXLEFT: aSize.Height() = aTmp.GetHeight(); if ( pCli->pWin->GetType() == WINDOW_SPLITWINDOW ) - aSize = static_cast<SplitWindow *>(pCli->pWin)->CalcLayoutSizePixel( aSize ); + aSize = static_cast<SplitWindow *>(pCli->pWin.get())->CalcLayoutSizePixel( aSize ); bAllowHiding = false; aBorder.Left() += aSize.Width(); aPos = aTmp.TopLeft(); @@ -898,7 +897,7 @@ SvBorder SfxWorkWindow::Arrange_Impl() case SfxChildAlignment::TOOLBOXRIGHT: aSize.Height() = aTmp.GetHeight(); if ( pCli->pWin->GetType() == WINDOW_SPLITWINDOW ) - aSize = static_cast<SplitWindow *>(pCli->pWin)->CalcLayoutSizePixel( aSize ); + aSize = static_cast<SplitWindow *>(pCli->pWin.get())->CalcLayoutSizePixel( aSize ); aBorder.Right() += aSize.Width(); aPos = aTmp.TopRight(); aPos.X() -= (aSize.Width()-1); @@ -1071,10 +1070,10 @@ void SfxWorkWindow::ShowChildren_Impl() switch ( pCli->pWin->GetType() ) { case RSC_DOCKINGWINDOW : - static_cast<DockingWindow*>(pCli->pWin)->Show( true, nFlags ); + static_cast<DockingWindow*>(pCli->pWin.get())->Show( true, nFlags ); break; case RSC_SPLITWINDOW : - static_cast<SplitWindow*>(pCli->pWin)->Show( true, nFlags ); + static_cast<SplitWindow*>(pCli->pWin.get())->Show( true, nFlags ); break; default: pCli->pWin->Show( true, nFlags ); @@ -1088,7 +1087,7 @@ void SfxWorkWindow::ShowChildren_Impl() switch ( pCli->pWin->GetType() ) { case RSC_DOCKINGWINDOW : - static_cast<DockingWindow*>(pCli->pWin)->Hide(); + static_cast<DockingWindow*>(pCli->pWin.get())->Hide(); break; default: pCli->pWin->Hide(); @@ -1111,7 +1110,7 @@ void SfxWorkWindow::HideChildren_Impl() switch ( pChild->pWin->GetType() ) { case RSC_DOCKINGWINDOW : - static_cast<DockingWindow*>(pChild->pWin)->Hide(); + static_cast<DockingWindow*>(pChild->pWin.get())->Hide(); break; default: pChild->pWin->Hide(); @@ -2534,7 +2533,7 @@ bool SfxWorkWindow::IsAutoHideMode( const SfxSplitWindow *pSplitWin ) { for ( sal_uInt16 n=0; n<SFX_SPLITWINDOWS_MAX; n++ ) { - if ( pSplit[n] != pSplitWin && pSplit[n]->IsAutoHide( true ) ) + if ( pSplit[n].get() != pSplitWin && pSplit[n]->IsAutoHide( true ) ) return true; } return false; |