Go back to using QuasiModal for TextBox Properties.

Also removes auto-closing of blocking dialogs when inserting
symbols from the Symbol Editor or Chooser, preventing the bug
that QuasiModel was removed for earlier.

Also fixes a non-initialized parent pointer when the TextBox
Properties dialog was called from DrawShape().

Fixes https://gitlab.com/kicad/code/kicad/-/issues/14777
This commit is contained in:
Jeff Young 2023-05-24 10:28:46 +01:00
parent ff072feeb4
commit 5a9ed66cfd
2 changed files with 9 additions and 4 deletions

View File

@ -1608,6 +1608,7 @@ int SCH_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
textbox->SetHorizJustify( m_lastTextJust ); textbox->SetHorizJustify( m_lastTextJust );
textbox->SetStroke( m_lastTextboxStroke ); textbox->SetStroke( m_lastTextboxStroke );
textbox->SetFillColor( m_lastTextboxFillColor ); textbox->SetFillColor( m_lastTextboxFillColor );
textbox->SetParent( schematic );
item = textbox; item = textbox;
} }
@ -1617,6 +1618,7 @@ int SCH_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
item->SetStroke( m_lastStroke ); item->SetStroke( m_lastStroke );
item->SetFillColor( m_lastFillColor ); item->SetFillColor( m_lastFillColor );
item->SetParent( schematic );
} }
item->SetFlags( IS_NEW ); item->SetFlags( IS_NEW );
@ -1646,9 +1648,8 @@ int SCH_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
getViewControls()->SetAutoPan( false ); getViewControls()->SetAutoPan( false );
getViewControls()->CaptureCursor( false ); getViewControls()->CaptureCursor( false );
// This is modal not quasi to protect against place symbol calls starting // Must be quasi modal for syntax help
// TwoClickPlace wait routines in the middle if( dlg.ShowQuasiModal() != wxID_OK )
if( dlg.ShowModal() != wxID_OK )
{ {
cleanup(); cleanup();
continue; continue;

View File

@ -664,7 +664,11 @@ int SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic( const TOOL_EVENT& aEvent )
wxWindow* blocking_dialog = schframe->Kiway().GetBlockingDialog(); wxWindow* blocking_dialog = schframe->Kiway().GetBlockingDialog();
if( blocking_dialog ) if( blocking_dialog )
blocking_dialog->Close( true ); {
blocking_dialog->Raise();
wxBell();
return 0;
}
wxCHECK( libSymbol->GetLibId().IsValid(), 0 ); wxCHECK( libSymbol->GetLibId().IsValid(), 0 );