summaryrefslogtreecommitdiff
path: root/svtools/source/control/tabbar.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/control/tabbar.cxx')
-rw-r--r--svtools/source/control/tabbar.cxx64
1 files changed, 34 insertions, 30 deletions
diff --git a/svtools/source/control/tabbar.cxx b/svtools/source/control/tabbar.cxx
index 45807d372c26..10cb8c3b8467 100644
--- a/svtools/source/control/tabbar.cxx
+++ b/svtools/source/control/tabbar.cxx
@@ -159,6 +159,7 @@ public:
private:
void ImplTrack( const Point& rScreenPos );
+ virtual void dispose() SAL_OVERRIDE;
virtual void MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
virtual void Tracking( const TrackingEvent& rTEvt ) SAL_OVERRIDE;
virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE;
@@ -176,6 +177,11 @@ ImplTabSizer::ImplTabSizer( TabBar* pParent, WinBits nWinStyle )
SetSizePixel(Size(7 * nScaleFactor, 0));
}
+void ImplTabSizer::dispose()
+{
+ vcl::Window::dispose();
+}
+
void ImplTabSizer::ImplTrack( const Point& rScreenPos )
{
TabBar* pParent = GetParent();
@@ -328,25 +334,17 @@ IMPL_LINK_NOARG(TabBarEdit, ImplEndTimerHdl)
struct TabBar_Impl
{
- std::unique_ptr<ImplTabSizer> mpSizer;
- std::unique_ptr<ImplTabButton> mpFirstButton;
- std::unique_ptr<ImplTabButton> mpPrevButton;
- std::unique_ptr<ImplTabButton> mpNextButton;
- std::unique_ptr<ImplTabButton> mpLastButton;
- std::unique_ptr<TabBarEdit> mpEdit;
- ImplTabBarList mpItemList;
+ ScopedVclPtr<ImplTabSizer> mpSizer;
+ ScopedVclPtr<ImplTabButton> mpFirstButton;
+ ScopedVclPtr<ImplTabButton> mpPrevButton;
+ ScopedVclPtr<ImplTabButton> mpNextButton;
+ ScopedVclPtr<ImplTabButton> mpLastButton;
+ ScopedVclPtr<TabBarEdit> mpEdit;
+ ImplTabBarList mpItemList;
svt::AccessibleFactoryAccess maAccessibleFactory;
- TabBar_Impl()
- : mpSizer()
- , mpFirstButton()
- , mpPrevButton()
- , mpNextButton()
- , mpLastButton()
- , mpEdit()
- , mpItemList()
- {}
+ TabBar_Impl() {}
~TabBar_Impl()
{
@@ -372,7 +370,14 @@ TabBar::TabBar( vcl::Window* pParent, WinBits nWinStyle ) :
TabBar::~TabBar()
{
+ disposeOnce();
+}
+
+void TabBar::dispose()
+{
EndEditMode( true );
+ mpImpl.reset();
+ Window::dispose();
}
const sal_uInt16 TabBar::APPEND = ::std::numeric_limits<sal_uInt16>::max();
@@ -650,14 +655,12 @@ void TabBar::ImplInitControls()
{
if (!mpImpl->mpSizer)
{
- mpImpl->mpSizer.reset(new ImplTabSizer( this, mnWinStyle & (WB_DRAG | WB_3DLOOK)));
+ mpImpl->mpSizer.reset(VclPtr<ImplTabSizer>::Create( this, mnWinStyle & (WB_DRAG | WB_3DLOOK)));
}
mpImpl->mpSizer->Show();
}
else
- {
- mpImpl->mpSizer.reset();
- }
+ mpImpl->mpSizer.disposeAndClear();
Link aLink = LINK( this, TabBar, ImplClickHdl );
@@ -665,7 +668,7 @@ void TabBar::ImplInitControls()
{
if (!mpImpl->mpPrevButton)
{
- mpImpl->mpPrevButton.reset(new ImplTabButton(this, WB_REPEAT));
+ mpImpl->mpPrevButton.reset(VclPtr<ImplTabButton>::Create(this, WB_REPEAT));
mpImpl->mpPrevButton->SetClickHdl(aLink);
}
mpImpl->mpPrevButton->SetSymbol(mbMirrored ? SymbolType::NEXT : SymbolType::PREV);
@@ -673,7 +676,7 @@ void TabBar::ImplInitControls()
if (!mpImpl->mpNextButton)
{
- mpImpl->mpNextButton.reset(new ImplTabButton(this, WB_REPEAT));
+ mpImpl->mpNextButton.reset(VclPtr<ImplTabButton>::Create(this, WB_REPEAT));
mpImpl->mpNextButton->SetClickHdl(aLink);
}
mpImpl->mpNextButton->SetSymbol(mbMirrored ? SymbolType::PREV : SymbolType::NEXT);
@@ -681,15 +684,15 @@ void TabBar::ImplInitControls()
}
else
{
- mpImpl->mpPrevButton.reset();
- mpImpl->mpNextButton.reset();
+ mpImpl->mpPrevButton.disposeAndClear();
+ mpImpl->mpNextButton.disposeAndClear();
}
if ( mnWinStyle & WB_SCROLL )
{
if (!mpImpl->mpFirstButton)
{
- mpImpl->mpFirstButton.reset(new ImplTabButton(this));
+ mpImpl->mpFirstButton.reset(VclPtr<ImplTabButton>::Create(this));
mpImpl->mpFirstButton->SetClickHdl(aLink);
}
mpImpl->mpFirstButton->SetSymbol(mbMirrored ? SymbolType::LAST : SymbolType::FIRST);
@@ -697,7 +700,7 @@ void TabBar::ImplInitControls()
if (!mpImpl->mpLastButton)
{
- mpImpl->mpLastButton.reset(new ImplTabButton(this));
+ mpImpl->mpLastButton.reset(VclPtr<ImplTabButton>::Create(this));
mpImpl->mpLastButton->SetClickHdl(aLink);
}
mpImpl->mpLastButton->SetSymbol(mbMirrored ? SymbolType::FIRST : SymbolType::LAST);
@@ -705,8 +708,8 @@ void TabBar::ImplInitControls()
}
else
{
- mpImpl->mpFirstButton.reset();
- mpImpl->mpLastButton.reset();
+ mpImpl->mpFirstButton.disposeAndClear();
+ mpImpl->mpLastButton.disposeAndClear();
}
mbHasInsertTab = (mnWinStyle & WB_INSERTTAB);
@@ -2176,7 +2179,7 @@ bool TabBar::StartEditMode( sal_uInt16 nPageId )
ImplFormat();
Update();
- mpImpl->mpEdit.reset(new TabBarEdit(this, WB_CENTER));
+ mpImpl->mpEdit.reset(VclPtr<TabBarEdit>::Create(this, WB_CENTER));
Rectangle aRect = GetPageRect( mnEditId );
long nX = aRect.Left();
long nWidth = aRect.GetWidth();
@@ -2262,7 +2265,8 @@ void TabBar::EndEditMode( bool bCancel )
else
{
// close edit and call end hdl
- mpImpl->mpEdit.reset();
+ mpImpl->mpEdit.disposeAndClear();
+
EndRenaming();
mnEditId = 0;
}