Pcbnew DIALOG_PLOT: fix incorrect association of LAYER_ID in Plot on All Layers list
The order of items in wxRearrangeList and the order of LAYER_ID values was incorrect, at least on W10/msys2 The order of items in wxRearrangeList is no longer used to avoid issues.
This commit is contained in:
parent
79a0ce9137
commit
97a8bfc27d
|
@ -91,13 +91,15 @@ DIALOG_PLOT::DIALOG_PLOT( PCB_EDIT_FRAME* aParent ) :
|
||||||
int order = 0;
|
int order = 0;
|
||||||
LSET plotOnAllLayersSelection = m_plotOpts.GetPlotOnAllLayersSelection();
|
LSET plotOnAllLayersSelection = m_plotOpts.GetPlotOnAllLayersSelection();
|
||||||
wxArrayInt plotAllLayersOrder;
|
wxArrayInt plotAllLayersOrder;
|
||||||
wxArrayString plotAllLayersChoices;
|
wxArrayString plotAllLayersChoicesStrings;
|
||||||
|
std::vector<PCB_LAYER_ID> layersIdChoiceList;
|
||||||
|
|
||||||
for( LSEQ seq = board->GetEnabledLayers().UIOrder(); seq; ++seq )
|
for( LSEQ seq = board->GetEnabledLayers().UIOrder(); seq; ++seq )
|
||||||
{
|
{
|
||||||
PCB_LAYER_ID id = *seq;
|
PCB_LAYER_ID id = *seq;
|
||||||
|
|
||||||
plotAllLayersChoices.Add( board->GetLayerName( id ) );
|
plotAllLayersChoicesStrings.Add( board->GetLayerName( id ) );
|
||||||
|
layersIdChoiceList.push_back( id );
|
||||||
|
|
||||||
size_t size = plotOnAllLayersSelection.size();
|
size_t size = plotOnAllLayersSelection.size();
|
||||||
|
|
||||||
|
@ -115,14 +117,18 @@ DIALOG_PLOT::DIALOG_PLOT( PCB_EDIT_FRAME* aParent ) :
|
||||||
|
|
||||||
m_plotAllLayersList = new wxRearrangeList( sbSizer->GetStaticBox(), wxID_ANY,
|
m_plotAllLayersList = new wxRearrangeList( sbSizer->GetStaticBox(), wxID_ANY,
|
||||||
wxDefaultPosition, wxDefaultSize,
|
wxDefaultPosition, wxDefaultSize,
|
||||||
plotAllLayersOrder, plotAllLayersChoices, 0 );
|
plotAllLayersOrder, plotAllLayersChoicesStrings, 0 );
|
||||||
|
|
||||||
int index = 0;
|
// Attach the LAYER_ID to each item in m_plotAllLayersList
|
||||||
|
// plotAllLayersChoicesStrings and layersIdChoiceList are in the same order,
|
||||||
for( LSEQ seq = board->GetEnabledLayers().SeqStackupBottom2Top(); seq; ++seq )
|
// but m_plotAllLayersList has these strings in a different order
|
||||||
|
for( size_t idx = 0; idx < layersIdChoiceList.size(); idx++ )
|
||||||
{
|
{
|
||||||
m_plotAllLayersList->SetClientObject( index, new PCB_LAYER_ID_CLIENT_DATA( *seq ) );
|
wxString& txt = plotAllLayersChoicesStrings[idx];
|
||||||
index += 1;
|
int list_idx = m_plotAllLayersList->FindString( txt, true );
|
||||||
|
|
||||||
|
PCB_LAYER_ID layer_id = layersIdChoiceList[idx];
|
||||||
|
m_plotAllLayersList->SetClientObject( list_idx, new PCB_LAYER_ID_CLIENT_DATA( layer_id ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
sbSizer->Add( m_plotAllLayersList, 1, wxALL | wxEXPAND, 5 );
|
sbSizer->Add( m_plotAllLayersList, 1, wxALL | wxEXPAND, 5 );
|
||||||
|
|
Loading…
Reference in New Issue