diff --git a/3d-viewer/3d_frame.cpp b/3d-viewer/3d_frame.cpp index bb1b0befc5..5ad9e45493 100644 --- a/3d-viewer/3d_frame.cpp +++ b/3d-viewer/3d_frame.cpp @@ -33,6 +33,7 @@ double DataScale3D; // 3D conversion units. BEGIN_EVENT_TABLE( WinEDA3D_DrawFrame, wxFrame ) + EVT_ACTIVATE( WinEDA3D_DrawFrame::OnActivate ) EVT_TOOL_RANGE( ID_ZOOM_IN, ID_ZOOM_PAGE, WinEDA3D_DrawFrame::Process_Zoom ) EVT_TOOL_RANGE( ID_START_COMMAND_3D, ID_END_COMMAND_3D, WinEDA3D_DrawFrame::Process_Special_Functions ) @@ -351,6 +352,18 @@ void WinEDA3D_DrawFrame::NewDisplay() } +void WinEDA3D_DrawFrame::OnActivate( wxActivateEvent& event ) +{ + // Reload data if 3D frame shows a footprint, + // because it can be changed since last frame activation + if( m_Parent->m_Ident == MODULE_EDITOR_FRAME ) + { +// NewDisplay(); + } + event.Skip(); // required under wxMAC +} + + /* called to set the background color of the 3D scene */ void WinEDA3D_DrawFrame::Set3DBgColor() diff --git a/3d-viewer/3d_viewer.h b/3d-viewer/3d_viewer.h index 14c853cb97..e066b7499b 100644 --- a/3d-viewer/3d_viewer.h +++ b/3d-viewer/3d_viewer.h @@ -123,7 +123,7 @@ public: double m_BoardScale; /* Normalization scale for coordinates: * when scaled between -1.0 and +1.0 */ double m_LayerZcoord[32]; - double m_ActZpos; + double m_ActZpos; public: Info_3D_Visu(); ~Info_3D_Visu(); }; @@ -219,6 +219,7 @@ public: void RedrawActiveWindow( wxDC* DC, bool EraseBg ); void Process_Special_Functions( wxCommandEvent& event ); void Process_Zoom( wxCommandEvent& event ); + void OnActivate( wxActivateEvent& event ); void NewDisplay(); void Set3DBgColor(); diff --git a/pcbnew/dialog_design_rules.cpp b/pcbnew/dialog_design_rules.cpp index f42c15edeb..cc3d77673f 100644 --- a/pcbnew/dialog_design_rules.cpp +++ b/pcbnew/dialog_design_rules.cpp @@ -290,12 +290,15 @@ void DIALOG_DESIGN_RULES::InitDimensionsLists() static bool sortByClassThenName( NETCUP* a, NETCUP* b ) { // return a < b - if( a->clazz < b->clazz ) return true; - if( a->net < b->net ) - return true; + // inside the same class, sort by net name: + if( a->clazz == b->clazz ) + { + if( a->net < b->net ) + return true; + } return false; }