mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-13 17:53:11 +02:00
More protection for stale wxDataView items.
This commit is contained in:
parent
f589ed906f
commit
f0972a8667
@ -402,7 +402,7 @@ unsigned int RC_TREE_MODEL::GetChildren( wxDataViewItem const& aItem,
|
||||
void RC_TREE_MODEL::GetValue( wxVariant& aVariant, wxDataViewItem const& aItem,
|
||||
unsigned int aCol ) const
|
||||
{
|
||||
if( !aItem.IsOk() )
|
||||
if( !aItem.IsOk() || m_view->IsFrozen() )
|
||||
return;
|
||||
|
||||
const RC_TREE_NODE* node = ToNode( aItem );
|
||||
@ -477,7 +477,7 @@ bool RC_TREE_MODEL::GetAttr( wxDataViewItem const& aItem,
|
||||
unsigned int aCol,
|
||||
wxDataViewItemAttr& aAttr ) const
|
||||
{
|
||||
if( !aItem.IsOk() )
|
||||
if( !aItem.IsOk() || m_view->IsFrozen() )
|
||||
return false;
|
||||
|
||||
const RC_TREE_NODE* node = ToNode( aItem );
|
||||
@ -738,6 +738,8 @@ void RC_TREE_MODEL::NextMarker()
|
||||
|
||||
void RC_TREE_MODEL::SelectMarker( const MARKER_BASE* aMarker )
|
||||
{
|
||||
wxCHECK( !m_view->IsFrozen(), /* void */ );
|
||||
|
||||
for( RC_TREE_NODE* candidate : m_tree )
|
||||
{
|
||||
if( candidate->m_RcItem->GetParent() == aMarker )
|
||||
@ -751,6 +753,8 @@ void RC_TREE_MODEL::SelectMarker( const MARKER_BASE* aMarker )
|
||||
|
||||
void RC_TREE_MODEL::CenterMarker( const MARKER_BASE* aMarker )
|
||||
{
|
||||
wxCHECK( !m_view->IsFrozen(), /* void */ );
|
||||
|
||||
for( RC_TREE_NODE* candidate : m_tree )
|
||||
{
|
||||
if( candidate->m_RcItem->GetParent() == aMarker )
|
||||
|
@ -934,6 +934,9 @@ void DIALOG_ERC::SelectMarker( const SCH_MARKER* aMarker )
|
||||
|
||||
void DIALOG_ERC::centerMarkerIdleHandler( wxIdleEvent& aEvent )
|
||||
{
|
||||
if( m_markerTreeModel->GetView()->IsFrozen() )
|
||||
return;
|
||||
|
||||
m_markerTreeModel->CenterMarker( m_centerMarkerOnIdle );
|
||||
m_centerMarkerOnIdle = nullptr;
|
||||
Unbind( wxEVT_IDLE, &DIALOG_ERC::centerMarkerIdleHandler, this );
|
||||
|
@ -240,6 +240,8 @@ public:
|
||||
return static_cast<RC_TREE_NODE*>( aItem.GetID() );
|
||||
}
|
||||
|
||||
const wxDataViewCtrl* GetView() const { return m_view; }
|
||||
|
||||
static KIID ToUUID( wxDataViewItem aItem );
|
||||
|
||||
RC_TREE_MODEL( EDA_DRAW_FRAME* aParentFrame, wxDataViewCtrl* aView );
|
||||
|
@ -216,6 +216,9 @@ void DIALOG_FOOTPRINT_CHECKER::SelectMarker( const PCB_MARKER* aMarker )
|
||||
|
||||
void DIALOG_FOOTPRINT_CHECKER::centerMarkerIdleHandler( wxIdleEvent& aEvent )
|
||||
{
|
||||
if( m_markersTreeModel->GetView()->IsFrozen() )
|
||||
return;
|
||||
|
||||
m_markersTreeModel->CenterMarker( m_centerMarkerOnIdle );
|
||||
m_centerMarkerOnIdle = nullptr;
|
||||
Unbind( wxEVT_IDLE, &DIALOG_FOOTPRINT_CHECKER::centerMarkerIdleHandler, this );
|
||||
|
Loading…
x
Reference in New Issue
Block a user