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;
|
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 ) ) )
|
else if( !sheet && ( evt->IsClick( BUT_LEFT ) || evt->IsDblClick( BUT_LEFT ) ) )
|
||||||
{
|
{
|
||||||
|
EE_SELECTION& selection = m_selectionTool->GetSelection();
|
||||||
EESCHEMA_SETTINGS* cfg = m_frame->eeconfig();
|
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 );
|
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->SetFlags( IS_NEW | IS_RESIZING );
|
||||||
sheet->SetScreen( nullptr );
|
sheet->SetScreen( nullptr );
|
||||||
sheet->SetBorderWidth( Mils2iu( cfg->m_Drawing.default_line_thickness ) );
|
sheet->SetBorderWidth( Mils2iu( cfg->m_Drawing.default_line_thickness ) );
|
||||||
|
|
|
@ -176,6 +176,8 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
return sheet->HasUndefinedPins();
|
return sheet->HasUndefinedPins();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
auto sheetSelection = E_C::Count( 1 ) && E_C::OnlyType( SCH_SHEET_T );
|
||||||
|
|
||||||
auto anyTextTool =
|
auto anyTextTool =
|
||||||
[this]( const SELECTION& aSel )
|
[this]( const SELECTION& aSel )
|
||||||
{
|
{
|
||||||
|
@ -386,6 +388,9 @@ bool SCH_EDIT_TOOL::Init()
|
||||||
//
|
//
|
||||||
CONDITIONAL_MENU& drawMenu = drawingTools->GetToolMenu().GetMenu();
|
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::rotateCCW, orientCondition, 200 );
|
||||||
drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::rotateCW, orientCondition, 200 );
|
||||||
drawMenu.AddItem( EE_ACTIONS::mirrorV, orientCondition, 200 );
|
drawMenu.AddItem( EE_ACTIONS::mirrorV, orientCondition, 200 );
|
||||||
|
|
|
@ -103,6 +103,8 @@ public:
|
||||||
*/
|
*/
|
||||||
void AddSeparator( int aOrder = ANY_ORDER );
|
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.
|
* Update the contents of the menu based on the supplied conditions.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue