summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2011-02-08 13:01:00 +0100
committerDavid Tardon <dtardon@redhat.com>2011-02-08 13:01:31 +0100
commit26463988018c334f620678194e1b264cf1d815f4 (patch)
tree1901107377997ac221c975163fc75cf9da260d7e
parent294c191f6f80e2c7e1e6ed17683c23c3d3b7e9e3 (diff)
do not derive from std::list
-rw-r--r--vcl/inc/vcl/vclevent.hxx6
-rw-r--r--vcl/source/app/svapp.cxx17
-rw-r--r--vcl/source/app/vclevent.cxx20
-rw-r--r--vcl/source/window/menu.cxx9
-rw-r--r--vcl/source/window/window.cxx14
5 files changed, 40 insertions, 26 deletions
diff --git a/vcl/inc/vcl/vclevent.hxx b/vcl/inc/vcl/vclevent.hxx
index 42e76bc92bd8..d4801fa9ed0a 100644
--- a/vcl/inc/vcl/vclevent.hxx
+++ b/vcl/inc/vcl/vclevent.hxx
@@ -260,7 +260,7 @@ private:
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible;
};
-class VCL_DLLPUBLIC VclEventListeners : public std::list<Link>
+class VCL_DLLPUBLIC VclEventListeners
{
public:
void Call( VclSimpleEvent* pEvent ) const;
@@ -269,6 +269,10 @@ public:
// and returns TRUE in that case
// a handler must return TRUE to signal that it has processed the event
BOOL Process( VclSimpleEvent* pEvent ) const;
+ void addListener( const Link& rListener );
+ void removeListener( const Link& rListener );
+private:
+ std::list<Link> m_aListeners;
};
class VCL_DLLPUBLIC VclEventListeners2 : public vcl::DeletionNotifier
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 1be1141596de..ec8101d74315 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -833,8 +833,7 @@ void Application::ImplCallEventListeners( ULONG nEvent, Window *pWin, void* pDat
VclWindowEvent aEvent( pWin, nEvent, pData );
if ( pSVData->maAppData.mpEventListeners )
- if ( !pSVData->maAppData.mpEventListeners->empty() )
- pSVData->maAppData.mpEventListeners->Call( &aEvent );
+ pSVData->maAppData.mpEventListeners->Call( &aEvent );
}
// -----------------------------------------------------------------------
@@ -844,8 +843,7 @@ void Application::ImplCallEventListeners( VclSimpleEvent* pEvent )
ImplSVData* pSVData = ImplGetSVData();
if ( pSVData->maAppData.mpEventListeners )
- if ( !pSVData->maAppData.mpEventListeners->empty() )
- pSVData->maAppData.mpEventListeners->Call( pEvent );
+ pSVData->maAppData.mpEventListeners->Call( pEvent );
}
// -----------------------------------------------------------------------
@@ -855,7 +853,7 @@ void Application::AddEventListener( const Link& rEventListener )
ImplSVData* pSVData = ImplGetSVData();
if( !pSVData->maAppData.mpEventListeners )
pSVData->maAppData.mpEventListeners = new VclEventListeners;
- pSVData->maAppData.mpEventListeners->push_back( rEventListener );
+ pSVData->maAppData.mpEventListeners->addListener( rEventListener );
}
// -----------------------------------------------------------------------
@@ -864,7 +862,7 @@ void Application::RemoveEventListener( const Link& rEventListener )
{
ImplSVData* pSVData = ImplGetSVData();
if( pSVData->maAppData.mpEventListeners )
- pSVData->maAppData.mpEventListeners->remove( rEventListener );
+ pSVData->maAppData.mpEventListeners->removeListener( rEventListener );
}
// -----------------------------------------------------------------------
@@ -873,7 +871,7 @@ void Application::AddKeyListener( const Link& rKeyListener )
ImplSVData* pSVData = ImplGetSVData();
if( !pSVData->maAppData.mpKeyListeners )
pSVData->maAppData.mpKeyListeners = new VclEventListeners;
- pSVData->maAppData.mpKeyListeners->push_back( rKeyListener );
+ pSVData->maAppData.mpKeyListeners->addListener( rKeyListener );
}
// -----------------------------------------------------------------------
@@ -882,7 +880,7 @@ void Application::RemoveKeyListener( const Link& rKeyListener )
{
ImplSVData* pSVData = ImplGetSVData();
if( pSVData->maAppData.mpKeyListeners )
- pSVData->maAppData.mpKeyListeners->remove( rKeyListener );
+ pSVData->maAppData.mpKeyListeners->removeListener( rKeyListener );
}
// -----------------------------------------------------------------------
@@ -896,8 +894,7 @@ BOOL Application::HandleKey( ULONG nEvent, Window *pWin, KeyEvent* pKeyEvent )
BOOL bProcessed = FALSE;
if ( pSVData->maAppData.mpKeyListeners )
- if ( !pSVData->maAppData.mpKeyListeners->empty() )
- bProcessed = pSVData->maAppData.mpKeyListeners->Process( &aEvent );
+ bProcessed = pSVData->maAppData.mpKeyListeners->Process( &aEvent );
return bProcessed;
}
diff --git a/vcl/source/app/vclevent.cxx b/vcl/source/app/vclevent.cxx
index 02e482711616..705eebf93aee 100644
--- a/vcl/source/app/vclevent.cxx
+++ b/vcl/source/app/vclevent.cxx
@@ -58,8 +58,11 @@ Reference<XAccessible> VclAccessibleEvent::GetAccessible() const
void VclEventListeners::Call( VclSimpleEvent* pEvent ) const
{
+ if ( m_aListeners.empty() )
+ return;
+
// Copy the list, because this can be destroyed when calling a Link...
- std::list<Link> aCopy( *this );
+ std::list<Link> aCopy( m_aListeners );
std::list<Link>::iterator aIter( aCopy.begin() );
if( pEvent->IsA( VclWindowEvent::StaticType() ) )
{
@@ -83,9 +86,12 @@ void VclEventListeners::Call( VclSimpleEvent* pEvent ) const
BOOL VclEventListeners::Process( VclSimpleEvent* pEvent ) const
{
+ if ( m_aListeners.empty() )
+ return FALSE;
+
BOOL bProcessed = FALSE;
// Copy the list, because this can be destroyed when calling a Link...
- std::list<Link> aCopy( *this );
+ std::list<Link> aCopy( m_aListeners );
std::list<Link>::iterator aIter( aCopy.begin() );
while ( aIter != aCopy.end() )
{
@@ -99,6 +105,16 @@ BOOL VclEventListeners::Process( VclSimpleEvent* pEvent ) const
return bProcessed;
}
+void VclEventListeners::addListener( const Link& rListener )
+{
+ m_aListeners.push_back( rListener );
+}
+
+void VclEventListeners::removeListener( const Link& rListener )
+{
+ m_aListeners.remove( rListener );
+}
+
VclEventListeners2::VclEventListeners2()
{
}
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 571de196f594..8a591f2a3126 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -1183,7 +1183,7 @@ void Menu::ImplCallEventListeners( ULONG nEvent, USHORT nPos )
ImplGetSVData()->mpApp->ImplCallEventListeners( &aEvent );
}
- if ( !aDelData.isDeleted() && !maEventListeners.empty() )
+ if ( !aDelData.isDeleted() )
maEventListeners.Call( &aEvent );
if( !aDelData.isDeleted() )
@@ -1191,8 +1191,7 @@ void Menu::ImplCallEventListeners( ULONG nEvent, USHORT nPos )
Menu* pMenu = this;
while ( pMenu )
{
- if ( !maChildEventListeners.empty() )
- maChildEventListeners.Call( &aEvent );
+ maChildEventListeners.Call( &aEvent );
if( aDelData.isDeleted() )
break;
@@ -1204,12 +1203,12 @@ void Menu::ImplCallEventListeners( ULONG nEvent, USHORT nPos )
void Menu::AddEventListener( const Link& rEventListener )
{
- maEventListeners.push_back( rEventListener );
+ maEventListeners.addListener( rEventListener );
}
void Menu::RemoveEventListener( const Link& rEventListener )
{
- maEventListeners.remove( rEventListener );
+ maEventListeners.removeListener( rEventListener );
}
// -----------------------------------------------------------------------
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index a019cdca1a03..0469c99f73f6 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -5245,8 +5245,7 @@ void Window::CallEventListeners( ULONG nEvent, void* pData )
if ( aDelData.IsDelete() )
return;
- if ( !mpWindowImpl->maEventListeners.empty() )
- mpWindowImpl->maEventListeners.Call( &aEvent );
+ mpWindowImpl->maEventListeners.Call( &aEvent );
if ( aDelData.IsDelete() )
return;
@@ -5258,8 +5257,7 @@ void Window::CallEventListeners( ULONG nEvent, void* pData )
{
pWindow->ImplAddDel( &aDelData );
- if ( !pWindow->mpWindowImpl->maChildEventListeners.empty() )
- pWindow->mpWindowImpl->maChildEventListeners.Call( &aEvent );
+ pWindow->mpWindowImpl->maChildEventListeners.Call( &aEvent );
if ( aDelData.IsDelete() )
return;
@@ -5279,28 +5277,28 @@ void Window::FireVclEvent( VclSimpleEvent* pEvent )
void Window::AddEventListener( const Link& rEventListener )
{
- mpWindowImpl->maEventListeners.push_back( rEventListener );
+ mpWindowImpl->maEventListeners.addListener( rEventListener );
}
// -----------------------------------------------------------------------
void Window::RemoveEventListener( const Link& rEventListener )
{
- mpWindowImpl->maEventListeners.remove( rEventListener );
+ mpWindowImpl->maEventListeners.removeListener( rEventListener );
}
// -----------------------------------------------------------------------
void Window::AddChildEventListener( const Link& rEventListener )
{
- mpWindowImpl->maChildEventListeners.push_back( rEventListener );
+ mpWindowImpl->maChildEventListeners.addListener( rEventListener );
}
// -----------------------------------------------------------------------
void Window::RemoveChildEventListener( const Link& rEventListener )
{
- mpWindowImpl->maChildEventListeners.remove( rEventListener );
+ mpWindowImpl->maChildEventListeners.removeListener( rEventListener );
}
// -----------------------------------------------------------------------