From 649a7fa305387cdcf80a12d983504e6d6ebdb064 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Thu, 27 Jun 2013 17:23:54 +0200 Subject: [PATCH] Proper handling of toggling outline display of items. --- pcbnew/basepcbframe.cpp | 1 + pcbnew/dialogs/dialog_general_options.cpp | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/pcbnew/basepcbframe.cpp b/pcbnew/basepcbframe.cpp index 143746afec..28d5a7a35e 100644 --- a/pcbnew/basepcbframe.cpp +++ b/pcbnew/basepcbframe.cpp @@ -506,6 +506,7 @@ void PCB_BASE_FRAME::OnTogglePadDrawMode( wxCommandEvent& aEvent ) KiGfx::PCB_RENDER_SETTINGS* settings = static_cast ( painter->GetSettings() ); settings->LoadDisplayOptions( DisplayOpt ); + m_galCanvas->GetView()->RecacheAllItems( true ); if( IsGalCanvasActive() ) m_galCanvas->Refresh(); diff --git a/pcbnew/dialogs/dialog_general_options.cpp b/pcbnew/dialogs/dialog_general_options.cpp index 0303401896..6c46cd1579 100644 --- a/pcbnew/dialogs/dialog_general_options.cpp +++ b/pcbnew/dialogs/dialog_general_options.cpp @@ -166,6 +166,7 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event ) static_cast ( m_galCanvas->GetView()->GetPainter() ); KiGfx::PCB_RENDER_SETTINGS* settings = static_cast ( 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 */