Proper handling of toggling outline display of items.

This commit is contained in:
Maciej Suminski 2013-06-27 17:23:54 +02:00
parent 628c069a39
commit 649a7fa305
2 changed files with 20 additions and 3 deletions

View File

@ -506,6 +506,7 @@ void PCB_BASE_FRAME::OnTogglePadDrawMode( wxCommandEvent& aEvent )
KiGfx::PCB_RENDER_SETTINGS* settings =
static_cast<KiGfx::PCB_RENDER_SETTINGS*> ( painter->GetSettings() );
settings->LoadDisplayOptions( DisplayOpt );
m_galCanvas->GetView()->RecacheAllItems( true );
if( IsGalCanvasActive() )
m_galCanvas->Refresh();

View File

@ -166,6 +166,7 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
static_cast<KiGfx::PCB_PAINTER*> ( m_galCanvas->GetView()->GetPainter() );
KiGfx::PCB_RENDER_SETTINGS* settings =
static_cast<KiGfx::PCB_RENDER_SETTINGS*> ( painter->GetSettings() );
bool recache = false;
#endif /* KICAD_GAL */
switch( id )
@ -216,18 +217,26 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
case ID_TB_OPTIONS_SHOW_VIAS_SKETCH:
m_DisplayViaFill = DisplayOpt.DisplayViaFill = !state;
m_canvas->Refresh();
#ifdef KICAD_GAL
recache = true;
if( !IsGalCanvasActive() )
#endif /* KICAD_GAL */
m_canvas->Refresh();
break;
case ID_TB_OPTIONS_SHOW_TRACKS_SKETCH:
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = !state;
m_canvas->Refresh();
#ifdef KICAD_GAL
recache = true;
if( !IsGalCanvasActive() )
#endif /* KICAD_GAL */
m_canvas->Refresh();
break;
case ID_TB_OPTIONS_SHOW_HIGH_CONTRAST_MODE:
DisplayOpt.ContrastModeDisplay = state;
#ifdef KICAD_GAL
// Apply new display options to the GAL canvas
// Apply new display options to the GAL canvas (this is faster than recaching)
settings->LoadDisplayOptions( DisplayOpt );
m_galCanvas->GetView()->EnableTopLayer( state );
m_galCanvas->GetView()->UpdateAllLayersColor();
@ -261,6 +270,13 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
}
#ifdef KICAD_GAL
if( recache )
{
// Apply new display options to the GAL canvas
settings->LoadDisplayOptions( DisplayOpt );
m_galCanvas->GetView()->RecacheAllItems( true );
}
if( IsGalCanvasActive() )
m_galCanvas->Refresh();
#endif /* KICAD_GAL */