Make sub menus conditional on them having child items.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16631
This commit is contained in:
Jeff Young
2024-01-18 00:21:15 +00:00
parent 7aad7fcce6
commit 97cb15dd47
3 changed files with 20 additions and 4 deletions
+18 -2
View File
@@ -182,6 +182,22 @@ bool EDIT_TOOL::Init()
std::shared_ptr<CONDITIONAL_MENU> shapeModificationSubMenu = makeShapeModificationMenu( this );
m_selectionTool->GetToolMenu().RegisterSubMenu( shapeModificationSubMenu );
auto positioningToolsCondition =
[&]( const SELECTION& aSel )
{
std::shared_ptr<CONDITIONAL_MENU> subMenu = makePositioningToolsMenu( this );
subMenu->Evaluate( aSel );
return subMenu->GetMenuItemCount() > 0;
};
auto shapeModificationCondition =
[&]( const SELECTION& aSel )
{
std::shared_ptr<CONDITIONAL_MENU> subMenu = makeShapeModificationMenu( this );
subMenu->Evaluate( aSel );
return subMenu->GetMenuItemCount() > 0;
};
auto propertiesCondition =
[&]( const SELECTION& aSel )
{
@@ -337,8 +353,8 @@ bool EDIT_TOOL::Init()
// Add the submenu for the special tools: modfiers and positioning tools
menu.AddSeparator( 100 );
menu.AddMenu( shapeModificationSubMenu.get(), SELECTION_CONDITIONS::NotEmpty, 100 );
menu.AddMenu( positioningToolsSubMenu.get(), SELECTION_CONDITIONS::NotEmpty, 100 );
menu.AddMenu( shapeModificationSubMenu.get(), shapeModificationCondition, 100 );
menu.AddMenu( positioningToolsSubMenu.get(), positioningToolsCondition, 100 );
menu.AddSeparator( 150 );
menu.AddItem( ACTIONS::cut, SELECTION_CONDITIONS::NotEmpty, 150 );