Fix a couple of bugs in intersheet references.
1) init reference pages before trying to draw the SCH_FIELDs when turning intersheet references on 2) don't double redraw because we accidentally cleared the last hover item on a non-mouse-moved event. 3) make sure the root sheet gets a name for the hypertext menu.
This commit is contained in:
parent
d3d26f2892
commit
3da0ab1a9a
|
@ -539,7 +539,7 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
|
|||
m_toolManager->RunAction( ACTIONS::zoomFitScreen, true );
|
||||
SetSheetNumberAndCount();
|
||||
|
||||
RecomputeIntersheetsRefs();
|
||||
RecomputeIntersheetRefs();
|
||||
|
||||
// re-create junctions if needed. Eeschema optimizes wires by merging
|
||||
// colinear segments. If a schematic is saved without a valid
|
||||
|
|
|
@ -1285,13 +1285,13 @@ void SCH_EDIT_FRAME::RecalculateConnections( SCH_CLEANUP_FLAGS aCleanupFlags )
|
|||
wxLogTrace( "CONN_PROFILE", "SchematicCleanUp() %0.4f ms", timer.msecs() );
|
||||
|
||||
if( settings.m_IntersheetRefsShow == true )
|
||||
RecomputeIntersheetsRefs();
|
||||
RecomputeIntersheetRefs();
|
||||
|
||||
Schematic().ConnectionGraph()->Recalculate( list, true );
|
||||
}
|
||||
|
||||
|
||||
int SCH_EDIT_FRAME::RecomputeIntersheetsRefs()
|
||||
int SCH_EDIT_FRAME::RecomputeIntersheetRefs()
|
||||
{
|
||||
std::map<wxString, std::set<wxString>>& pageRefsMap = Schematic().GetPageRefsMap();
|
||||
|
||||
|
@ -1348,6 +1348,9 @@ int SCH_EDIT_FRAME::RecomputeIntersheetsRefs()
|
|||
|
||||
void SCH_EDIT_FRAME::ShowAllIntersheetRefs( bool aShow )
|
||||
{
|
||||
if( aShow )
|
||||
RecomputeIntersheetRefs();
|
||||
|
||||
SCH_SCREENS screens( Schematic().Root() );
|
||||
|
||||
for( SCH_SCREEN* screen = screens.GetFirst(); screen; screen = screens.GetNext() )
|
||||
|
|
|
@ -927,7 +927,12 @@ public:
|
|||
*/
|
||||
void UpdateSymbolFromEditor( const LIB_PART& aSymbol );
|
||||
|
||||
int RecomputeIntersheetsRefs();
|
||||
/**
|
||||
* Update the schematic's page reference map for all global labels, and refresh the labels
|
||||
* so that they are redrawn with up-to-date references.
|
||||
* @return
|
||||
*/
|
||||
int RecomputeIntersheetRefs();
|
||||
|
||||
void ShowAllIntersheetRefs( bool aShow );
|
||||
|
||||
|
|
|
@ -472,15 +472,18 @@ void SCH_FIELD::DoHypertextMenu( EDA_DRAW_FRAME* aFrame )
|
|||
std::sort( pageListCopy.begin(), pageListCopy.end() );
|
||||
|
||||
for( const SCH_SHEET_PATH& sheet : Schematic()->GetSheets() )
|
||||
sheetNames[ sheet.GetPageNumber() ] = sheet.Last()->GetName();
|
||||
{
|
||||
if( sheet.size() == 1 )
|
||||
sheetNames[ sheet.GetPageNumber() ] = _( "<root sheet>" );
|
||||
else
|
||||
sheetNames[ sheet.GetPageNumber() ] = sheet.Last()->GetName();
|
||||
}
|
||||
|
||||
for( const wxString& pageNo : pageListCopy )
|
||||
{
|
||||
wxString pageName = pageNo == "/" ? _( "Root" ) : sheetNames[ pageNo ];
|
||||
|
||||
menu.Append( -1, wxString::Format( _( "Go to Page %s (%s)" ),
|
||||
pageNo,
|
||||
pageName ) );
|
||||
sheetNames[ pageNo ] ) );
|
||||
}
|
||||
|
||||
menu.AppendSeparator();
|
||||
|
|
|
@ -307,7 +307,7 @@ int EE_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
|
|||
while( TOOL_EVENT* evt = Wait() )
|
||||
{
|
||||
bool displayWireCursor = false;
|
||||
KIID rolloverItem = niluuid;
|
||||
KIID rolloverItem = lastRolloverItem;
|
||||
m_additive = m_subtractive = m_exclusive_or = false;
|
||||
|
||||
if( evt->Modifier( MD_SHIFT ) && evt->Modifier( MD_CTRL ) )
|
||||
|
@ -496,6 +496,7 @@ int EE_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
|
|||
}
|
||||
else if( evt->IsMotion() && !m_isSymbolEditor && m_frame->ToolStackIsEmpty() )
|
||||
{
|
||||
rolloverItem = niluuid;
|
||||
EE_COLLECTOR collector;
|
||||
|
||||
// We are checking if we should display a pencil when hovering over anchors
|
||||
|
|
Loading…
Reference in New Issue