CONTEXT_MENU -> ACTION_MENU. (Now used for menu-bar menus too.)

This commit is contained in:
Jeff Young 2019-05-14 12:14:00 +01:00
parent eb3a201d39
commit f9e4ee1fc9
31 changed files with 138 additions and 140 deletions

View File

@ -398,7 +398,7 @@ set( COMMON_SRCS
tool/actions.cpp tool/actions.cpp
tool/common_tools.cpp tool/common_tools.cpp
tool/conditional_menu.cpp tool/conditional_menu.cpp
tool/context_menu.cpp tool/action_menu.cpp
tool/edit_constraints.cpp tool/edit_constraints.cpp
tool/edit_points.cpp tool/edit_points.cpp
tool/grid_menu.cpp tool/grid_menu.cpp

View File

@ -29,7 +29,7 @@
#include <tool/tool_event.h> #include <tool/tool_event.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <wx/log.h> #include <wx/log.h>
#include <pgm_base.h> #include <pgm_base.h>
@ -37,7 +37,7 @@
using namespace std::placeholders; using namespace std::placeholders;
CONTEXT_MENU::CONTEXT_MENU() : ACTION_MENU::ACTION_MENU() :
m_Dirty( true ), m_Dirty( true ),
m_titleDisplayed( false ), m_titleDisplayed( false ),
m_selected( -1 ), m_selected( -1 ),
@ -48,13 +48,13 @@ CONTEXT_MENU::CONTEXT_MENU() :
} }
CONTEXT_MENU::~CONTEXT_MENU() ACTION_MENU::~ACTION_MENU()
{ {
// Set parent to NULL to prevent submenus from unregistering from a notexisting object // Set parent to NULL to prevent submenus from unregistering from a notexisting object
for( auto menu : m_submenus ) for( auto menu : m_submenus )
menu->SetParent( nullptr ); menu->SetParent( nullptr );
CONTEXT_MENU* parent = dynamic_cast<CONTEXT_MENU*>( GetParent() ); ACTION_MENU* parent = dynamic_cast<ACTION_MENU*>( GetParent() );
if( parent ) if( parent )
parent->m_submenus.remove( this ); parent->m_submenus.remove( this );
@ -79,21 +79,21 @@ static void set_wxMenuIcon( wxMenuItem* aMenu, const BITMAP_OPAQUE* aIcon )
} }
void CONTEXT_MENU::SetIcon( const BITMAP_OPAQUE* aIcon ) void ACTION_MENU::SetIcon( const BITMAP_OPAQUE* aIcon )
{ {
m_icon = aIcon; m_icon = aIcon;
} }
void CONTEXT_MENU::setupEvents() void ACTION_MENU::setupEvents()
{ {
Connect( wxEVT_MENU_OPEN, wxMenuEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this ); Connect( wxEVT_MENU_OPEN, wxMenuEventHandler( ACTION_MENU::onMenuEvent ), NULL, this );
Connect( wxEVT_MENU_HIGHLIGHT, wxMenuEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this ); Connect( wxEVT_MENU_HIGHLIGHT, wxMenuEventHandler( ACTION_MENU::onMenuEvent ), NULL, this );
Connect( wxEVT_COMMAND_MENU_SELECTED, wxMenuEventHandler( CONTEXT_MENU::onMenuEvent ), NULL, this ); Connect( wxEVT_COMMAND_MENU_SELECTED, wxMenuEventHandler( ACTION_MENU::onMenuEvent ), NULL, this );
} }
void CONTEXT_MENU::SetTitle( const wxString& aTitle ) void ACTION_MENU::SetTitle( const wxString& aTitle )
{ {
// Unfortunately wxMenu::SetTitle() does not work very well, so this is an alternative version // Unfortunately wxMenu::SetTitle() does not work very well, so this is an alternative version
m_title = aTitle; m_title = aTitle;
@ -104,7 +104,7 @@ void CONTEXT_MENU::SetTitle( const wxString& aTitle )
} }
void CONTEXT_MENU::DisplayTitle( bool aDisplay ) void ACTION_MENU::DisplayTitle( bool aDisplay )
{ {
if( ( !aDisplay || m_title.IsEmpty() ) && m_titleDisplayed ) if( ( !aDisplay || m_title.IsEmpty() ) && m_titleDisplayed )
{ {
@ -141,7 +141,7 @@ void CONTEXT_MENU::DisplayTitle( bool aDisplay )
} }
wxMenuItem* CONTEXT_MENU::Add( const wxString& aLabel, int aId, const BITMAP_OPAQUE* aIcon ) wxMenuItem* ACTION_MENU::Add( const wxString& aLabel, int aId, const BITMAP_OPAQUE* aIcon )
{ {
#ifdef DEBUG #ifdef DEBUG
if( FindItem( aId ) != NULL ) if( FindItem( aId ) != NULL )
@ -156,7 +156,7 @@ wxMenuItem* CONTEXT_MENU::Add( const wxString& aLabel, int aId, const BITMAP_OPA
} }
wxMenuItem* CONTEXT_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry ) wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry )
{ {
/// ID numbers for tool actions need to have a value higher than ACTION_ID /// ID numbers for tool actions need to have a value higher than ACTION_ID
const BITMAP_OPAQUE* icon = aAction.GetIcon(); const BITMAP_OPAQUE* icon = aAction.GetIcon();
@ -174,12 +174,12 @@ wxMenuItem* CONTEXT_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntr
} }
wxMenuItem* CONTEXT_MENU::Add( CONTEXT_MENU* aMenu ) wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu )
{ {
CONTEXT_MENU* menuCopy = aMenu->Clone(); ACTION_MENU* menuCopy = aMenu->Clone();
m_submenus.push_back( menuCopy ); m_submenus.push_back( menuCopy );
wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), "Set a title for CONTEXT_MENU using SetTitle()" ); wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), "Set a title for ACTION_MENU using SetTitle()" );
if( aMenu->m_icon ) if( aMenu->m_icon )
{ {
@ -195,7 +195,7 @@ wxMenuItem* CONTEXT_MENU::Add( CONTEXT_MENU* aMenu )
} }
void CONTEXT_MENU::Clear() void ACTION_MENU::Clear()
{ {
m_titleDisplayed = false; m_titleDisplayed = false;
@ -209,7 +209,7 @@ void CONTEXT_MENU::Clear()
} }
bool CONTEXT_MENU::HasEnabledItems() const bool ACTION_MENU::HasEnabledItems() const
{ {
bool hasEnabled = false; bool hasEnabled = false;
@ -228,7 +228,7 @@ bool CONTEXT_MENU::HasEnabledItems() const
} }
void CONTEXT_MENU::UpdateAll() void ACTION_MENU::UpdateAll()
{ {
try try
{ {
@ -236,35 +236,35 @@ void CONTEXT_MENU::UpdateAll()
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
wxLogDebug( wxString::Format( "CONTEXT_MENU update handler exception: %s", e.what() ) ); wxLogDebug( wxString::Format( "ACTION_MENU update handler exception: %s", e.what() ) );
} }
if( m_tool ) if( m_tool )
updateHotKeys(); updateHotKeys();
runOnSubmenus( std::bind( &CONTEXT_MENU::UpdateAll, _1 ) ); runOnSubmenus( std::bind( &ACTION_MENU::UpdateAll, _1 ) );
} }
void CONTEXT_MENU::SetTool( TOOL_INTERACTIVE* aTool ) void ACTION_MENU::SetTool( TOOL_INTERACTIVE* aTool )
{ {
m_tool = aTool; m_tool = aTool;
runOnSubmenus( std::bind( &CONTEXT_MENU::SetTool, _1, aTool ) ); runOnSubmenus( std::bind( &ACTION_MENU::SetTool, _1, aTool ) );
} }
CONTEXT_MENU* CONTEXT_MENU::Clone() const ACTION_MENU* ACTION_MENU::Clone() const
{ {
CONTEXT_MENU* clone = create(); ACTION_MENU* clone = create();
clone->Clear(); clone->Clear();
clone->copyFrom( *this ); clone->copyFrom( *this );
return clone; return clone;
} }
CONTEXT_MENU* CONTEXT_MENU::create() const ACTION_MENU* ACTION_MENU::create() const
{ {
CONTEXT_MENU* menu = new CONTEXT_MENU(); ACTION_MENU* menu = new ACTION_MENU();
wxASSERT_MSG( typeid( *this ) == typeid( *menu ), wxASSERT_MSG( typeid( *this ) == typeid( *menu ),
wxString::Format( "You need to override create() method for class %s", typeid(*this).name() ) ); wxString::Format( "You need to override create() method for class %s", typeid(*this).name() ) );
@ -273,14 +273,14 @@ CONTEXT_MENU* CONTEXT_MENU::create() const
} }
TOOL_MANAGER* CONTEXT_MENU::getToolManager() const TOOL_MANAGER* ACTION_MENU::getToolManager() const
{ {
wxASSERT( m_tool ); wxASSERT( m_tool );
return m_tool ? m_tool->GetManager() : nullptr; return m_tool ? m_tool->GetManager() : nullptr;
} }
void CONTEXT_MENU::updateHotKeys() void ACTION_MENU::updateHotKeys()
{ {
TOOL_MANAGER* toolMgr = getToolManager(); TOOL_MANAGER* toolMgr = getToolManager();
@ -314,7 +314,7 @@ void CONTEXT_MENU::updateHotKeys()
} }
void CONTEXT_MENU::onMenuEvent( wxMenuEvent& aEvent ) void ACTION_MENU::onMenuEvent( wxMenuEvent& aEvent )
{ {
OPT_TOOL_EVENT evt; OPT_TOOL_EVENT evt;
wxString menuText; wxString menuText;
@ -340,12 +340,12 @@ void CONTEXT_MENU::onMenuEvent( wxMenuEvent& aEvent )
// Store the selected position, so it can be checked by the tools // Store the selected position, so it can be checked by the tools
m_selected = aEvent.GetId(); m_selected = aEvent.GetId();
CONTEXT_MENU* parent = dynamic_cast<CONTEXT_MENU*>( GetParent() ); ACTION_MENU* parent = dynamic_cast<ACTION_MENU*>( GetParent() );
while( parent ) while( parent )
{ {
parent->m_selected = m_selected; parent->m_selected = m_selected;
parent = dynamic_cast<CONTEXT_MENU*>( parent->GetParent() ); parent = dynamic_cast<ACTION_MENU*>( parent->GetParent() );
} }
// Check if there is a TOOL_ACTION for the given ID // Check if there is a TOOL_ACTION for the given ID
@ -373,7 +373,7 @@ void CONTEXT_MENU::onMenuEvent( wxMenuEvent& aEvent )
if( menu && menu != this ) if( menu && menu != this )
#endif #endif
{ {
CONTEXT_MENU* cxmenu = static_cast<CONTEXT_MENU*>( menu ); ACTION_MENU* cxmenu = static_cast<ACTION_MENU*>( menu );
evt = cxmenu->eventHandler( aEvent ); evt = cxmenu->eventHandler( aEvent );
} }
} }
@ -402,36 +402,36 @@ void CONTEXT_MENU::onMenuEvent( wxMenuEvent& aEvent )
} }
void CONTEXT_MENU::runEventHandlers( const wxMenuEvent& aMenuEvent, OPT_TOOL_EVENT& aToolEvent ) void ACTION_MENU::runEventHandlers( const wxMenuEvent& aMenuEvent, OPT_TOOL_EVENT& aToolEvent )
{ {
aToolEvent = eventHandler( aMenuEvent ); aToolEvent = eventHandler( aMenuEvent );
if( !aToolEvent ) if( !aToolEvent )
runOnSubmenus( std::bind( &CONTEXT_MENU::runEventHandlers, _1, aMenuEvent, aToolEvent ) ); runOnSubmenus( std::bind( &ACTION_MENU::runEventHandlers, _1, aMenuEvent, aToolEvent ) );
} }
void CONTEXT_MENU::runOnSubmenus( std::function<void(CONTEXT_MENU*)> aFunction ) void ACTION_MENU::runOnSubmenus( std::function<void(ACTION_MENU*)> aFunction )
{ {
try try
{ {
std::for_each( m_submenus.begin(), m_submenus.end(), [&]( CONTEXT_MENU* m ) { std::for_each( m_submenus.begin(), m_submenus.end(), [&]( ACTION_MENU* m ) {
aFunction( m ); aFunction( m );
m->runOnSubmenus( aFunction ); m->runOnSubmenus( aFunction );
} ); } );
} }
catch( std::exception& e ) catch( std::exception& e )
{ {
wxLogDebug( wxString::Format( "CONTEXT_MENU runOnSubmenus exception: %s", e.what() ) ); wxLogDebug( wxString::Format( "ACTION_MENU runOnSubmenus exception: %s", e.what() ) );
} }
} }
OPT_TOOL_EVENT CONTEXT_MENU::findToolAction( int aId ) OPT_TOOL_EVENT ACTION_MENU::findToolAction( int aId )
{ {
OPT_TOOL_EVENT evt; OPT_TOOL_EVENT evt;
auto findFunc = [&]( CONTEXT_MENU* m ) { auto findFunc = [&]( ACTION_MENU* m ) {
if( evt ) if( evt )
return; return;
@ -450,7 +450,7 @@ OPT_TOOL_EVENT CONTEXT_MENU::findToolAction( int aId )
} }
void CONTEXT_MENU::copyFrom( const CONTEXT_MENU& aMenu ) void ACTION_MENU::copyFrom( const ACTION_MENU& aMenu )
{ {
m_icon = aMenu.m_icon; m_icon = aMenu.m_icon;
m_title = aMenu.m_title; m_title = aMenu.m_title;
@ -468,7 +468,7 @@ void CONTEXT_MENU::copyFrom( const CONTEXT_MENU& aMenu )
} }
wxMenuItem* CONTEXT_MENU::appendCopy( const wxMenuItem* aSource ) wxMenuItem* ACTION_MENU::appendCopy( const wxMenuItem* aSource )
{ {
wxMenuItem* newItem = new wxMenuItem( this, aSource->GetId(), aSource->GetItemLabel(), wxMenuItem* newItem = new wxMenuItem( this, aSource->GetId(), aSource->GetItemLabel(),
aSource->GetHelp(), aSource->GetKind() ); aSource->GetHelp(), aSource->GetKind() );
@ -481,12 +481,12 @@ wxMenuItem* CONTEXT_MENU::appendCopy( const wxMenuItem* aSource )
if( aSource->IsSubMenu() ) if( aSource->IsSubMenu() )
{ {
CONTEXT_MENU* menu = dynamic_cast<CONTEXT_MENU*>( aSource->GetSubMenu() ); ACTION_MENU* menu = dynamic_cast<ACTION_MENU*>( aSource->GetSubMenu() );
wxASSERT_MSG( menu, "Submenus are expected to be a CONTEXT_MENU" ); wxASSERT_MSG( menu, "Submenus are expected to be a ACTION_MENU" );
if( menu ) if( menu )
{ {
CONTEXT_MENU* menuCopy = menu->Clone(); ACTION_MENU* menuCopy = menu->Clone();
newItem->SetSubMenu( menuCopy ); newItem->SetSubMenu( menuCopy );
m_submenus.push_back( menuCopy ); m_submenus.push_back( menuCopy );
} }

View File

@ -24,10 +24,10 @@
*/ */
#include <tool/conditional_menu.h> #include <tool/conditional_menu.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
CONTEXT_MENU* CONDITIONAL_MENU::create() const ACTION_MENU* CONDITIONAL_MENU::create() const
{ {
CONDITIONAL_MENU* clone = new CONDITIONAL_MENU( m_isContextMenu, m_tool ); CONDITIONAL_MENU* clone = new CONDITIONAL_MENU( m_isContextMenu, m_tool );
clone->m_entries = m_entries; clone->m_entries = m_entries;
@ -51,7 +51,7 @@ void CONDITIONAL_MENU::AddCheckItem( const TOOL_ACTION& aAction,
} }
void CONDITIONAL_MENU::AddMenu( CONTEXT_MENU* aMenu, const SELECTION_CONDITION& aCondition, void CONDITIONAL_MENU::AddMenu( ACTION_MENU* aMenu, const SELECTION_CONDITION& aCondition,
int aOrder ) int aOrder )
{ {
addEntry( ENTRY( aMenu, aCondition, aOrder ) ); addEntry( ENTRY( aMenu, aCondition, aOrder ) );

View File

@ -27,7 +27,7 @@
#include <tool/tool_event.h> #include <tool/tool_event.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
TOOL_INTERACTIVE::TOOL_INTERACTIVE( TOOL_ID aId, const std::string& aName ) : TOOL_INTERACTIVE::TOOL_INTERACTIVE( TOOL_ID aId, const std::string& aName ) :
TOOL_BASE( INTERACTIVE, aId, aName ) TOOL_BASE( INTERACTIVE, aId, aName )
@ -71,7 +71,7 @@ void TOOL_INTERACTIVE::goInternal( TOOL_STATE_FUNC& aState, const TOOL_EVENT_LIS
} }
void TOOL_INTERACTIVE::SetContextMenu( CONTEXT_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger ) void TOOL_INTERACTIVE::SetContextMenu( ACTION_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger )
{ {
if( aMenu ) if( aMenu )
aMenu->SetTool( this ); aMenu->SetTool( this );

View File

@ -37,7 +37,7 @@
#include <tool/tool_base.h> #include <tool/tool_base.h>
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/coroutine.h> #include <tool/coroutine.h>
#include <tool/action_manager.h> #include <tool/action_manager.h>
@ -89,7 +89,7 @@ struct TOOL_MANAGER::TOOL_STATE
bool pendingContextMenu; bool pendingContextMenu;
/// Context menu currently used by the tool /// Context menu currently used by the tool
CONTEXT_MENU* contextMenu; ACTION_MENU* contextMenu;
/// Defines when the context menu is opened /// Defines when the context menu is opened
CONTEXT_MENU_TRIGGER contextMenuTrigger; CONTEXT_MENU_TRIGGER contextMenuTrigger;
@ -671,7 +671,7 @@ void TOOL_MANAGER::dispatchContextMenu( const TOOL_EVENT& aEvent )
st->waitEvents = TOOL_EVENT( TC_ANY, TA_ANY ); st->waitEvents = TOOL_EVENT( TC_ANY, TA_ANY );
// Store the menu pointer in case it is changed by the TOOL when handling menu events // Store the menu pointer in case it is changed by the TOOL when handling menu events
CONTEXT_MENU* m = st->contextMenu; ACTION_MENU* m = st->contextMenu;
if( st->contextMenuTrigger == CMENU_NOW ) if( st->contextMenuTrigger == CMENU_NOW )
st->contextMenuTrigger = CMENU_OFF; st->contextMenuTrigger = CMENU_OFF;
@ -695,7 +695,7 @@ void TOOL_MANAGER::dispatchContextMenu( const TOOL_EVENT& aEvent )
m_viewControls->ForceCursorPosition( true, m_menuCursor ); m_viewControls->ForceCursorPosition( true, m_menuCursor );
// Display a copy of menu // Display a copy of menu
std::unique_ptr<CONTEXT_MENU> menu( m->Clone() ); std::unique_ptr<ACTION_MENU> menu( m->Clone() );
m_menuOwner = toolId; m_menuOwner = toolId;
m_menuActive = true; m_menuActive = true;
@ -796,7 +796,7 @@ bool TOOL_MANAGER::ProcessEvent( const TOOL_EVENT& aEvent )
} }
void TOOL_MANAGER::ScheduleContextMenu( TOOL_BASE* aTool, CONTEXT_MENU* aMenu, void TOOL_MANAGER::ScheduleContextMenu( TOOL_BASE* aTool, ACTION_MENU* aMenu,
CONTEXT_MENU_TRIGGER aTrigger ) CONTEXT_MENU_TRIGGER aTrigger )
{ {
TOOL_STATE* st = m_toolState[aTool]; TOOL_STATE* st = m_toolState[aTool];

View File

@ -24,7 +24,7 @@
#include <draw_frame.h> #include <draw_frame.h>
#include <tool/tool_menu.h> #include <tool/tool_menu.h>
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/actions.h> #include <tool/actions.h>
#include <tool/zoom_menu.h> #include <tool/zoom_menu.h>
#include <tool/grid_menu.h> #include <tool/grid_menu.h>
@ -49,7 +49,7 @@ CONDITIONAL_MENU& TOOL_MENU::GetMenu()
} }
void TOOL_MENU::AddSubMenu( std::shared_ptr<CONTEXT_MENU> aSubMenu ) void TOOL_MENU::AddSubMenu( std::shared_ptr<ACTION_MENU> aSubMenu )
{ {
// store a copy of the menu (keeps a reference) // store a copy of the menu (keeps a reference)
m_subMenus.push_back( std::move( aSubMenu ) ); m_subMenus.push_back( std::move( aSubMenu ) );

View File

@ -22,7 +22,7 @@
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/selection.h> #include <tool/selection.h>
#include <tool/selection_conditions.h> #include <tool/selection_conditions.h>
#include <tool/tool_menu.h> #include <tool/tool_menu.h>

View File

@ -52,7 +52,7 @@
#include <wx/progdlg.h> #include <wx/progdlg.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tool/tool_dispatcher.h> #include <tool/tool_dispatcher.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/common_tools.h> #include <tool/common_tools.h>
#include <tool/zoom_tool.h> #include <tool/zoom_tool.h>
#include <tools/ee_actions.h> #include <tools/ee_actions.h>
@ -586,7 +586,7 @@ void LIB_EDIT_FRAME::OnViewEntryDoc( wxCommandEvent& event )
if( part->GetAliasCount() > 1 ) if( part->GetAliasCount() > 1 )
{ {
CONTEXT_MENU popup; ACTION_MENU popup;
wxString msg; wxString msg;
int id = 0; int id = 0;

View File

@ -277,7 +277,7 @@ void EE_SELECTION_TOOL::Reset( RESET_REASON aReason )
int EE_SELECTION_TOOL::UpdateMenu( const TOOL_EVENT& aEvent ) int EE_SELECTION_TOOL::UpdateMenu( const TOOL_EVENT& aEvent )
{ {
CONTEXT_MENU* actionMenu = aEvent.Parameter<CONTEXT_MENU*>(); ACTION_MENU* actionMenu = aEvent.Parameter<ACTION_MENU*>();
CONDITIONAL_MENU* conditionalMenu = dynamic_cast<CONDITIONAL_MENU*>( actionMenu ); CONDITIONAL_MENU* conditionalMenu = dynamic_cast<CONDITIONAL_MENU*>( actionMenu );
if( conditionalMenu ) if( conditionalMenu )
@ -841,8 +841,8 @@ int EE_SELECTION_TOOL::SelectionMenu( const TOOL_EVENT& aEvent )
bool EE_SELECTION_TOOL::doSelectionMenu( EE_COLLECTOR* aCollector ) bool EE_SELECTION_TOOL::doSelectionMenu( EE_COLLECTOR* aCollector )
{ {
EDA_ITEM* current = nullptr; EDA_ITEM* current = nullptr;
CONTEXT_MENU menu; ACTION_MENU menu;
int limit = std::min( MAX_SELECT_ITEM_IDS, aCollector->GetCount() ); int limit = std::min( MAX_SELECT_ITEM_IDS, aCollector->GetCount() );

View File

@ -25,7 +25,7 @@
#define KICAD_SCH_SELECTION_TOOL_H #define KICAD_SCH_SELECTION_TOOL_H
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/selection.h> #include <tool/selection.h>
#include <tool/tool_menu.h> #include <tool/tool_menu.h>
#include <ee_collectors.h> #include <ee_collectors.h>

View File

@ -175,7 +175,7 @@ TOOL_ACTION EE_ACTIONS::breakBus( "eeschema.InteractiveEdit.breakBus",
break_line_xpm ); break_line_xpm );
class SYMBOL_UNIT_MENU : public CONTEXT_MENU class SYMBOL_UNIT_MENU : public ACTION_MENU
{ {
public: public:
SYMBOL_UNIT_MENU() SYMBOL_UNIT_MENU()
@ -186,7 +186,7 @@ public:
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new SYMBOL_UNIT_MENU(); return new SYMBOL_UNIT_MENU();
} }

View File

@ -95,7 +95,7 @@ TOOL_ACTION EE_ACTIONS::finishLine( "eeschema.WireBusDrawing.finishLine",
checked_ok_xpm, AF_NONE ); checked_ok_xpm, AF_NONE );
class BUS_UNFOLD_MENU : public CONTEXT_MENU class BUS_UNFOLD_MENU : public ACTION_MENU
{ {
public: public:
BUS_UNFOLD_MENU() : BUS_UNFOLD_MENU() :
@ -112,7 +112,7 @@ public:
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new BUS_UNFOLD_MENU(); return new BUS_UNFOLD_MENU();
} }
@ -166,7 +166,7 @@ private:
if( member->Type() == CONNECTION_BUS ) if( member->Type() == CONNECTION_BUS )
{ {
wxMenu* submenu = new CONTEXT_MENU; wxMenu* submenu = new ACTION_MENU;
AppendSubMenu( submenu, name ); AppendSubMenu( submenu, name );
for( const auto& sub_member : member->Members() ) for( const auto& sub_member : member->Members() )

View File

@ -75,7 +75,7 @@ TOOL_ACTION GERBVIEW_ACTIONS::measureTool( "gerbview.InteractiveSelection.measur
nullptr, AF_ACTIVATE ); nullptr, AF_ACTIVATE );
class HIGHLIGHT_MENU: public CONTEXT_MENU class HIGHLIGHT_MENU: public ACTION_MENU
{ {
public: public:
HIGHLIGHT_MENU() HIGHLIGHT_MENU()
@ -131,7 +131,7 @@ private:
Add( GERBVIEW_ACTIONS::highlightClear ); Add( GERBVIEW_ACTIONS::highlightClear );
} }
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new HIGHLIGHT_MENU(); return new HIGHLIGHT_MENU();
} }
@ -606,7 +606,7 @@ EDA_ITEM* GERBVIEW_SELECTION_TOOL::disambiguationMenu( GERBER_COLLECTOR* aCollec
{ {
EDA_ITEM* current = NULL; EDA_ITEM* current = NULL;
KIGFX::VIEW_GROUP highlightGroup; KIGFX::VIEW_GROUP highlightGroup;
CONTEXT_MENU menu; ACTION_MENU menu;
highlightGroup.SetLayer( LAYER_SELECT_OVERLAY ); highlightGroup.SetLayer( LAYER_SELECT_OVERLAY );
getView()->Add( &highlightGroup ); getView()->Add( &highlightGroup );

View File

@ -25,7 +25,7 @@
#include <math/vector2d.h> #include <math/vector2d.h>
#include <tool/tool_interactive.h> #include <tool/tool_interactive.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/selection.h> #include <tool/selection.h>
#include <tool/selection_conditions.h> #include <tool/selection_conditions.h>
#include <tool/tool_menu.h> #include <tool/tool_menu.h>

View File

@ -36,25 +36,24 @@
class TOOL_INTERACTIVE; class TOOL_INTERACTIVE;
/** /**
* Class CONTEXT_MENU * Class ACTION_MENU
* *
* Defines the structure of a context (usually right-click) popup menu * Defines the structure of a menu based on ACTIONs.
* for a given tool.
*/ */
class CONTEXT_MENU : public wxMenu class ACTION_MENU : public wxMenu
{ {
public: public:
///> Default constructor ///> Default constructor
CONTEXT_MENU(); ACTION_MENU();
virtual ~CONTEXT_MENU(); virtual ~ACTION_MENU();
CONTEXT_MENU( const CONTEXT_MENU& aMenu ) = delete; ACTION_MENU( const ACTION_MENU& aMenu ) = delete;
CONTEXT_MENU& operator=( const CONTEXT_MENU& aMenu ) = delete; ACTION_MENU& operator=( const ACTION_MENU& aMenu ) = delete;
/** /**
* Function SetTitle() * Function SetTitle()
* Sets title for the context menu. The title is shown as a text label shown on the top of * Sets title for the menu. The title is shown as a text label shown on the top of
* the menu. * the menu.
* @param aTitle is the new title. * @param aTitle is the new title.
*/ */
@ -93,11 +92,11 @@ public:
/** /**
* Function Add() * Function Add()
* Adds a context menu as a submenu. The difference between this function and wxMenu::AppendSubMenu() * Adds an action menu as a submenu. The difference between this function and
* is the capability to handle icons. * wxMenu::AppendSubMenu() is the capability to handle icons.
* @param aMenu is the submenu to be added. * @param aMenu is the submenu to be added.
*/ */
wxMenuItem* Add( CONTEXT_MENU* aMenu ); wxMenuItem* Add( ACTION_MENU* aMenu );
/** /**
* Function Clear() * Function Clear()
@ -117,7 +116,7 @@ public:
* Function GetSelected() * Function GetSelected()
* Returns the position of selected item. If the returned value is negative, that means that * Returns the position of selected item. If the returned value is negative, that means that
* menu was dismissed. * menu was dismissed.
* @return The position of selected item in the context menu. * @return The position of selected item in the action menu.
*/ */
inline int GetSelected() const inline int GetSelected() const
{ {
@ -138,9 +137,9 @@ public:
void SetTool( TOOL_INTERACTIVE* aTool ); void SetTool( TOOL_INTERACTIVE* aTool );
/** /**
* Creates a deep, recursive copy of this CONTEXT_MENU. * Creates a deep, recursive copy of this ACTION_MENU.
*/ */
CONTEXT_MENU* Clone() const; ACTION_MENU* Clone() const;
public: public:
///> Menu requires updating before display. ///> Menu requires updating before display.
@ -148,7 +147,7 @@ public:
protected: protected:
///> Returns an instance of this class. It has to be overridden in inheriting classes. ///> Returns an instance of this class. It has to be overridden in inheriting classes.
virtual CONTEXT_MENU* create() const; virtual ACTION_MENU* create() const;
///> Returns an instance of TOOL_MANAGER class. ///> Returns an instance of TOOL_MANAGER class.
TOOL_MANAGER* getToolManager() const; TOOL_MANAGER* getToolManager() const;
@ -180,7 +179,7 @@ protected:
* Copies another menus data to this instance. Old entries are preserved, and ones form aMenu * Copies another menus data to this instance. Old entries are preserved, and ones form aMenu
* are copied. * are copied.
*/ */
void copyFrom( const CONTEXT_MENU& aMenu ); void copyFrom( const ACTION_MENU& aMenu );
protected: protected:
/** /**
@ -203,7 +202,7 @@ protected:
void runEventHandlers( const wxMenuEvent& aMenuEvent, OPT_TOOL_EVENT& aToolEvent ); void runEventHandlers( const wxMenuEvent& aMenuEvent, OPT_TOOL_EVENT& aToolEvent );
///> Runs a function on the menu and all its submenus. ///> Runs a function on the menu and all its submenus.
void runOnSubmenus( std::function<void(CONTEXT_MENU*)> aFunction ); void runOnSubmenus( std::function<void(ACTION_MENU*)> aFunction );
///> Checks if any of submenus contains a TOOL_ACTION with a specific ID. ///> Checks if any of submenus contains a TOOL_ACTION with a specific ID.
OPT_TOOL_EVENT findToolAction( int aId ); OPT_TOOL_EVENT findToolAction( int aId );
@ -227,7 +226,7 @@ protected:
std::map<int, const TOOL_ACTION*> m_toolActions; std::map<int, const TOOL_ACTION*> m_toolActions;
///> List of submenus. ///> List of submenus.
std::list<CONTEXT_MENU*> m_submenus; std::list<ACTION_MENU*> m_submenus;
///> Optional icon ///> Optional icon
const BITMAP_OPAQUE* m_icon; const BITMAP_OPAQUE* m_icon;

View File

@ -26,7 +26,7 @@
#define CONDITIONAL_MENU_H #define CONDITIONAL_MENU_H
#include <tool/selection_conditions.h> #include <tool/selection_conditions.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <list> #include <list>
#include <wx/wx.h> #include <wx/wx.h>
@ -36,7 +36,7 @@ class TOOL_ACTION;
class TOOL_INTERACTIVE; class TOOL_INTERACTIVE;
class CONDITIONAL_MENU : public CONTEXT_MENU class CONDITIONAL_MENU : public ACTION_MENU
{ {
public: public:
///> Constant to indicate that we do not care about an ENTRY location in the menu. ///> Constant to indicate that we do not care about an ENTRY location in the menu.
@ -49,7 +49,7 @@ public:
m_tool = aTool; m_tool = aTool;
} }
CONTEXT_MENU* create() const override; ACTION_MENU* create() const override;
/** /**
* Function AddItem() * Function AddItem()
@ -87,7 +87,7 @@ public:
* @param aOrder determines location of the added menu, higher numbers are put on the bottom. * @param aOrder determines location of the added menu, higher numbers are put on the bottom.
* You may use ANY_ORDER here if you think it does not matter. * You may use ANY_ORDER here if you think it does not matter.
*/ */
void AddMenu( CONTEXT_MENU* aMenu, void AddMenu( ACTION_MENU* aMenu,
const SELECTION_CONDITION& aCondition = SELECTION_CONDITIONS::ShowAlways, const SELECTION_CONDITION& aCondition = SELECTION_CONDITIONS::ShowAlways,
int aOrder = ANY_ORDER ); int aOrder = ANY_ORDER );
@ -124,7 +124,7 @@ private:
m_data.action = aAction; m_data.action = aAction;
} }
ENTRY( CONTEXT_MENU* aMenu, SELECTION_CONDITION aCondition, int aOrder ) : ENTRY( ACTION_MENU* aMenu, SELECTION_CONDITION aCondition, int aOrder ) :
m_type( MENU ), m_type( MENU ),
m_condition( aCondition ), m_condition( aCondition ),
m_order( aOrder ), m_order( aOrder ),
@ -160,7 +160,7 @@ private:
return m_data.action; return m_data.action;
} }
inline CONTEXT_MENU* Menu() const inline ACTION_MENU* Menu() const
{ {
assert( m_type == MENU ); assert( m_type == MENU );
return m_data.menu; return m_data.menu;
@ -191,7 +191,7 @@ private:
union { union {
const TOOL_ACTION* action; const TOOL_ACTION* action;
CONTEXT_MENU* menu; ACTION_MENU* menu;
} m_data; } m_data;
///> Condition to be fulfilled to show the entry in menu. ///> Condition to be fulfilled to show the entry in menu.

View File

@ -25,17 +25,17 @@
#ifndef GRID_MENU_H #ifndef GRID_MENU_H
#define GRID_MENU_H #define GRID_MENU_H
#include <tool/context_menu.h> #include <tool/action_menu.h>
class EDA_DRAW_FRAME; class EDA_DRAW_FRAME;
class GRID_MENU : public CONTEXT_MENU class GRID_MENU : public ACTION_MENU
{ {
public: public:
GRID_MENU( EDA_DRAW_FRAME* aParent ); GRID_MENU( EDA_DRAW_FRAME* aParent );
private: private:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new GRID_MENU( m_parent ); return new GRID_MENU( m_parent );
} }

View File

@ -31,7 +31,7 @@
#include <tool/tool_event.h> #include <tool/tool_event.h>
#include <tool/tool_base.h> #include <tool/tool_base.h>
class CONTEXT_MENU; class ACTION_MENU;
class TOOL_INTERACTIVE : public TOOL_BASE class TOOL_INTERACTIVE : public TOOL_BASE
{ {
@ -62,7 +62,7 @@ public:
* @param aMenu is the menu to be assigned. * @param aMenu is the menu to be assigned.
* @param aTrigger determines conditions upon which the context menu is activated. * @param aTrigger determines conditions upon which the context menu is activated.
*/ */
void SetContextMenu( CONTEXT_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger = CMENU_BUTTON ); void SetContextMenu( ACTION_MENU* aMenu, CONTEXT_MENU_TRIGGER aTrigger = CMENU_BUTTON );
/** /**
* Function RunMainStack() * Function RunMainStack()

View File

@ -36,7 +36,7 @@
class TOOL_BASE; class TOOL_BASE;
class ACTION_MANAGER; class ACTION_MANAGER;
class CONTEXT_MENU; class ACTION_MENU;
class wxWindow; class wxWindow;
/** /**
@ -347,7 +347,7 @@ public:
* CMENU_OFF: menu is disabled. * CMENU_OFF: menu is disabled.
* May be called from a coroutine context. * May be called from a coroutine context.
*/ */
void ScheduleContextMenu( TOOL_BASE* aTool, CONTEXT_MENU* aMenu, void ScheduleContextMenu( TOOL_BASE* aTool, ACTION_MENU* aMenu,
CONTEXT_MENU_TRIGGER aTrigger ); CONTEXT_MENU_TRIGGER aTrigger );
/** /**

View File

@ -30,7 +30,7 @@
#include <vector> #include <vector>
#include <memory> #include <memory>
class CONTEXT_MENU; class ACTION_MENU;
/** /**
* Class TOOL_MENU * Class TOOL_MENU
@ -87,14 +87,13 @@ public:
* *
* @param aSubMenu: a sub menu to add * @param aSubMenu: a sub menu to add
*/ */
void AddSubMenu( std::shared_ptr<CONTEXT_MENU> aSubMenu ); void AddSubMenu( std::shared_ptr<ACTION_MENU> aSubMenu );
/** /**
* Function ShowContextMenu * Function ShowContextMenu
* *
* Helper function to set and immediately show a CONTEXT_MENU * Helper function to set and immediately show a CONDITIONAL_MENU
* based on the internal CONDITIONAL_MENU in concert with * in concert with the given SELECTION
* the given SELECTION
* *
* You don't have to use this function, if the caller has a * You don't have to use this function, if the caller has a
* different way to show the menu, it can create one from * different way to show the menu, it can create one from
@ -162,7 +161,7 @@ private:
/** /**
* Lifetime-managing container of submenus * Lifetime-managing container of submenus
*/ */
std::vector<std::shared_ptr<CONTEXT_MENU> > m_subMenus; std::vector<std::shared_ptr<ACTION_MENU> > m_subMenus;
}; };
#endif // TOOLS_TOOL_MENU__H_ #endif // TOOLS_TOOL_MENU__H_

View File

@ -25,17 +25,17 @@
#ifndef ZOOM_MENU_H #ifndef ZOOM_MENU_H
#define ZOOM_MENU_H #define ZOOM_MENU_H
#include <tool/context_menu.h> #include <tool/action_menu.h>
class EDA_DRAW_FRAME; class EDA_DRAW_FRAME;
class ZOOM_MENU : public CONTEXT_MENU class ZOOM_MENU : public ACTION_MENU
{ {
public: public:
ZOOM_MENU( EDA_DRAW_FRAME* aParent ); ZOOM_MENU( EDA_DRAW_FRAME* aParent );
private: private:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new ZOOM_MENU( m_parent ); return new ZOOM_MENU( m_parent );
} }

View File

@ -31,7 +31,7 @@
#include <dialogs/dialog_pns_settings.h> #include <dialogs/dialog_pns_settings.h>
#include <dialogs/dialog_pns_length_tuning_settings.h> #include <dialogs/dialog_pns_length_tuning_settings.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tools/pcb_actions.h> #include <tools/pcb_actions.h>
#include <hotkeys.h> #include <hotkeys.h>
@ -86,7 +86,7 @@ LENGTH_TUNER_TOOL::LENGTH_TUNER_TOOL() :
} }
class TUNER_TOOL_MENU : public CONTEXT_MENU class TUNER_TOOL_MENU : public ACTION_MENU
{ {
public: public:
TUNER_TOOL_MENU() TUNER_TOOL_MENU()
@ -107,7 +107,7 @@ public:
} }
private: private:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new TUNER_TOOL_MENU(); return new TUNER_TOOL_MENU();
} }

View File

@ -41,7 +41,7 @@ using namespace std::placeholders;
#include <bitmaps.h> #include <bitmaps.h>
#include <hotkeys.h> #include <hotkeys.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tools/pcb_actions.h> #include <tools/pcb_actions.h>
#include <tools/grid_helper.h> #include <tools/grid_helper.h>

View File

@ -45,7 +45,7 @@ using namespace std::placeholders;
#include <bitmaps.h> #include <bitmaps.h>
#include <collectors.h> #include <collectors.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/tool_manager.h> #include <tool/tool_manager.h>
#include <tool/tool_settings.h> #include <tool/tool_settings.h>
#include <tool/grid_menu.h> #include <tool/grid_menu.h>
@ -205,7 +205,7 @@ ROUTER_TOOL::ROUTER_TOOL() :
} }
class TRACK_WIDTH_MENU: public CONTEXT_MENU class TRACK_WIDTH_MENU: public ACTION_MENU
{ {
public: public:
TRACK_WIDTH_MENU( PCB_EDIT_FRAME& aFrame ) : TRACK_WIDTH_MENU( PCB_EDIT_FRAME& aFrame ) :
@ -216,7 +216,7 @@ public:
} }
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new TRACK_WIDTH_MENU( m_frame ); return new TRACK_WIDTH_MENU( m_frame );
} }
@ -333,7 +333,7 @@ private:
}; };
class DIFF_PAIR_MENU: public CONTEXT_MENU class DIFF_PAIR_MENU: public ACTION_MENU
{ {
public: public:
DIFF_PAIR_MENU( PCB_EDIT_FRAME& aFrame ) : DIFF_PAIR_MENU( PCB_EDIT_FRAME& aFrame ) :
@ -344,7 +344,7 @@ public:
} }
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new DIFF_PAIR_MENU( m_frame ); return new DIFF_PAIR_MENU( m_frame );
} }
@ -423,7 +423,7 @@ private:
}; };
class ROUTER_TOOL_MENU : public CONTEXT_MENU class ROUTER_TOOL_MENU : public ACTION_MENU
{ {
public: public:
ROUTER_TOOL_MENU( PCB_EDIT_FRAME& aFrame, PNS::ROUTER_MODE aMode ) : ROUTER_TOOL_MENU( PCB_EDIT_FRAME& aFrame, PNS::ROUTER_MODE aMode ) :
@ -467,7 +467,7 @@ public:
} }
private: private:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new ROUTER_TOOL_MENU( m_frame, m_mode ); return new ROUTER_TOOL_MENU( m_frame, m_mode );
} }

View File

@ -61,7 +61,7 @@ TOOL_ACTION PCB_ACTIONS::pushPadSettings(
push_pad_settings_xpm ); push_pad_settings_xpm );
class PAD_CONTEXT_MENU : public CONTEXT_MENU class PAD_CONTEXT_MENU : public ACTION_MENU
{ {
public: public:
@ -88,7 +88,7 @@ public:
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new PAD_CONTEXT_MENU( m_editingFootprint, m_haveGlobalPadSettings ); return new PAD_CONTEXT_MENU( m_editingFootprint, m_haveGlobalPadSettings );
} }

View File

@ -27,7 +27,7 @@
#include <tools/pcb_tool_base.h> #include <tools/pcb_tool_base.h>
class CONTEXT_MENU; class ACTION_MENU;
/** /**
* Class PAD_TOOL * Class PAD_TOOL

View File

@ -153,7 +153,7 @@ TOOL_ACTION PCB_ACTIONS::updateLocalRatsnest( "pcbnew.Control.updateLocalRatsnes
AS_GLOBAL, 0, AS_GLOBAL, 0,
"", "" ); "", "" );
class ZONE_CONTEXT_MENU : public CONTEXT_MENU class ZONE_CONTEXT_MENU : public ACTION_MENU
{ {
public: public:
ZONE_CONTEXT_MENU() ZONE_CONTEXT_MENU()
@ -176,7 +176,7 @@ public:
protected: protected:
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new ZONE_CONTEXT_MENU(); return new ZONE_CONTEXT_MENU();
} }
@ -212,7 +212,7 @@ private:
}; };
class LOCK_CONTEXT_MENU : public CONTEXT_MENU class LOCK_CONTEXT_MENU : public ACTION_MENU
{ {
public: public:
LOCK_CONTEXT_MENU() LOCK_CONTEXT_MENU()
@ -226,7 +226,7 @@ public:
Add( PCB_ACTIONS::toggleLock ); Add( PCB_ACTIONS::toggleLock );
} }
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new LOCK_CONTEXT_MENU(); return new LOCK_CONTEXT_MENU();
} }

View File

@ -101,7 +101,7 @@ bool ALIGN_DISTRIBUTE_TOOL::Init()
m_frame = getEditFrame<PCB_BASE_FRAME>(); m_frame = getEditFrame<PCB_BASE_FRAME>();
// Create a context menu and make it available through selection tool // Create a context menu and make it available through selection tool
m_placementMenu = new CONTEXT_MENU; m_placementMenu = new ACTION_MENU;
m_placementMenu->SetIcon( align_items_xpm ); m_placementMenu->SetIcon( align_items_xpm );
m_placementMenu->SetTitle( _( "Align/Distribute" ) ); m_placementMenu->SetTitle( _( "Align/Distribute" ) );

View File

@ -130,7 +130,7 @@ private:
SELECTION_TOOL* m_selectionTool; SELECTION_TOOL* m_selectionTool;
CONTEXT_MENU* m_placementMenu; ACTION_MENU* m_placementMenu;
PCB_BASE_FRAME* m_frame; PCB_BASE_FRAME* m_frame;

View File

@ -140,7 +140,7 @@ TOOL_ACTION PCB_ACTIONS::filterSelection( "pcbnew.InteractiveSelection.FilterSel
_( "Filter Selection..." ), _( "Filter the types of items in the selection" ), _( "Filter Selection..." ), _( "Filter the types of items in the selection" ),
options_generic_xpm ); options_generic_xpm );
class SELECT_MENU: public CONTEXT_MENU class SELECT_MENU: public ACTION_MENU
{ {
public: public:
SELECT_MENU() SELECT_MENU()
@ -175,7 +175,7 @@ private:
Enable( getMenuId( PCB_ACTIONS::selectSameSheet ), sheetSelEnabled ); Enable( getMenuId( PCB_ACTIONS::selectSameSheet ), sheetSelEnabled );
} }
CONTEXT_MENU* create() const override ACTION_MENU* create() const override
{ {
return new SELECT_MENU(); return new SELECT_MENU();
} }
@ -1441,7 +1441,7 @@ bool SELECTION_TOOL::doSelectionMenu( GENERAL_COLLECTOR* aCollector, const wxStr
{ {
BOARD_ITEM* current = nullptr; BOARD_ITEM* current = nullptr;
SELECTION highlightGroup; SELECTION highlightGroup;
CONTEXT_MENU menu; ACTION_MENU menu;
highlightGroup.SetLayer( LAYER_SELECT_OVERLAY ); highlightGroup.SetLayer( LAYER_SELECT_OVERLAY );
getView()->Add( &highlightGroup ); getView()->Add( &highlightGroup );

View File

@ -31,7 +31,7 @@
#include <math/vector2d.h> #include <math/vector2d.h>
#include <tools/pcb_tool_base.h> #include <tools/pcb_tool_base.h>
#include <tool/context_menu.h> #include <tool/action_menu.h>
#include <tool/selection.h> #include <tool/selection.h>
#include <tools/pcb_selection_conditions.h> #include <tools/pcb_selection_conditions.h>