From 18b56539a6293982bffc75a40d9c58a0dc2bd56b Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Thu, 11 Sep 2025 15:46:45 +0100 Subject: [PATCH] Keep Board Setup in front when called from DRC dialog. --- pcbnew/dialogs/dialog_board_setup.cpp | 4 ++-- pcbnew/dialogs/dialog_board_setup.h | 2 +- pcbnew/dialogs/dialog_drc.cpp | 6 +++--- pcbnew/pcb_edit_frame.cpp | 5 +++-- pcbnew/pcb_edit_frame.h | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pcbnew/dialogs/dialog_board_setup.cpp b/pcbnew/dialogs/dialog_board_setup.cpp index a9c3c9ec5f..47563392ef 100644 --- a/pcbnew/dialogs/dialog_board_setup.cpp +++ b/pcbnew/dialogs/dialog_board_setup.cpp @@ -55,8 +55,8 @@ #define RESOLVE_PAGE( T, pageIndex ) static_cast( m_treebook->ResolvePage( pageIndex ) ) -DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ) : - PAGED_DIALOG( aFrame, _( "Board Setup" ), false, false, +DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame, wxWindow* aParent ) : + PAGED_DIALOG( aParent ? aParent : aFrame, _( "Board Setup" ), false, false, _( "Import Settings from Another Board..." ), wxSize( 980, 600 ) ), m_frame( aFrame ), m_layers( nullptr ), diff --git a/pcbnew/dialogs/dialog_board_setup.h b/pcbnew/dialogs/dialog_board_setup.h index 0ab9dbebbe..52c8b1fc00 100644 --- a/pcbnew/dialogs/dialog_board_setup.h +++ b/pcbnew/dialogs/dialog_board_setup.h @@ -42,7 +42,7 @@ class PANEL_TEXT_VARIABLES; class DIALOG_BOARD_SETUP : public PAGED_DIALOG { public: - DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame ); + DIALOG_BOARD_SETUP( PCB_EDIT_FRAME* aFrame, wxWindow* aWindow = nullptr ); ~DIALOG_BOARD_SETUP(); protected: diff --git a/pcbnew/dialogs/dialog_drc.cpp b/pcbnew/dialogs/dialog_drc.cpp index 3f6e708c7e..5eda931b93 100644 --- a/pcbnew/dialogs/dialog_drc.cpp +++ b/pcbnew/dialogs/dialog_drc.cpp @@ -303,7 +303,7 @@ void DIALOG_DRC::OnMenu( wxCommandEvent& event ) void DIALOG_DRC::OnErrorLinkClicked( wxHtmlLinkEvent& event ) { - m_frame->ShowBoardSetupDialog( _( "Custom Rules" ) ); + m_frame->ShowBoardSetupDialog( _( "Custom Rules" ), this ); } @@ -993,7 +993,7 @@ void DIALOG_DRC::OnDRCItemRClick( wxDataViewEvent& aEvent ) } case ID_EDIT_SEVERITIES: - m_frame->ShowBoardSetupDialog( _( "Violation Severity" ) ); + m_frame->ShowBoardSetupDialog( _( "Violation Severity" ), this ); break; } @@ -1035,7 +1035,7 @@ void DIALOG_DRC::OnIgnoredItemRClick( wxListEvent& event ) void DIALOG_DRC::OnEditViolationSeverities( wxHyperlinkEvent& aEvent ) { - m_frame->ShowBoardSetupDialog( _( "Violation Severity" ) ); + m_frame->ShowBoardSetupDialog( _( "Violation Severity" ), this ); } diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index 68a7299bba..610d6ca914 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -109,6 +109,7 @@ #include #include #include +#include #include #include #include @@ -1466,7 +1467,7 @@ void PCB_EDIT_FRAME::ActivateGalCanvas() } -void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage ) +void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage, wxWindow* aParent ) { static std::mutex dialogMutex; // Local static mutex @@ -1486,7 +1487,7 @@ void PCB_EDIT_FRAME::ShowBoardSetupDialog( const wxString& aInitialPage ) // Make sure everything's up-to-date GetBoard()->BuildListOfNets(); - DIALOG_BOARD_SETUP dlg( this ); + DIALOG_BOARD_SETUP dlg( this, aParent ); if( !aInitialPage.IsEmpty() ) dlg.SetInitialPage( aInitialPage, wxEmptyString ); diff --git a/pcbnew/pcb_edit_frame.h b/pcbnew/pcb_edit_frame.h index 697f941a68..7a9d6f64e6 100644 --- a/pcbnew/pcb_edit_frame.h +++ b/pcbnew/pcb_edit_frame.h @@ -301,7 +301,7 @@ public: ///< @copydoc EDA_DRAW_FRAME::UseGalCanvas() void ActivateGalCanvas() override; - void ShowBoardSetupDialog( const wxString& aInitialPage = wxEmptyString ); + void ShowBoardSetupDialog( const wxString& aInitialPage = wxEmptyString, wxWindow* aParent = nullptr ); void PrepareLayerIndicator( bool aForceRebuild = false );