Commit 6efce74c authored by charras's avatar charras

Eeschema: fixed bug when edit a component reference using the component dialog editor

Code cleaning and using DrawPanel->Refresh() instead of ReDraw() when possible.
parent 3432474c
...@@ -139,10 +139,10 @@ check_find_package_result(OPENGL_FOUND "OpenGL") ...@@ -139,10 +139,10 @@ check_find_package_result(OPENGL_FOUND "OpenGL")
# http://www.wxwidgets.org/manuals/2.8/wx_librarieslist.html # http://www.wxwidgets.org/manuals/2.8/wx_librarieslist.html
if( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) if( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
find_package(wxWidgets COMPONENTS gl html adv core net base aui QUIET) find_package(wxWidgets COMPONENTS gl aui adv html core net base QUIET)
# find_package(wxWidgets COMPONENTS gl html adv core net base QUIET) # find_package(wxWidgets COMPONENTS gl adv html core net base QUIET)
else( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) else( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
find_package(wxWidgets COMPONENTS gl html adv core net base QUIET) find_package(wxWidgets COMPONENTS gl adv html core net base QUIET)
endif( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR ) endif( KICAD_AUIMANAGER OR KICAD_AUITOOLBAR )
check_find_package_result(wxWidgets_FOUND "wxWidgets") check_find_package_result(wxWidgets_FOUND "wxWidgets")
......
...@@ -28,10 +28,6 @@ bool SCH_SCREEN::SchematicCleanUp( wxDC* DC ) ...@@ -28,10 +28,6 @@ bool SCH_SCREEN::SchematicCleanUp( wxDC* DC )
int flag; int flag;
bool Modify = FALSE; bool Modify = FALSE;
WinEDA_SchematicFrame* frame;
frame = (WinEDA_SchematicFrame*) wxGetApp().GetTopWindow();
DrawList = EEDrawList; DrawList = EEDrawList;
for( ; DrawList != NULL; DrawList = DrawList->Next() ) for( ; DrawList != NULL; DrawList = DrawList->Next() )
{ {
...@@ -63,7 +59,10 @@ bool SCH_SCREEN::SchematicCleanUp( wxDC* DC ) ...@@ -63,7 +59,10 @@ bool SCH_SCREEN::SchematicCleanUp( wxDC* DC )
} }
} }
WinEDA_SchematicFrame* frame;
frame = (WinEDA_SchematicFrame*) wxGetApp().GetTopWindow();
frame->TestDanglingEnds( EEDrawList, DC ); frame->TestDanglingEnds( EEDrawList, DC );
return Modify; return Modify;
} }
......
...@@ -279,7 +279,8 @@ void WinEDA_SchematicFrame::GeneralControle( wxDC* DC, ...@@ -279,7 +279,8 @@ void WinEDA_SchematicFrame::GeneralControle( wxDC* DC,
if( screen->IsRefreshReq() ) if( screen->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
if( oldpos != screen->m_Curseur ) if( oldpos != screen->m_Curseur )
...@@ -372,7 +373,8 @@ void WinEDA_LibeditFrame::GeneralControle( wxDC* DC, ...@@ -372,7 +373,8 @@ void WinEDA_LibeditFrame::GeneralControle( wxDC* DC,
if( screen->IsRefreshReq() ) if( screen->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
if( oldpos != screen->m_Curseur ) if( oldpos != screen->m_Curseur )
...@@ -464,7 +466,8 @@ void WinEDA_ViewlibFrame::GeneralControle( wxDC* DC, ...@@ -464,7 +466,8 @@ void WinEDA_ViewlibFrame::GeneralControle( wxDC* DC,
if( screen->IsRefreshReq() ) if( screen->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
if( oldpos != screen->m_Curseur ) if( oldpos != screen->m_Curseur )
......
...@@ -272,6 +272,12 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event ...@@ -272,6 +272,12 @@ void DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick( wxCommandEvent& event
// copy all the fields back, and change the length of m_Fields. // copy all the fields back, and change the length of m_Fields.
m_Cmp->SetFields( m_FieldsBuf ); m_Cmp->SetFields( m_FieldsBuf );
// Reference has a specific initialisation, depending on the current active sheet
// because for a given component, in a complexe hierarchy, there are more than one
// reference.
m_Cmp->SetRef( m_Parent->GetSheet(), m_FieldsBuf[REFERENCE].m_Text );
m_Parent->GetScreen()->SetModify(); m_Parent->GetScreen()->SetModify();
......
...@@ -224,33 +224,10 @@ Error: %s" ), ...@@ -224,33 +224,10 @@ Error: %s" ),
} }
/* Create a new screen
*
* This screen is chained with OldScreen. The timestamp value is assigned to
* the parameter NewScreen-> TimeStamp
*/
SCH_SCREEN* WinEDA_SchematicFrame::CreateNewScreen( SCH_SCREEN* OldScreen,
int TimeStamp )
{
SCH_SCREEN* NewScreen;
NewScreen = new SCH_SCREEN();
NewScreen->SetRefreshReq();
if( OldScreen )
NewScreen->m_Company = OldScreen->m_Company;
NewScreen->m_TimeStamp = TimeStamp;
NewScreen->SetBack( OldScreen );
return NewScreen;
}
/** /**
* Save the entire project and create an archive for components. * Save the entire project and create an archive for components.
* *
* The library archive name is <root_name>.cache.lib * The library archive name is <root_name>-cache.lib
*/ */
void WinEDA_SchematicFrame::SaveProject() void WinEDA_SchematicFrame::SaveProject()
{ {
......
...@@ -112,11 +112,14 @@ static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC ) ...@@ -112,11 +112,14 @@ static void AbortSymbolTraceOn( WinEDA_DrawPanel* Panel, wxDC* DC )
if( item->m_Flags & IS_NEW ) if( item->m_Flags & IS_NEW )
{ {
if( item->Type() == COMPONENT_ARC_DRAW_TYPE ) if( DC )
Panel->GetParent()->RedrawActiveWindow( DC, TRUE ); {
else if( item->Type() == COMPONENT_ARC_DRAW_TYPE )
item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL, Panel->GetParent()->DrawPanel->Refresh( );
DefaultTransformMatrix ); else
item->Draw( Panel, DC, wxPoint( 0, 0 ), -1, g_XorMode, NULL,
DefaultTransformMatrix );
}
SAFE_DELETE( item ); SAFE_DELETE( item );
parent->SetDrawItem( NULL ); parent->SetDrawItem( NULL );
...@@ -214,13 +217,13 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry, ...@@ -214,13 +217,13 @@ LIB_DRAW_ITEM* WinEDA_LibeditFrame::CreateGraphicItem( LIB_COMPONENT* LibEntry,
Text->m_Orient = m_textOrientation; Text->m_Orient = m_textOrientation;
Text->m_Pos = GetScreen()->m_Curseur; Text->m_Pos = GetScreen()->m_Curseur;
NEGATE( Text->m_Pos.y ); NEGATE( Text->m_Pos.y );
// Enter the graphic text info // Enter the graphic text info
DrawPanel->m_IgnoreMouseEvents = true; DrawPanel->m_IgnoreMouseEvents = true;
EditSymbolText( NULL, Text ); EditSymbolText( NULL, Text );
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = false; DrawPanel->m_IgnoreMouseEvents = false;
if( Text->m_Text.IsEmpty() ) if( Text->m_Text.IsEmpty() )
{ {
SAFE_DELETE( Text ); SAFE_DELETE( Text );
......
...@@ -287,9 +287,6 @@ void WinEDA_ViewlibFrame::OnSashDrag( wxSashEvent& event ) ...@@ -287,9 +287,6 @@ void WinEDA_ViewlibFrame::OnSashDrag( wxSashEvent& event )
// Now, we must recalculate the position and size of subwindows // Now, we must recalculate the position and size of subwindows
wxSizeEvent SizeEv; wxSizeEvent SizeEv;
OnSize( SizeEv ); OnSize( SizeEv );
// Ensure the panel is always redrawn (sometimes some garbage remains):
DrawPanel->Refresh();
} }
...@@ -351,6 +348,9 @@ void WinEDA_ViewlibFrame::OnSize( wxSizeEvent& SizeEv ) ...@@ -351,6 +348,9 @@ void WinEDA_ViewlibFrame::OnSize( wxSizeEvent& SizeEv )
#endif #endif
SizeEv.Skip(); SizeEv.Skip();
// Ensure the panel is always redrawn (sometimes some garbage remains):
DrawPanel->Refresh();
} }
......
...@@ -25,7 +25,8 @@ void WinEDA_GerberFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) ...@@ -25,7 +25,8 @@ void WinEDA_GerberFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
if( GetScreen()->IsRefreshReq() ) if( GetScreen()->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
// We must return here, instead of proceeding. // We must return here, instead of proceeding.
// If we let the cursor move during a refresh request, // If we let the cursor move during a refresh request,
...@@ -105,7 +106,8 @@ void WinEDA_GerberFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) ...@@ -105,7 +106,8 @@ void WinEDA_GerberFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
if( GetScreen()->IsRefreshReq() ) if( GetScreen()->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
SetToolbars(); SetToolbars();
......
...@@ -65,7 +65,7 @@ void WinEDA_GerberFrame::Files_io( wxCommandEvent& event ) ...@@ -65,7 +65,7 @@ void WinEDA_GerberFrame::Files_io( wxCommandEvent& event )
case ID_NEW_BOARD: case ID_NEW_BOARD:
Clear_Pcb( true ); Clear_Pcb( true );
Zoom_Automatique( false ); Zoom_Automatique( false );
GetScreen()->SetRefreshReq(); DrawPanel->Refresh();
break; break;
case ID_GERBVIEW_LOAD_DRILL_FILE: case ID_GERBVIEW_LOAD_DRILL_FILE:
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include "hotkeys.h" #include "hotkeys.h"
#include "gerbview.h" #include "gerbview.h"
#include "protos.h" #include "class_drawpanel.h"
/* How to add a new hotkey: /* How to add a new hotkey:
* add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION. * add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION.
...@@ -139,7 +139,7 @@ void WinEDA_GerberFrame::OnHotKey( wxDC* DC, int hotkey, ...@@ -139,7 +139,7 @@ void WinEDA_GerberFrame::OnHotKey( wxDC* DC, int hotkey,
case HK_SWITCH_TRACK_DISPLAY_MODE: case HK_SWITCH_TRACK_DISPLAY_MODE:
DisplayOpt.DisplayPcbTrackFill ^= 1; DisplayOpt.DisplayPcbTrackFill &= 1; DisplayOpt.DisplayPcbTrackFill ^= 1; DisplayOpt.DisplayPcbTrackFill &= 1;
GetScreen()->SetRefreshReq(); DrawPanel->Refresh();
break; break;
case HK_SWITCH_LAYER_TO_PREVIOUS: case HK_SWITCH_LAYER_TO_PREVIOUS:
......
...@@ -233,7 +233,6 @@ public: ...@@ -233,7 +233,6 @@ public:
bool aSetFielsAttributeToVisible ); bool aSetFielsAttributeToVisible );
bool SaveEEFile( SCH_SCREEN* screen, int FileSave ); bool SaveEEFile( SCH_SCREEN* screen, int FileSave );
SCH_SCREEN* CreateNewScreen( SCH_SCREEN* OldScreen, int TimeStamp );
// General search: // General search:
......
...@@ -397,3 +397,31 @@ bool NETCLASS::ReadDescr( FILE* aFile, int* aLineNum ) ...@@ -397,3 +397,31 @@ bool NETCLASS::ReadDescr( FILE* aFile, int* aLineNum )
return result; return result;
} }
int NETCLASS::GetTrackMinWidth() const
{
return m_Parent->m_BoardSettings->m_TrackMinWidth;
}
int NETCLASS::GetViaMinDiameter() const
{
return m_Parent->m_BoardSettings->m_ViasMinSize;
}
int NETCLASS::GetViaMinDrill() const
{
return m_Parent->m_BoardSettings->m_ViasMinDrill;
}
int NETCLASS::GetuViaMinDiameter() const
{
return m_Parent->m_BoardSettings->m_MicroViasMinSize;
}
int NETCLASS::GetuViaMinDrill() const
{
return m_Parent->m_BoardSettings->m_MicroViasMinDrill;
}
...@@ -163,18 +163,23 @@ public: ...@@ -163,18 +163,23 @@ public:
void SetClearance( int aClearance ) { m_Clearance = aClearance; } void SetClearance( int aClearance ) { m_Clearance = aClearance; }
int GetTrackWidth() const { return m_TrackWidth; } int GetTrackWidth() const { return m_TrackWidth; }
int GetTrackMinWidth() const;
void SetTrackWidth( int aWidth ) { m_TrackWidth = aWidth; } void SetTrackWidth( int aWidth ) { m_TrackWidth = aWidth; }
int GetViaDiameter() const { return m_ViaDia; } int GetViaDiameter() const { return m_ViaDia; }
int GetViaMinDiameter() const;
void SetViaDiameter( int aDia ) { m_ViaDia = aDia; } void SetViaDiameter( int aDia ) { m_ViaDia = aDia; }
int GetViaDrill() const { return m_ViaDrill; } int GetViaDrill() const { return m_ViaDrill; }
int GetViaMinDrill() const;
void SetViaDrill( int aSize ) { m_ViaDrill = aSize; } void SetViaDrill( int aSize ) { m_ViaDrill = aSize; }
int GetuViaDiameter() const { return m_uViaDia; } int GetuViaDiameter() const { return m_uViaDia; }
int GetuViaMinDiameter() const;
void SetuViaDiameter( int aSize ) { m_uViaDia = aSize; } void SetuViaDiameter( int aSize ) { m_uViaDia = aSize; }
int GetuViaDrill() const { return m_uViaDrill; } int GetuViaDrill() const { return m_uViaDrill; }
int GetuViaMinDrill() const;
void SetuViaDrill( int aSize ) { m_uViaDrill = aSize; } void SetuViaDrill( int aSize ) { m_uViaDrill = aSize; }
......
...@@ -368,10 +368,10 @@ void WinEDA_PcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) ...@@ -368,10 +368,10 @@ void WinEDA_PcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
if( GetScreen()->IsRefreshReq() ) if( GetScreen()->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
SetToolbars(); SetToolbars();
UpdateStatusBar(); /* Display new cursor coordinates */ UpdateStatusBar(); /* Display new cursor coordinates */
} }
...@@ -730,7 +730,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -730,7 +730,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
// test if the via size is smaller than minimum // test if the via size is smaller than minimum
if( aRefSeg->Shape() == VIA_MICROVIA ) if( aRefSeg->Shape() == VIA_MICROVIA )
{ {
if( aRefSeg->m_Width < netclass->GetuViaDiameter() ) if( aRefSeg->m_Width < netclass->GetuViaMinDiameter() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_MICROVIA, m_currentMarker ); DRCE_TOO_SMALL_MICROVIA, m_currentMarker );
...@@ -739,7 +739,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -739,7 +739,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
} }
else else
{ {
if( aRefSeg->m_Width < netclass->GetViaDiameter() ) if( aRefSeg->m_Width < netclass->GetViaMinDiameter() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_VIA, m_currentMarker ); DRCE_TOO_SMALL_VIA, m_currentMarker );
...@@ -784,7 +784,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads ) ...@@ -784,7 +784,7 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart, bool testPads )
} }
else // This is a track segment else // This is a track segment
{ {
if( aRefSeg->m_Width < netclass->GetTrackWidth() ) if( aRefSeg->m_Width < netclass->GetTrackMinWidth() )
{ {
m_currentMarker = fillMarker( aRefSeg, NULL, m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_TOO_SMALL_TRACK_WIDTH, m_currentMarker ); DRCE_TOO_SMALL_TRACK_WIDTH, m_currentMarker );
......
...@@ -436,7 +436,7 @@ void WinEDA_ModuleEditFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) ...@@ -436,7 +436,7 @@ void WinEDA_ModuleEditFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
if( GetScreen()->IsRefreshReq() ) if( GetScreen()->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
// We must return here, instead of proceeding. // We must return here, instead of proceeding.
// If we let the cursor move during a refresh request, // If we let the cursor move during a refresh request,
...@@ -515,9 +515,9 @@ void WinEDA_ModuleEditFrame::GeneralControle( wxDC* DC, wxPoint Mouse ) ...@@ -515,9 +515,9 @@ void WinEDA_ModuleEditFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
if( GetScreen()->IsRefreshReq() ) if( GetScreen()->IsRefreshReq() )
{ {
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
wxSafeYield();
} }
SetToolbars(); SetToolbars();
UpdateStatusBar(); UpdateStatusBar();
} }
...@@ -131,7 +131,7 @@ void WinEDA_PcbFrame::StartMove_Module( MODULE* module, wxDC* DC ) ...@@ -131,7 +131,7 @@ void WinEDA_PcbFrame::StartMove_Module( MODULE* module, wxDC* DC )
GetBoard()->m_Status_Pcb |= DO_NOT_SHOW_GENERAL_RASTNEST; GetBoard()->m_Status_Pcb |= DO_NOT_SHOW_GENERAL_RASTNEST;
DrawPanel->ManageCurseur = Montre_Position_Empreinte; DrawPanel->ManageCurseur = Montre_Position_Empreinte;
DrawPanel->ForceCloseManageCurseur = Abort_MoveOrCopyModule; DrawPanel->ForceCloseManageCurseur = Abort_MoveOrCopyModule;
DrawPanel->m_AutoPAN_Request = TRUE; DrawPanel->m_AutoPAN_Request = true;
// Erase the module. // Erase the module.
if( DC ) if( DC )
...@@ -290,7 +290,7 @@ void Montre_Position_Empreinte( WinEDA_DrawPanel* panel, wxDC* DC, bool erase ) ...@@ -290,7 +290,7 @@ void Montre_Position_Empreinte( WinEDA_DrawPanel* panel, wxDC* DC, bool erase )
* The ratsnest and pad list are recalculated * The ratsnest and pad list are recalculated
* @param module = footprint to delete * @param module = footprint to delete
* @param DC = currentDevice Context. if NULL: do not redraw new ratsnest and * @param DC = currentDevice Context. if NULL: do not redraw new ratsnest and
* dirty rectangle * screen
* @param aPromptBeforeDeleting : if true: ask for confirmation before deleting * @param aPromptBeforeDeleting : if true: ask for confirmation before deleting
*/ */
bool WinEDA_PcbFrame::Delete_Module( MODULE* module, bool WinEDA_PcbFrame::Delete_Module( MODULE* module,
...@@ -307,9 +307,9 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module, ...@@ -307,9 +307,9 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module,
/* Confirm module delete. */ /* Confirm module delete. */
if( aAskBeforeDeleting ) if( aAskBeforeDeleting )
{ {
msg << _( "Delete Module" ) << wxT( " " ) << module->m_Reference->m_Text msg.Printf( _( "Delete Module %s (value %s) ?"),
<< wxT( " (" ) << _( "Value " ) << module->m_Value->m_Text GetChars(module->m_Reference->m_Text),
<< wxT( ") ?" ); GetChars(module->m_Value->m_Text) );
if( !IsOK( this, msg ) ) if( !IsOK( this, msg ) )
{ {
return FALSE; return FALSE;
...@@ -318,13 +318,6 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module, ...@@ -318,13 +318,6 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module,
GetScreen()->SetModify(); GetScreen()->SetModify();
/* Erase ratsnest if needed
* Dirty rectangle is not used here because usually using a XOR draw mode
* gives good results (very few artifacts) for ratsnest
*/
if( g_Show_Ratsnest )
DrawGeneralRatsnest( DC );
/* Remove module from list, and put it in undo command list */ /* Remove module from list, and put it in undo command list */
m_Pcb->m_Modules.Remove( module ); m_Pcb->m_Modules.Remove( module );
module->SetState( DELETED, ON ); module->SetState( DELETED, ON );
...@@ -332,11 +325,11 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module, ...@@ -332,11 +325,11 @@ bool WinEDA_PcbFrame::Delete_Module( MODULE* module,
Compile_Ratsnest( DC, true ); Compile_Ratsnest( DC, true );
// redraw the area where the module was // Redraw the full screen to ensure perfect display of board and ratsnest.
if( DC ) if( DC )
DrawPanel->PostDirtyRect( module->GetBoundingBox() ); DrawPanel->Refresh( );
RedrawActiveWindow( DC, TRUE );
return TRUE; return true;
} }
...@@ -493,7 +486,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, ...@@ -493,7 +486,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module,
Compile_Ratsnest( DC, true ); Compile_Ratsnest( DC, true );
if( DC ) if( DC )
RedrawActiveWindow( DC, TRUE ); DrawPanel->Refresh( );
module->DisplayInfo( this ); module->DisplayInfo( this );
...@@ -502,7 +495,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, ...@@ -502,7 +495,7 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module,
/* /*
* Rotate the footprint angle degrees in the direction < 0. * Rotate the footprint angle degrees in the direction < 0.
* If incremental == TRUE, the rotation is made from the last orientation, * If incremental == true, the rotation is made from the last orientation,
* If the module is placed in the absolute orientation angle. * If the module is placed in the absolute orientation angle.
* If DC == NULL, the component does not redraw. * If DC == NULL, the component does not redraw.
* Otherwise, it erases and redraws turns * Otherwise, it erases and redraws turns
...@@ -549,18 +542,19 @@ void WinEDA_BasePcbFrame::Rotate_Module( wxDC* DC, MODULE* module, ...@@ -549,18 +542,19 @@ void WinEDA_BasePcbFrame::Rotate_Module( wxDC* DC, MODULE* module,
if( DC ) if( DC )
{ {
if( !( module->m_Flags & IS_MOVED ) ) /* Rotation simple */ if( !( module->m_Flags & IS_MOVED ) )
{ { // not beiing moved: redraw the module and update ratsnest
module->Draw( DrawPanel, DC, GR_OR ); module->Draw( DrawPanel, DC, GR_OR );
Compile_Ratsnest( DC, true ); Compile_Ratsnest( DC, true );
} }
else else
{ { // Beiing moved: just redraw it
DrawModuleOutlines( DrawPanel, DC, module ); DrawModuleOutlines( DrawPanel, DC, module );
Dessine_Segments_Dragges( DrawPanel, DC ); Dessine_Segments_Dragges( DrawPanel, DC );
} }
RedrawActiveWindow( DC, TRUE );
if( module->m_Flags == 0 ) // module not in edit: redraw full screen
DrawPanel->Refresh( );
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment