summaryrefslogtreecommitdiff
path: root/framework/source/classes/fwktabwindow.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/classes/fwktabwindow.cxx')
-rw-r--r--framework/source/classes/fwktabwindow.cxx51
1 files changed, 32 insertions, 19 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