reverted to former behavior for special situation when hit-test turns up nothing

This commit is contained in:
dickelbeck 2007-08-04 05:08:19 +00:00
parent 7fe80baf55
commit caa42eafca
3 changed files with 73 additions and 72 deletions

View File

@ -10,6 +10,8 @@ email address.
================================================================================
+ pcbnew
Read-ability formatting, I am playing with a C++ beautifier called uncrustify.
I had to patch it and spent 2 days getting it configured. Patch not
sent upstream yet.
Fixed a bug in "display local ratsnest pad or module": if you had a small
module and the mouse clicked its reference text, the ratnest for
the associated module would not show. The work around was to add

View File

@ -126,8 +126,7 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
case ID_PCB_SHOW_1_RATSNEST_BUTT:
DrawStruct = PcbGeneralLocateAndDisplay();
if( DrawStruct )
Show_1_Ratsnest( DrawStruct, DC );
Show_1_Ratsnest( DrawStruct, DC );
break;
case ID_PCB_MIRE_BUTT:

View File

@ -300,87 +300,87 @@ void WinEDA_PcbFrame::Show_1_Ratsnest( EDA_BaseStruct* item, wxDC* DC )
if( g_Show_Ratsnest )
return; // Deja Affich<63>
if( !item )
return;
if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0 )
{
Compile_Ratsnest( DC, TRUE );
}
if( item->m_StructType == TYPEPAD )
if( item )
{
pt_pad = (D_PAD*) item;
Module = (MODULE*) pt_pad->m_Parent;
}
if( pt_pad ) /* Affichage du chevelu du net correspondant */
{
pt_pad->Display_Infos( this );
pt_chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; pt_chevelu++, ii-- )
if( item->m_StructType == TYPEPAD )
{
if( pt_chevelu->m_NetCode == pt_pad->m_NetCode )
pt_pad = (D_PAD*) item;
Module = (MODULE*) pt_pad->m_Parent;
}
if( pt_pad ) /* Affichage du chevelu du net correspondant */
{
pt_pad->Display_Infos( this );
pt_chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; pt_chevelu++, ii-- )
{
if( (pt_chevelu->status & CH_VISIBLE) != 0 )
continue;
pt_chevelu->status |= CH_VISIBLE;
if( (pt_chevelu->status & CH_ACTIF) == 0 )
continue;
GRSetDrawMode( DC, GR_XOR );
GRLine( &DrawPanel->m_ClipBox, DC, pt_chevelu->pad_start->m_Pos.x,
pt_chevelu->pad_start->m_Pos.y,
pt_chevelu->pad_end->m_Pos.x,
pt_chevelu->pad_end->m_Pos.y,
0,
g_DesignSettings.m_RatsnestColor );
}
}
}
else
{
if( item->m_StructType == TYPETEXTEMODULE )
{
Module = (MODULE*) item->m_Parent;
}
else if( item->m_StructType == TYPEMODULE )
{
Module = (MODULE*) item;
}
if( Module )
{
Module->Display_Infos( this );
pt_pad = Module->m_Pads;
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
{
pt_chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; pt_chevelu++, ii-- )
if( pt_chevelu->m_NetCode == pt_pad->m_NetCode )
{
if( (pt_chevelu->pad_start == pt_pad)
|| (pt_chevelu->pad_end == pt_pad) )
{
if( pt_chevelu->status & CH_VISIBLE )
continue;
if( (pt_chevelu->status & CH_VISIBLE) != 0 )
continue;
pt_chevelu->status |= CH_VISIBLE;
if( (pt_chevelu->status & CH_ACTIF) == 0 )
continue;
pt_chevelu->status |= CH_VISIBLE;
if( (pt_chevelu->status & CH_ACTIF) == 0 )
continue;
GRSetDrawMode( DC, GR_XOR );
GRLine( &DrawPanel->m_ClipBox, DC, pt_chevelu->pad_start->m_Pos.x,
pt_chevelu->pad_start->m_Pos.y,
pt_chevelu->pad_end->m_Pos.x,
pt_chevelu->pad_end->m_Pos.y,
0,
g_DesignSettings.m_RatsnestColor );
}
GRSetDrawMode( DC, GR_XOR );
GRLine( &DrawPanel->m_ClipBox, DC, pt_chevelu->pad_start->m_Pos.x,
pt_chevelu->pad_start->m_Pos.y,
pt_chevelu->pad_end->m_Pos.x,
pt_chevelu->pad_end->m_Pos.y,
0,
g_DesignSettings.m_RatsnestColor );
}
}
}
else
{
if( item->m_StructType == TYPETEXTEMODULE )
{
Module = (MODULE*) item->m_Parent;
}
pt_pad = NULL;
else if( item->m_StructType == TYPEMODULE )
{
Module = (MODULE*) item;
}
if( Module )
{
Module->Display_Infos( this );
pt_pad = Module->m_Pads;
for( ; pt_pad != NULL; pt_pad = (D_PAD*) pt_pad->Pnext )
{
pt_chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; pt_chevelu++, ii-- )
{
if( (pt_chevelu->pad_start == pt_pad)
|| (pt_chevelu->pad_end == pt_pad) )
{
if( pt_chevelu->status & CH_VISIBLE )
continue;
pt_chevelu->status |= CH_VISIBLE;
if( (pt_chevelu->status & CH_ACTIF) == 0 )
continue;
GRSetDrawMode( DC, GR_XOR );
GRLine( &DrawPanel->m_ClipBox, DC, pt_chevelu->pad_start->m_Pos.x,
pt_chevelu->pad_start->m_Pos.y,
pt_chevelu->pad_end->m_Pos.x,
pt_chevelu->pad_end->m_Pos.y,
0,
g_DesignSettings.m_RatsnestColor );
}
}
}
pt_pad = NULL;
}
}
}