diff options
Diffstat (limited to 'framework/source/uielement/dropdownboxtoolbarcontroller.cxx')
-rw-r--r-- | framework/source/uielement/dropdownboxtoolbarcontroller.cxx | 13 |
1 files changed, 9 insertions, 4 deletions
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 |