diff options
Diffstat (limited to 'UnoControls/source/base/basecontrol.cxx')
-rw-r--r-- | UnoControls/source/base/basecontrol.cxx | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/UnoControls/source/base/basecontrol.cxx b/UnoControls/source/base/basecontrol.cxx index b9c7e4cf0052..457dd5cb7821 100644 --- a/UnoControls/source/base/basecontrol.cxx +++ b/UnoControls/source/base/basecontrol.cxx @@ -231,7 +231,25 @@ void SAL_CALL BaseControl::dispose() throw( RuntimeException, std::exception ) // release context and peer m_xContext.clear(); - impl_releasePeer(); + if ( m_xPeer.is() ) + { + if ( m_xGraphicsPeer.is() ) + { + removePaintListener( this ); + removeWindowListener( this ); + m_xGraphicsPeer.clear(); + } + + m_xPeer->dispose(); + m_xPeerWindow.clear(); + m_xPeer.clear(); + + if ( m_pMultiplexer != nullptr ) + { + // take changes on multiplexer + m_pMultiplexer->setPeer( Reference< XWindow >() ); + } + } // release view if ( m_xGraphicsView.is() ) @@ -741,34 +759,6 @@ void BaseControl::impl_recalcLayout( const WindowEvent& /*aEvent*/ ) // But we make it not pure virtual because it's not necessary for all derived classes! } -// protected method - - -// private method - -void BaseControl::impl_releasePeer() -{ - if ( m_xPeer.is() ) - { - if ( m_xGraphicsPeer.is() ) - { - removePaintListener( this ); - removeWindowListener( this ); - m_xGraphicsPeer.clear(); - } - - m_xPeer->dispose(); - m_xPeerWindow.clear(); - m_xPeer.clear(); - - if ( m_pMultiplexer != nullptr ) - { - // take changes on multiplexer - m_pMultiplexer->setPeer( Reference< XWindow >() ); - } - } -} - // private method OMRCListenerMultiplexerHelper* BaseControl::impl_getMultiplexer() |