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
(cherry picked from commit 5a9ed66cfd
)
This commit is contained in:
parent
c6e4f18d99
commit
4a274709e7
|
@ -1609,6 +1609,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;
|
||||||
}
|
}
|
||||||
|
@ -1618,6 +1619,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 );
|
||||||
|
|
|
@ -655,7 +655,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 );
|
||||||
|
|
||||||
|
|
|
@ -266,8 +266,11 @@ void DIALOG_TEXT_PROPERTIES::onScintillaCharAdded( wxStyledTextEvent &aEvent )
|
||||||
|
|
||||||
board->GetContextualTextVars( &autocompleteTokens );
|
board->GetContextualTextVars( &autocompleteTokens );
|
||||||
|
|
||||||
if( FOOTPRINT* footprint = m_item->GetParentFootprint() )
|
if( m_fpText )
|
||||||
footprint->GetContextualTextVars( &autocompleteTokens );
|
{
|
||||||
|
if( FOOTPRINT* footprint = static_cast<FOOTPRINT*>( m_fpText->GetParentFootprint() ) )
|
||||||
|
footprint->GetContextualTextVars( &autocompleteTokens );
|
||||||
|
}
|
||||||
|
|
||||||
for( std::pair<wxString, wxString> entry : board->GetProject()->GetTextVars() )
|
for( std::pair<wxString, wxString> entry : board->GetProject()->GetTextVars() )
|
||||||
autocompleteTokens.push_back( entry.first );
|
autocompleteTokens.push_back( entry.first );
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <pcb_edit_frame.h>
|
#include <pcb_edit_frame.h>
|
||||||
#include <pcb_layer_box_selector.h>
|
#include <pcb_layer_box_selector.h>
|
||||||
#include <scintilla_tricks.h>
|
#include <scintilla_tricks.h>
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
|
DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
|
||||||
BOARD_ITEM* aItem ) :
|
BOARD_ITEM* aItem ) :
|
||||||
|
@ -158,7 +159,7 @@ DIALOG_TEXTBOX_PROPERTIES::~DIALOG_TEXTBOX_PROPERTIES()
|
||||||
|
|
||||||
int PCB_BASE_EDIT_FRAME::ShowTextBoxPropertiesDialog( BOARD_ITEM* aText )
|
int PCB_BASE_EDIT_FRAME::ShowTextBoxPropertiesDialog( BOARD_ITEM* aText )
|
||||||
{
|
{
|
||||||
DIALOG_TEXTBOX_PROPERTIES dlg( this, aTextBox );
|
DIALOG_TEXTBOX_PROPERTIES dlg( this, aText );
|
||||||
|
|
||||||
// QuasiModal required for Scintilla auto-complete
|
// QuasiModal required for Scintilla auto-complete
|
||||||
return dlg.ShowQuasiModal();
|
return dlg.ShowQuasiModal();
|
||||||
|
@ -189,7 +190,7 @@ void DIALOG_TEXTBOX_PROPERTIES::onScintillaCharAdded( wxStyledTextEvent &aEvent
|
||||||
partial = te->GetRange( start, text_pos );
|
partial = te->GetRange( start, text_pos );
|
||||||
|
|
||||||
wxString ref = te->GetRange( refStart, start-1 );
|
wxString ref = te->GetRange( refStart, start-1 );
|
||||||
BOARD* board = m_textBox->GetBoard();
|
BOARD* board = m_frame->GetBoard();
|
||||||
|
|
||||||
for( FOOTPRINT* candidate : board->Footprints() )
|
for( FOOTPRINT* candidate : board->Footprints() )
|
||||||
{
|
{
|
||||||
|
@ -205,12 +206,15 @@ void DIALOG_TEXTBOX_PROPERTIES::onScintillaCharAdded( wxStyledTextEvent &aEvent
|
||||||
{
|
{
|
||||||
partial = te->GetTextRange( start, text_pos );
|
partial = te->GetTextRange( start, text_pos );
|
||||||
|
|
||||||
BOARD* board = m_textBox->GetBoard();
|
BOARD* board = m_frame->GetBoard();
|
||||||
|
|
||||||
board->GetContextualTextVars( &autocompleteTokens );
|
board->GetContextualTextVars( &autocompleteTokens );
|
||||||
|
|
||||||
if( FOOTPRINT* footprint = m_textBox->GetParentFootprint() )
|
if( m_fpTextBox )
|
||||||
footprint->GetContextualTextVars( &autocompleteTokens );
|
{
|
||||||
|
if( FOOTPRINT* footprint = m_fpTextBox->GetParentFootprint() )
|
||||||
|
footprint->GetContextualTextVars( &autocompleteTokens );
|
||||||
|
}
|
||||||
|
|
||||||
for( std::pair<wxString, wxString> entry : board->GetProject()->GetTextVars() )
|
for( std::pair<wxString, wxString> entry : board->GetProject()->GetTextVars() )
|
||||||
autocompleteTokens.push_back( entry.first );
|
autocompleteTokens.push_back( entry.first );
|
||||||
|
|
Loading…
Reference in New Issue