parent
0132ceb3a1
commit
d39df05275
|
@ -572,7 +572,7 @@ void EDA_DRAW_PANEL::DrawGrid( wxDC* aDC )
|
|||
if( org.y < m_ClipBox.GetY() )
|
||||
org.y += wxRound( gridSize.y );
|
||||
|
||||
#if ( defined( __WXMAC__ ) || 0 )
|
||||
#if ( defined( __WXMAC__ ) || 1 )
|
||||
// Use a pixel based draw to display grid. There are a lot of calls, so the cost is
|
||||
// high and grid is slowly drawn on some platforms. Please note that this should
|
||||
// always be enabled until the bitmap based solution below is fixed.
|
||||
|
|
|
@ -25,38 +25,35 @@ void LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition )
|
|||
if( m_component == NULL ) // No component loaded !
|
||||
return;
|
||||
|
||||
if( m_ID_current_state == 0 )
|
||||
if( DrawEntry && DrawEntry->m_Flags )
|
||||
{
|
||||
if( DrawEntry && DrawEntry->m_Flags )
|
||||
switch( DrawEntry->Type() )
|
||||
{
|
||||
switch( DrawEntry->Type() )
|
||||
{
|
||||
case LIB_PIN_T:
|
||||
PlacePin( DC );
|
||||
DrawEntry = NULL;
|
||||
break;
|
||||
case LIB_PIN_T:
|
||||
PlacePin( DC );
|
||||
DrawEntry = NULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
EndDrawGraphicItem( DC );
|
||||
break;
|
||||
}
|
||||
default:
|
||||
EndDrawGraphicItem( DC );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawEntry = m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT, aPosition );
|
||||
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT,
|
||||
GetScreen()->GetCrossHairPosition() );
|
||||
}
|
||||
|
||||
if( DrawEntry )
|
||||
DrawEntry->DisplayInfo( this );
|
||||
|
||||
else
|
||||
{
|
||||
DrawEntry = m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT, aPosition );
|
||||
|
||||
if( DrawEntry == NULL )
|
||||
{
|
||||
DrawEntry = m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT,
|
||||
GetScreen()->GetCrossHairPosition() );
|
||||
}
|
||||
|
||||
if( DrawEntry )
|
||||
DrawEntry->DisplayInfo( this );
|
||||
|
||||
else
|
||||
DisplayCmpDoc();
|
||||
}
|
||||
DisplayCmpDoc();
|
||||
}
|
||||
|
||||
if( m_ID_current_state )
|
||||
|
|
|
@ -50,13 +50,13 @@ bool LIB_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu )
|
|||
_( "Cancel" ), cancel_xpm );
|
||||
PopMenu->AppendSeparator();
|
||||
}
|
||||
else if( m_ID_current_state )
|
||||
else if( m_ID_current_state && m_ID_current_state != ID_LIBEDIT_NO_TOOL )
|
||||
{ // If a tool is active, put menu "end tool"
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_LIBEDIT_CANCEL_EDITING,
|
||||
_( "End Tool" ), cancel_tool_xpm );
|
||||
PopMenu->AppendSeparator();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( DrawEntry )
|
||||
DrawEntry->DisplayInfo( this );
|
||||
|
|
|
@ -79,7 +79,7 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu )
|
|||
}
|
||||
|
||||
// If Command in progress: add "cancel" and "end tool" menu
|
||||
if( m_ID_current_state )
|
||||
if( m_ID_current_state && m_ID_current_state != ID_SCH_NO_TOOL)
|
||||
{
|
||||
if( DrawStruct && DrawStruct->m_Flags )
|
||||
{
|
||||
|
|
|
@ -273,7 +273,6 @@ bool SCH_SCREEN::SchematicCleanUp( EDA_DRAW_PANEL* aCanvas, wxDC* aDC )
|
|||
* segment can be flagged */
|
||||
DrawList->m_Flags |= TstDrawList->m_Flags;
|
||||
EraseStruct( TstDrawList, this );
|
||||
aCanvas->Refresh();
|
||||
TstDrawList = GetDrawItems();
|
||||
Modify = true;
|
||||
}
|
||||
|
@ -292,6 +291,8 @@ bool SCH_SCREEN::SchematicCleanUp( EDA_DRAW_PANEL* aCanvas, wxDC* aDC )
|
|||
|
||||
TestDanglingEnds( aCanvas, aDC );
|
||||
|
||||
if( aCanvas && Modify )
|
||||
aCanvas->Refresh();
|
||||
return Modify;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,36 +26,33 @@ void WinEDA_ModuleEditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
|
|||
BOARD_ITEM* item = GetCurItem();
|
||||
|
||||
DrawPanel->CrossHairOff( DC );
|
||||
if( m_ID_current_state == 0 )
|
||||
|
||||
if( item && item->m_Flags ) // Command in progress
|
||||
{
|
||||
if( item && item->m_Flags ) // Command in progress
|
||||
switch( item->Type() )
|
||||
{
|
||||
switch( item->Type() )
|
||||
{
|
||||
case TYPE_TEXTE_MODULE:
|
||||
PlaceTexteModule( (TEXTE_MODULE*) item, DC );
|
||||
break;
|
||||
case TYPE_TEXTE_MODULE:
|
||||
PlaceTexteModule( (TEXTE_MODULE*) item, DC );
|
||||
break;
|
||||
|
||||
case TYPE_EDGE_MODULE:
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
Place_EdgeMod( (EDGE_MODULE*) item );
|
||||
break;
|
||||
case TYPE_EDGE_MODULE:
|
||||
SaveCopyInUndoList( GetBoard()->m_Modules, UR_MODEDIT );
|
||||
Place_EdgeMod( (EDGE_MODULE*) item );
|
||||
break;
|
||||
|
||||
case TYPE_PAD:
|
||||
PlacePad( (D_PAD*) item, DC );
|
||||
break;
|
||||
case TYPE_PAD:
|
||||
PlacePad( (D_PAD*) item, DC );
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( wxT( "WinEDA_ModEditFrame::OnLeftClick err: \
|
||||
m_Flags != 0\nStruct @%p, type %d m_Flag %X" ),
|
||||
item, item->Type(), item->m_Flags );
|
||||
DisplayError( this, msg );
|
||||
item->m_Flags = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( wxT( "WinEDA_ModEditFrame::OnLeftClick err:Struct %d, m_Flag %X" ),
|
||||
item->Type(), item->m_Flags );
|
||||
DisplayError( this, msg );
|
||||
item->m_Flags = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,7 +196,7 @@ bool WinEDA_ModuleEditFrame::OnRightClick( const wxPoint& MousePos, wxMenu* PopM
|
|||
}
|
||||
|
||||
// End command in progress.
|
||||
if( m_ID_current_state )
|
||||
if( m_ID_current_state && m_ID_current_state != ID_MODEDIT_NO_TOOL )
|
||||
{
|
||||
if( item && item->m_Flags )
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND, _( "Cancel" ), cancel_xpm );
|
||||
|
|
|
@ -21,89 +21,83 @@ void WinEDA_PcbFrame::OnLeftClick( wxDC* aDC, const wxPoint& aPosition )
|
|||
BOARD_ITEM* DrawStruct = GetCurItem();
|
||||
bool exit = false;
|
||||
|
||||
if( (m_ID_current_state == 0) || ( DrawStruct && DrawStruct->m_Flags ) )
|
||||
if( DrawStruct && DrawStruct->m_Flags ) // Command in progress
|
||||
{
|
||||
DrawPanel->m_AutoPAN_Request = false;
|
||||
DrawPanel->m_IgnoreMouseEvents = true;
|
||||
DrawPanel->CrossHairOff( aDC );
|
||||
|
||||
if( DrawStruct && DrawStruct->m_Flags ) // "POPUP" in progress
|
||||
switch( DrawStruct->Type() )
|
||||
{
|
||||
DrawPanel->m_IgnoreMouseEvents = true;
|
||||
DrawPanel->CrossHairOff( aDC );
|
||||
|
||||
switch( DrawStruct->Type() )
|
||||
case TYPE_ZONE_CONTAINER:
|
||||
if( DrawStruct->IsNew() )
|
||||
{
|
||||
case TYPE_ZONE_CONTAINER:
|
||||
if( DrawStruct->IsNew() )
|
||||
{
|
||||
DrawPanel->m_AutoPAN_Request = true;
|
||||
Begin_Zone( aDC );
|
||||
}
|
||||
else
|
||||
End_Move_Zone_Corner_Or_Outlines( aDC, (ZONE_CONTAINER*) DrawStruct );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_TRACK:
|
||||
case TYPE_VIA:
|
||||
if( DrawStruct->m_Flags & IS_DRAGGED )
|
||||
{
|
||||
PlaceDraggedOrMovedTrackSegment( (TRACK*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case TYPE_TEXTE:
|
||||
Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_TEXTE_MODULE:
|
||||
PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_PAD:
|
||||
PlacePad( (D_PAD*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_MODULE:
|
||||
Place_Module( (MODULE*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_MIRE:
|
||||
Place_Mire( (MIREPCB*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_DRAWSEGMENT:
|
||||
Place_DrawItem( (DRAWSEGMENT*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_DIMENSION:
|
||||
// see above.
|
||||
break;
|
||||
|
||||
default:
|
||||
if( m_ID_current_state == 0 )
|
||||
{
|
||||
DisplayError( this,
|
||||
wxT(
|
||||
"WinEDA_PcbFrame::OnLeftClick() err: DrawType %d m_Flags != 0" ),
|
||||
DrawStruct->Type() );
|
||||
exit = true;
|
||||
}
|
||||
break;
|
||||
DrawPanel->m_AutoPAN_Request = true;
|
||||
Begin_Zone( aDC );
|
||||
}
|
||||
else
|
||||
End_Move_Zone_Corner_Or_Outlines( aDC, (ZONE_CONTAINER*) DrawStruct );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
DrawPanel->m_IgnoreMouseEvents = false;
|
||||
DrawPanel->CrossHairOn( aDC );
|
||||
case TYPE_TRACK:
|
||||
case TYPE_VIA:
|
||||
if( DrawStruct->m_Flags & IS_DRAGGED )
|
||||
{
|
||||
PlaceDraggedOrMovedTrackSegment( (TRACK*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
}
|
||||
break;
|
||||
|
||||
if( exit )
|
||||
return;
|
||||
case TYPE_TEXTE:
|
||||
Place_Texte_Pcb( (TEXTE_PCB*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_TEXTE_MODULE:
|
||||
PlaceTexteModule( (TEXTE_MODULE*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_PAD:
|
||||
PlacePad( (D_PAD*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_MODULE:
|
||||
Place_Module( (MODULE*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_MIRE:
|
||||
Place_Mire( (MIREPCB*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_DRAWSEGMENT:
|
||||
Place_DrawItem( (DRAWSEGMENT*) DrawStruct, aDC );
|
||||
exit = true;
|
||||
break;
|
||||
|
||||
case TYPE_DIMENSION:
|
||||
// see above.
|
||||
break;
|
||||
|
||||
default:
|
||||
DisplayError( this,
|
||||
wxT(
|
||||
"WinEDA_PcbFrame::OnLeftClick() err: DrawType %d m_Flags != 0" ),
|
||||
DrawStruct->Type() );
|
||||
exit = true;
|
||||
break;
|
||||
}
|
||||
|
||||
DrawPanel->m_IgnoreMouseEvents = false;
|
||||
DrawPanel->CrossHairOn( aDC );
|
||||
|
||||
if( exit )
|
||||
return;
|
||||
|
||||
else if( !wxGetKeyState( WXK_SHIFT ) && !wxGetKeyState( WXK_ALT )
|
||||
&& !wxGetKeyState( WXK_CONTROL ) )
|
||||
{
|
||||
|
|
|
@ -51,7 +51,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
|||
|
||||
DrawPanel->CrossHairOff( &dc );
|
||||
|
||||
if( m_ID_current_state )
|
||||
if( m_ID_current_state && m_ID_current_state != ID_PCB_NO_TOOL )
|
||||
{
|
||||
if( item && item->m_Flags )
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue