Fix assert in Symbol Editor.
Also allows some symbol lib operations when we know the context even if the library itself isn't selected. (For instance, select a symbol, copy, paste.)
This commit is contained in:
parent
0df1558e10
commit
b43db7cd7d
|
@ -55,6 +55,15 @@ bool SYMBOL_EDITOR_CONTROL::Init()
|
||||||
LIB_ID sel = editFrame->GetTreeLIBID();
|
LIB_ID sel = editFrame->GetTreeLIBID();
|
||||||
return !sel.GetLibNickname().empty() && sel.GetLibItemName().empty();
|
return !sel.GetLibNickname().empty() && sel.GetLibItemName().empty();
|
||||||
};
|
};
|
||||||
|
// The libInferredCondition allows you to do things like New Symbol and Paste with a
|
||||||
|
// symbol selected (in other words, when we know the library context even if the library
|
||||||
|
// itself isn't selected.
|
||||||
|
auto libInferredCondition =
|
||||||
|
[ editFrame ]( const SELECTION& aSel )
|
||||||
|
{
|
||||||
|
LIB_ID sel = editFrame->GetTreeLIBID();
|
||||||
|
return !sel.GetLibNickname().empty();
|
||||||
|
};
|
||||||
auto canEditLibrary =
|
auto canEditLibrary =
|
||||||
[ editFrame ]( const SELECTION& aSel )
|
[ editFrame ]( const SELECTION& aSel )
|
||||||
{
|
{
|
||||||
|
@ -97,9 +106,8 @@ bool SYMBOL_EDITOR_CONTROL::Init()
|
||||||
ctxMenu.AddItem( ACTIONS::revert, libSelectedCondition );
|
ctxMenu.AddItem( ACTIONS::revert, libSelectedCondition );
|
||||||
|
|
||||||
ctxMenu.AddSeparator();
|
ctxMenu.AddSeparator();
|
||||||
ctxMenu.AddItem( EE_ACTIONS::newSymbol, libSelectedCondition && canEditLibrary );
|
ctxMenu.AddItem( EE_ACTIONS::newSymbol, libInferredCondition && canEditLibrary );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::editSymbol,
|
ctxMenu.AddItem( EE_ACTIONS::editSymbol, symbolSelectedCondition && canEditLibrary );
|
||||||
symbolSelectedCondition && canEditLibrary );
|
|
||||||
|
|
||||||
ctxMenu.AddSeparator();
|
ctxMenu.AddSeparator();
|
||||||
ctxMenu.AddItem( ACTIONS::save, symbolSelectedCondition );
|
ctxMenu.AddItem( ACTIONS::save, symbolSelectedCondition );
|
||||||
|
@ -107,18 +115,14 @@ bool SYMBOL_EDITOR_CONTROL::Init()
|
||||||
ctxMenu.AddItem( ACTIONS::revert, symbolSelectedCondition );
|
ctxMenu.AddItem( ACTIONS::revert, symbolSelectedCondition );
|
||||||
|
|
||||||
ctxMenu.AddSeparator();
|
ctxMenu.AddSeparator();
|
||||||
ctxMenu.AddItem( EE_ACTIONS::cutSymbol,
|
ctxMenu.AddItem( EE_ACTIONS::cutSymbol, symbolSelectedCondition && canEditLibrary );
|
||||||
symbolSelectedCondition && canEditLibrary );
|
|
||||||
ctxMenu.AddItem( EE_ACTIONS::copySymbol, symbolSelectedCondition );
|
ctxMenu.AddItem( EE_ACTIONS::copySymbol, symbolSelectedCondition );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::pasteSymbol,
|
ctxMenu.AddItem( EE_ACTIONS::pasteSymbol, libInferredCondition && canEditLibrary );
|
||||||
SELECTION_CONDITIONS::ShowAlways && canEditLibrary );
|
ctxMenu.AddItem( EE_ACTIONS::duplicateSymbol, symbolSelectedCondition && canEditLibrary );
|
||||||
ctxMenu.AddItem( EE_ACTIONS::duplicateSymbol,
|
ctxMenu.AddItem( EE_ACTIONS::deleteSymbol, symbolSelectedCondition && canEditLibrary );
|
||||||
symbolSelectedCondition && canEditLibrary );
|
|
||||||
ctxMenu.AddItem( EE_ACTIONS::deleteSymbol,
|
|
||||||
symbolSelectedCondition && canEditLibrary );
|
|
||||||
|
|
||||||
ctxMenu.AddSeparator();
|
ctxMenu.AddSeparator();
|
||||||
ctxMenu.AddItem( EE_ACTIONS::importSymbol, libSelectedCondition && canEditLibrary);
|
ctxMenu.AddItem( EE_ACTIONS::importSymbol, libInferredCondition && canEditLibrary);
|
||||||
ctxMenu.AddItem( EE_ACTIONS::exportSymbol, symbolSelectedCondition );
|
ctxMenu.AddItem( EE_ACTIONS::exportSymbol, symbolSelectedCondition );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue