GAL: Show ratsnest lines when dragging

GAL is strict regarding which layers are rendered, therefore to show
ratsnest lines when an item is dragged - the ratsnest layer must be kept
enabled. Ratsnest line visibility is enabled per item and this is the
way to show/hide the lines.

Fixes: lp:1666473
* https://bugs.launchpad.net/kicad/+bug/1666473
This commit is contained in:
Maciej Suminski 2018-06-19 11:27:38 +02:00
parent a08c0ac08c
commit 81a5c0e3bf
2 changed files with 10 additions and 1 deletions

View File

@ -726,7 +726,7 @@ void PCB_LAYER_WIDGET::OnRenderEnable( int aId, bool isEnabled )
galCanvas->GetGAL()->SetGridVisibility( myframe->IsGridVisible() );
galCanvas->GetView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );
}
else if ( aId == LAYER_RATSNEST )
else if( aId == LAYER_RATSNEST )
{
// don't touch the layers. ratsnest is enabled on per-item basis.
galCanvas->GetView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );

View File

@ -44,6 +44,7 @@
#include <pcbnew_id.h>
#include <hotkeys.h>
#include <pcb_layer_box_selector.h>
#include <view/view.h>
#include <wx/wupdlock.h>
#include <memory>
@ -770,6 +771,14 @@ void PCB_EDIT_FRAME::OnSelectOptionToolbar( wxCommandEvent& event )
OnModify();
Compile_Ratsnest( NULL, true );
if( IsGalCanvasActive() )
{
// keep the ratsnest layer enabled in view, so it shows up when an item is dragged
auto view = GetGalCanvas()->GetView();
view->MarkTargetDirty( KIGFX::TARGET_NONCACHED );
view->SetLayerVisible( LAYER_RATSNEST, true );
}
m_canvas->Refresh();
break;