Kaydet (Commit) 71a83295 authored tarafından Noel Grandin's avatar Noel Grandin

convert Link<> to typed

and remove unused maChildEventListeners

Change-Id: I845a9af608c3429cf9ccb0e8041f24f423839513
üst c80fb092
......@@ -112,7 +112,7 @@ protected:
virtual void Click();
virtual bool IsPopupMenuOpen();
DECL_LINK( MenuEventListener, VclSimpleEvent* );
DECL_LINK_TYPED( MenuEventListener, VclMenuEvent&, void );
void ProcessMenuEvent( const VclMenuEvent& rVclMenuEvent );
......
......@@ -566,15 +566,10 @@ bool OAccessibleMenuBaseComponent::IsPopupMenuOpen()
IMPL_LINK( OAccessibleMenuBaseComponent, MenuEventListener, VclSimpleEvent*, pEvent )
IMPL_LINK_TYPED( OAccessibleMenuBaseComponent, MenuEventListener, VclMenuEvent&, rEvent, void )
{
OSL_ENSURE( pEvent && pEvent->ISA( VclMenuEvent ), "OAccessibleMenuBaseComponent - Unknown MenuEvent!" );
if ( pEvent && pEvent->ISA( VclMenuEvent ) )
{
OSL_ENSURE( static_cast<VclMenuEvent*>(pEvent)->GetMenu(), "OAccessibleMenuBaseComponent - Menu?" );
ProcessMenuEvent( *static_cast<VclMenuEvent*>(pEvent) );
}
return 0;
OSL_ENSURE( rEvent.GetMenu(), "OAccessibleMenuBaseComponent - Menu?" );
ProcessMenuEvent( rEvent );
}
......
......@@ -40,6 +40,7 @@ class Menu;
class MenuBar;
class VclSimpleEvent;
class PopupMenu;
class VclMenuEvent;
typedef ::std::vector<
css::uno::Reference< css::awt::XPopupMenu >*
......@@ -65,7 +66,7 @@ private:
protected:
::osl::Mutex& GetMutex() { return maMutex; }
DECL_LINK( MenuEventListener, VclSimpleEvent* );
DECL_LINK_TYPED( MenuEventListener, VclMenuEvent&, void );
void ImplCreateMenu( bool bPopup );
......
......@@ -141,8 +141,7 @@ private:
Link<Menu*, bool> aHighlightHdl; // Highlight-Handler
Link<Menu*, bool> aSelectHdl; // Highlight-Handler
VclEventListeners maEventListeners;
VclEventListeners maChildEventListeners;
std::list<Link<VclMenuEvent&,void> > maEventListeners;
OUString aTitleText; // PopupMenu text
sal_uInt16 nTitleHeight;
......@@ -357,8 +356,8 @@ public:
return nTitleHeight;
}
void AddEventListener( const Link<>& rEventListener );
void RemoveEventListener( const Link<>& rEventListener );
void AddEventListener( const Link<VclMenuEvent&,void>& rEventListener );
void RemoveEventListener( const Link<VclMenuEvent&,void>& rEventListener );
Menu& operator =( const Menu& rMenu );
......
......@@ -226,7 +226,7 @@ private:
DECL_DLLPRIVATE_LINK_TYPED( ImplCallExecuteCustomMenu, void*, void );
DECL_DLLPRIVATE_LINK_TYPED( ImplUpdateHdl, Idle*, void );
DECL_DLLPRIVATE_LINK( ImplCustomMenuListener, VclMenuEvent* );
DECL_DLLPRIVATE_LINK_TYPED( ImplCustomMenuListener, VclMenuEvent&, void );
DECL_DLLPRIVATE_LINK_TYPED( ImplDropdownLongClickHdl, Timer*, void );
ToolBox (const ToolBox &) SAL_DELETED_FUNCTION;
......
......@@ -79,89 +79,83 @@ void VCLXMenu::ImplCreateMenu( bool bPopup )
mpMenu->AddEventListener( LINK( this, VCLXMenu, MenuEventListener ) );
}
IMPL_LINK( VCLXMenu, MenuEventListener, VclSimpleEvent*, pEvent )
IMPL_LINK_TYPED( VCLXMenu, MenuEventListener, VclMenuEvent&, rMenuEvent, void )
{
DBG_ASSERT( pEvent && pEvent->ISA( VclMenuEvent ), "Unknown Event!" );
if ( pEvent && pEvent->ISA( VclMenuEvent ) )
{
DBG_ASSERT( static_cast<VclMenuEvent*>(pEvent)->GetMenu() && mpMenu, "Menu???" );
DBG_ASSERT( rMenuEvent.GetMenu() && mpMenu, "Menu???" );
VclMenuEvent* pMenuEvent = static_cast<VclMenuEvent*>(pEvent);
if ( pMenuEvent->GetMenu() == mpMenu ) // Also called for the root menu
if ( rMenuEvent.GetMenu() == mpMenu ) // Also called for the root menu
{
switch ( rMenuEvent.GetId() )
{
switch ( pMenuEvent->GetId() )
case VCLEVENT_MENU_SELECT:
{
case VCLEVENT_MENU_SELECT:
{
if ( maMenuListeners.getLength() )
{
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemSelected( aEvent );
}
}
break;
case VCLEVENT_OBJECT_DYING:
if ( maMenuListeners.getLength() )
{
mpMenu = NULL;
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemSelected( aEvent );
}
break;
case VCLEVENT_MENU_HIGHLIGHT:
}
break;
case VCLEVENT_OBJECT_DYING:
{
mpMenu = NULL;
}
break;
case VCLEVENT_MENU_HIGHLIGHT:
{
if ( maMenuListeners.getLength() )
{
if ( maMenuListeners.getLength() )
{
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemHighlighted( aEvent );
}
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemHighlighted( aEvent );
}
break;
case VCLEVENT_MENU_ACTIVATE:
}
break;
case VCLEVENT_MENU_ACTIVATE:
{
if ( maMenuListeners.getLength() )
{
if ( maMenuListeners.getLength() )
{
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemActivated( aEvent );
}
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemActivated( aEvent );
}
break;
case VCLEVENT_MENU_DEACTIVATE:
}
break;
case VCLEVENT_MENU_DEACTIVATE:
{
if ( maMenuListeners.getLength() )
{
if ( maMenuListeners.getLength() )
{
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemDeactivated( aEvent );
}
css::awt::MenuEvent aEvent;
aEvent.Source = static_cast<cppu::OWeakObject*>(this);
aEvent.MenuId = mpMenu->GetCurItemId();
maMenuListeners.itemDeactivated( aEvent );
}
break;
// ignore accessibility events
case VCLEVENT_MENU_ENABLE:
case VCLEVENT_MENU_INSERTITEM:
case VCLEVENT_MENU_REMOVEITEM:
case VCLEVENT_MENU_SUBMENUACTIVATE:
case VCLEVENT_MENU_SUBMENUDEACTIVATE:
case VCLEVENT_MENU_SUBMENUCHANGED:
case VCLEVENT_MENU_DEHIGHLIGHT:
case VCLEVENT_MENU_DISABLE:
case VCLEVENT_MENU_ITEMTEXTCHANGED:
case VCLEVENT_MENU_ITEMCHECKED:
case VCLEVENT_MENU_ITEMUNCHECKED:
case VCLEVENT_MENU_SHOW:
case VCLEVENT_MENU_HIDE:
break;
default: OSL_FAIL( "MenuEventListener - Unknown event!" );
}
}
break;
// ignore accessibility events
case VCLEVENT_MENU_ENABLE:
case VCLEVENT_MENU_INSERTITEM:
case VCLEVENT_MENU_REMOVEITEM:
case VCLEVENT_MENU_SUBMENUACTIVATE:
case VCLEVENT_MENU_SUBMENUDEACTIVATE:
case VCLEVENT_MENU_SUBMENUCHANGED:
case VCLEVENT_MENU_DEHIGHLIGHT:
case VCLEVENT_MENU_DISABLE:
case VCLEVENT_MENU_ITEMTEXTCHANGED:
case VCLEVENT_MENU_ITEMCHECKED:
case VCLEVENT_MENU_ITEMUNCHECKED:
case VCLEVENT_MENU_SHOW:
case VCLEVENT_MENU_HIDE:
break;
default: OSL_FAIL( "MenuEventListener - Unknown event!" );
}
}
return 0;
}
......
......@@ -340,31 +340,29 @@ void Menu::ImplCallEventListeners( sal_uLong nEvent, sal_uInt16 nPos )
}
if ( !aDelData.isDeleted() )
maEventListeners.Call( &aEvent );
if( !aDelData.isDeleted() )
{
Menu* pMenu = this;
while ( pMenu )
// Copy the list, because this can be destroyed when calling a Link...
std::list<Link<VclMenuEvent&,void>> aCopy( maEventListeners );
std::list<Link<VclMenuEvent&,void>>::iterator aIter( aCopy.begin() );
std::list<Link<VclMenuEvent&,void>>::const_iterator aEnd( aCopy.end() );
while ( aIter != aEnd )
{
maChildEventListeners.Call( &aEvent );
if( aDelData.isDeleted() )
break;
pMenu = ( pMenu->pStartedFrom != pMenu ) ? pMenu->pStartedFrom : NULL;
Link<VclMenuEvent&,void> &rLink = *aIter;
if( std::find(maEventListeners.begin(), maEventListeners.end(), rLink) != maEventListeners.end() )
rLink.Call( aEvent );
++aIter;
}
}
}
void Menu::AddEventListener( const Link<>& rEventListener )
void Menu::AddEventListener( const Link<VclMenuEvent&,void>& rEventListener )
{
maEventListeners.addListener( rEventListener );
maEventListeners.push_back( rEventListener );
}
void Menu::RemoveEventListener( const Link<>& rEventListener )
void Menu::RemoveEventListener( const Link<VclMenuEvent&,void>& rEventListener )
{
maEventListeners.removeListener( rEventListener );
maEventListeners.remove( rEventListener );
}
MenuItemData* Menu::NbcInsertItem(sal_uInt16 nId, MenuItemBits nBits,
......
......@@ -1851,15 +1851,14 @@ void ToolBox::UpdateCustomMenu()
}
}
IMPL_LINK( ToolBox, ImplCustomMenuListener, VclMenuEvent*, pEvent )
IMPL_LINK_TYPED( ToolBox, ImplCustomMenuListener, VclMenuEvent&, rEvent, void )
{
if( pEvent->GetMenu() == GetMenu() && pEvent->GetId() == VCLEVENT_MENU_SELECT )
if( rEvent.GetMenu() == GetMenu() && rEvent.GetId() == VCLEVENT_MENU_SELECT )
{
sal_uInt16 id = GetMenu()->GetItemId( pEvent->GetItemPos() );
sal_uInt16 id = GetMenu()->GetItemId( rEvent.GetItemPos() );
if( id >= TOOLBOX_MENUITEM_START )
TriggerItem( id - TOOLBOX_MENUITEM_START, false );
}
return 0;
}
IMPL_LINK_NOARG_TYPED(ToolBox, ImplCallExecuteCustomMenu, void*, void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment