Fixed context submenus event handlers (GAL/Windows).
This commit is contained in:
parent
5447bb5914
commit
2647fdfd89
|
@ -114,8 +114,8 @@ CONTEXT_MENU& CONTEXT_MENU::operator=( const CONTEXT_MENU& aMenu )
|
||||||
|
|
||||||
void CONTEXT_MENU::setupEvents()
|
void CONTEXT_MENU::setupEvents()
|
||||||
{
|
{
|
||||||
Connect( wxEVT_MENU_HIGHLIGHT, wxEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this );
|
Connect( wxEVT_MENU_HIGHLIGHT, wxMenuEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this );
|
||||||
Connect( wxEVT_COMMAND_MENU_SELECTED, wxEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this );
|
Connect( wxEVT_COMMAND_MENU_SELECTED, wxMenuEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ void CONTEXT_MENU::Clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CONTEXT_MENU::onMenuEvent( wxEvent& aEvent )
|
void CONTEXT_MENU::onMenuEvent( wxMenuEvent& aEvent )
|
||||||
{
|
{
|
||||||
OPT_TOOL_EVENT evt;
|
OPT_TOOL_EVENT evt;
|
||||||
|
|
||||||
|
@ -219,7 +219,25 @@ void CONTEXT_MENU::onMenuEvent( wxEvent& aEvent )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Under Linux, every submenu can have a separate event handler, under
|
||||||
|
// Windows all submenus are handled by the main menu.
|
||||||
|
#ifdef __WINDOWS__
|
||||||
|
if( !evt ) {
|
||||||
|
// Try to find the submenu which holds the selected item
|
||||||
|
wxMenu*menu = NULL;
|
||||||
|
FindItem( m_selected, &menu );
|
||||||
|
|
||||||
|
if( menu )
|
||||||
|
{
|
||||||
|
menu->ProcessEvent( aEvent );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( false ); // The event should be handled above
|
||||||
|
}
|
||||||
|
#else
|
||||||
evt = m_customHandler( aEvent );
|
evt = m_customHandler( aEvent );
|
||||||
|
#endif /* else __WINDOWS__ */
|
||||||
|
|
||||||
// Handling non-action menu entries (e.g. items in clarification list)
|
// Handling non-action menu entries (e.g. items in clarification list)
|
||||||
if( !evt )
|
if( !evt )
|
||||||
|
|
|
@ -95,12 +95,12 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setCustomEventHandler( boost::function<OPT_TOOL_EVENT(const wxEvent&)> aHandler )
|
void setCustomEventHandler( boost::function<OPT_TOOL_EVENT(const wxMenuEvent&)> aHandler )
|
||||||
{
|
{
|
||||||
m_customHandler = aHandler;
|
m_customHandler = aHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual OPT_TOOL_EVENT handleCustomEvent( const wxEvent& aEvent )
|
virtual OPT_TOOL_EVENT handleCustomEvent( const wxMenuEvent& aEvent )
|
||||||
{
|
{
|
||||||
return OPT_TOOL_EVENT();
|
return OPT_TOOL_EVENT();
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ private:
|
||||||
void setupEvents();
|
void setupEvents();
|
||||||
|
|
||||||
///> Event handler.
|
///> Event handler.
|
||||||
void onMenuEvent( wxEvent& aEvent );
|
void onMenuEvent( wxMenuEvent& aEvent );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function setTool()
|
* Function setTool()
|
||||||
|
@ -144,7 +144,7 @@ private:
|
||||||
std::map<int, const TOOL_ACTION*> m_toolActions;
|
std::map<int, const TOOL_ACTION*> m_toolActions;
|
||||||
|
|
||||||
/// Custom events handler, allows to translate wxEvents to TOOL_EVENTs.
|
/// Custom events handler, allows to translate wxEvents to TOOL_EVENTs.
|
||||||
boost::function<OPT_TOOL_EVENT(const wxEvent& aEvent)> m_customHandler;
|
boost::function<OPT_TOOL_EVENT(const wxMenuEvent& aEvent)> m_customHandler;
|
||||||
|
|
||||||
friend class TOOL_INTERACTIVE;
|
friend class TOOL_INTERACTIVE;
|
||||||
};
|
};
|
||||||
|
|
|
@ -152,7 +152,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
OPT_TOOL_EVENT handleCustomEvent( const wxEvent& aEvent )
|
OPT_TOOL_EVENT handleCustomEvent( const wxMenuEvent& aEvent )
|
||||||
{
|
{
|
||||||
#if ID_POPUP_PCB_SELECT_VIASIZE1 < ID_POPUP_PCB_SELECT_WIDTH1
|
#if ID_POPUP_PCB_SELECT_VIASIZE1 < ID_POPUP_PCB_SELECT_WIDTH1
|
||||||
#error You have changed event ids order, it breaks code. Check the source code for more details.
|
#error You have changed event ids order, it breaks code. Check the source code for more details.
|
||||||
|
@ -183,7 +183,7 @@ protected:
|
||||||
bds.SetTrackWidthIndex( 0 );
|
bds.SetTrackWidthIndex( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( id > ID_POPUP_PCB_SELECT_VIASIZE1 ) // via size has changed
|
else if( id >= ID_POPUP_PCB_SELECT_VIASIZE1 ) // via size has changed
|
||||||
{
|
{
|
||||||
assert( id < ID_POPUP_PCB_SELECT_WIDTH_END_RANGE );
|
assert( id < ID_POPUP_PCB_SELECT_WIDTH_END_RANGE );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue