Add "Enter Sheet" to Sheet tool (context menu & double-click).
Fixes https://gitlab.com/kicad/code/kicad/issues/11531
This commit is contained in:
parent
5cae4cf918
commit
abba1b04bd
|
@ -99,6 +99,12 @@ void CONDITIONAL_MENU::AddSeparator( int aOrder )
|
|||
}
|
||||
|
||||
|
||||
void CONDITIONAL_MENU::AddSeparator( const SELECTION_CONDITION& aCondition, int aOrder )
|
||||
{
|
||||
addEntry( ENTRY( aCondition, aOrder ) );
|
||||
}
|
||||
|
||||
|
||||
SELECTION g_resolveDummySelection;
|
||||
|
||||
|
||||
|
|
|
@ -1660,11 +1660,28 @@ int SCH_DRAWING_TOOLS::DrawSheet( const TOOL_EVENT& aEvent )
|
|||
}
|
||||
else if( !sheet && ( evt->IsClick( BUT_LEFT ) || evt->IsDblClick( BUT_LEFT ) ) )
|
||||
{
|
||||
EE_SELECTION& selection = m_selectionTool->GetSelection();
|
||||
EESCHEMA_SETTINGS* cfg = m_frame->eeconfig();
|
||||
|
||||
if( selection.Size() == 1
|
||||
&& selection.Front()->Type() == SCH_SHEET_T
|
||||
&& selection.Front()->GetBoundingBox().Contains( cursorPos ) )
|
||||
{
|
||||
if( evt->IsClick( BUT_LEFT ) )
|
||||
{
|
||||
// sheet already selected
|
||||
continue;
|
||||
}
|
||||
else if( evt->IsDblClick( BUT_LEFT ) )
|
||||
{
|
||||
m_toolMgr->RunAction( EE_ACTIONS::enterSheet, false );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||
|
||||
sheet = new SCH_SHEET( m_frame->GetCurrentSheet().Last(), (VECTOR2I) cursorPos );
|
||||
sheet = new SCH_SHEET( m_frame->GetCurrentSheet().Last(), cursorPos );
|
||||
sheet->SetFlags( IS_NEW | IS_RESIZING );
|
||||
sheet->SetScreen( nullptr );
|
||||
sheet->SetBorderWidth( Mils2iu( cfg->m_Drawing.default_line_thickness ) );
|
||||
|
|
|
@ -176,6 +176,8 @@ bool SCH_EDIT_TOOL::Init()
|
|||
return sheet->HasUndefinedPins();
|
||||
};
|
||||
|
||||
auto sheetSelection = E_C::Count( 1 ) && E_C::OnlyType( SCH_SHEET_T );
|
||||
|
||||
auto anyTextTool =
|
||||
[this]( const SELECTION& aSel )
|
||||
{
|
||||
|
@ -386,6 +388,9 @@ bool SCH_EDIT_TOOL::Init()
|
|||
//
|
||||
CONDITIONAL_MENU& drawMenu = drawingTools->GetToolMenu().GetMenu();
|
||||
|
||||
drawMenu.AddItem( EE_ACTIONS::enterSheet, sheetSelection && EE_CONDITIONS::Idle, 1 );
|
||||
drawMenu.AddSeparator( sheetSelection && EE_CONDITIONS::Idle, 1 );
|
||||
|
||||
drawMenu.AddItem( EE_ACTIONS::rotateCCW, orientCondition, 200 );
|
||||
drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
|
||||
drawMenu.AddItem( EE_ACTIONS::mirrorV, orientCondition, 200 );
|
||||
|
|
|
@ -103,6 +103,8 @@ public:
|
|||
*/
|
||||
void AddSeparator( int aOrder = ANY_ORDER );
|
||||
|
||||
void AddSeparator( const SELECTION_CONDITION& aCondition, int aOrder );
|
||||
|
||||
/**
|
||||
* Update the contents of the menu based on the supplied conditions.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue