From 5d4eb2cce69e1375ed0c9b0cbedc522fc64b38ca Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sun, 13 Jul 2025 20:49:43 +0100 Subject: [PATCH] Wait for chooser to finish initializing before enabling char hook (KICAD-BJ0). --- eeschema/dialogs/dialog_symbol_chooser.cpp | 2 ++ eeschema/symbol_chooser_frame.cpp | 13 +++++++++---- eeschema/symbol_chooser_frame.h | 2 +- eeschema/widgets/panel_symbol_chooser.cpp | 2 -- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/eeschema/dialogs/dialog_symbol_chooser.cpp b/eeschema/dialogs/dialog_symbol_chooser.cpp index 97e867bc54..b5907101b5 100644 --- a/eeschema/dialogs/dialog_symbol_chooser.cpp +++ b/eeschema/dialogs/dialog_symbol_chooser.cpp @@ -119,6 +119,8 @@ DIALOG_SYMBOL_CHOOSER::~DIALOG_SYMBOL_CHOOSER() cfg->m_SymChooserPanel.keep_symbol = m_keepSymbol->GetValue(); cfg->m_SymChooserPanel.place_all_units = m_useUnits->GetValue(); } + + Unbind( wxEVT_CHAR_HOOK, &PANEL_SYMBOL_CHOOSER::OnChar, m_chooserPanel ); } diff --git a/eeschema/symbol_chooser_frame.cpp b/eeschema/symbol_chooser_frame.cpp index 7d59041bb1..4d6a1270fa 100644 --- a/eeschema/symbol_chooser_frame.cpp +++ b/eeschema/symbol_chooser_frame.cpp @@ -113,12 +113,17 @@ SYMBOL_CHOOSER_FRAME::SYMBOL_CHOOSER_FRAME( KIWAY* aKiway, wxWindow* aParent, bo frameSizer->Add( bottomPanel, 0, wxEXPAND ); SetSizer( frameSizer ); - - SetTitle( GetTitle() + wxString::Format( _( " (%d items loaded)" ), - m_chooserPanel->GetItemCount() ) ); - + SetTitle( GetTitle() + wxString::Format( _( " (%d items loaded)" ), m_chooserPanel->GetItemCount() ) ); Layout(); m_chooserPanel->FinishSetup(); + + Bind( wxEVT_CHAR_HOOK, &PANEL_SYMBOL_CHOOSER::OnChar, m_chooserPanel ); +} + + +SYMBOL_CHOOSER_FRAME::~SYMBOL_CHOOSER_FRAME() +{ + Unbind( wxEVT_CHAR_HOOK, &PANEL_SYMBOL_CHOOSER::OnChar, m_chooserPanel ); } diff --git a/eeschema/symbol_chooser_frame.h b/eeschema/symbol_chooser_frame.h index b15041b12f..9839bfe560 100644 --- a/eeschema/symbol_chooser_frame.h +++ b/eeschema/symbol_chooser_frame.h @@ -44,7 +44,7 @@ public: */ SYMBOL_CHOOSER_FRAME( KIWAY* aKiway, wxWindow* aParent, bool& aCancelled ); - ~SYMBOL_CHOOSER_FRAME() {}; + ~SYMBOL_CHOOSER_FRAME(); /** * Runs the symbol viewer as a modal dialog. diff --git a/eeschema/widgets/panel_symbol_chooser.cpp b/eeschema/widgets/panel_symbol_chooser.cpp index 2329566f8f..4fc26d0f5f 100644 --- a/eeschema/widgets/panel_symbol_chooser.cpp +++ b/eeschema/widgets/panel_symbol_chooser.cpp @@ -271,7 +271,6 @@ PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER( SCH_BASE_FRAME* aFrame, wxWindow* aP Bind( wxEVT_TIMER, &PANEL_SYMBOL_CHOOSER::onOpenLibsTimer, this, m_open_libs_timer->GetId() ); Bind( EVT_LIBITEM_SELECTED, &PANEL_SYMBOL_CHOOSER::onSymbolSelected, this ); Bind( EVT_LIBITEM_CHOSEN, &PANEL_SYMBOL_CHOOSER::onSymbolChosen, this ); - Bind( wxEVT_CHAR_HOOK, &PANEL_SYMBOL_CHOOSER::OnChar, this ); aFrame->Bind( wxEVT_MENU_OPEN, &PANEL_SYMBOL_CHOOSER::onMenuOpen, this ); aFrame->Bind( wxEVT_MENU_CLOSE, &PANEL_SYMBOL_CHOOSER::onMenuClose, this ); @@ -302,7 +301,6 @@ PANEL_SYMBOL_CHOOSER::~PANEL_SYMBOL_CHOOSER() Unbind( wxEVT_TIMER, &PANEL_SYMBOL_CHOOSER::onCloseTimer, this ); Unbind( EVT_LIBITEM_SELECTED, &PANEL_SYMBOL_CHOOSER::onSymbolSelected, this ); Unbind( EVT_LIBITEM_CHOSEN, &PANEL_SYMBOL_CHOOSER::onSymbolChosen, this ); - Unbind( wxEVT_CHAR_HOOK, &PANEL_SYMBOL_CHOOSER::OnChar, this ); // Stop the timer during destruction early to avoid potential race conditions (that do happen) m_dbl_click_timer->Stop();