Make sure deleted text items are removed from view and selection.
Fixes https://gitlab.com/kicad/code/kicad/issues/6407
This commit is contained in:
parent
bfc4afc506
commit
54427fd594
|
@ -114,12 +114,13 @@ void VIEW_GROUP::ViewDraw( int aLayer, VIEW* aView ) const
|
||||||
KIGFX::GAL* gal = aView->GetGAL();
|
KIGFX::GAL* gal = aView->GetGAL();
|
||||||
PAINTER* painter = aView->GetPainter();
|
PAINTER* painter = aView->GetPainter();
|
||||||
bool isSelection = m_layer == LAYER_SELECT_OVERLAY;
|
bool isSelection = m_layer == LAYER_SELECT_OVERLAY;
|
||||||
const auto drawList = updateDrawList();
|
|
||||||
|
const std::vector<VIEW_ITEM*> drawList = updateDrawList();
|
||||||
|
|
||||||
std::unordered_map<int, std::vector<VIEW_ITEM*>> layer_item_map;
|
std::unordered_map<int, std::vector<VIEW_ITEM*>> layer_item_map;
|
||||||
|
|
||||||
// Build a list of layers used by the items in the group
|
// Build a list of layers used by the items in the group
|
||||||
for( auto item : drawList )
|
for( VIEW_ITEM* item : drawList )
|
||||||
{
|
{
|
||||||
int item_layers[VIEW::VIEW_MAX_LAYERS], item_layers_count;
|
int item_layers[VIEW::VIEW_MAX_LAYERS], item_layers_count;
|
||||||
item->ViewGetLayers( item_layers, item_layers_count );
|
item->ViewGetLayers( item_layers, item_layers_count );
|
||||||
|
|
|
@ -112,7 +112,7 @@ void BOARD_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
|
||||||
|
|
||||||
void BOARD_ITEM::DeleteStructure()
|
void BOARD_ITEM::DeleteStructure()
|
||||||
{
|
{
|
||||||
auto parent = GetParent();
|
BOARD_ITEM_CONTAINER* parent = GetParent();
|
||||||
|
|
||||||
if( parent )
|
if( parent )
|
||||||
parent->Remove( this );
|
parent->Remove( this );
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
#include "3d_cache/dialogs/panel_prev_3d.h"
|
#include "3d_cache/dialogs/panel_prev_3d.h"
|
||||||
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
||||||
#include <settings/settings_manager.h>
|
#include <settings/settings_manager.h>
|
||||||
|
#include <tool/tool_manager.h>
|
||||||
|
#include <tools/selection_tool.h>
|
||||||
|
|
||||||
#include <fp_lib_table.h>
|
#include <fp_lib_table.h>
|
||||||
|
|
||||||
|
@ -632,9 +634,15 @@ bool DIALOG_FOOTPRINT_FP_EDITOR::TransferDataFromWindow()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove items from m_footprint graphic list:
|
// Remove text items:
|
||||||
|
SELECTION_TOOL* selTool = m_frame->GetToolManager()->GetTool<SELECTION_TOOL>();
|
||||||
|
|
||||||
for( FP_TEXT* item: items_to_remove )
|
for( FP_TEXT* item: items_to_remove )
|
||||||
|
{
|
||||||
|
selTool->RemoveItemFromSel( item );
|
||||||
|
view->Remove( item );
|
||||||
item->DeleteStructure();
|
item->DeleteStructure();
|
||||||
|
}
|
||||||
|
|
||||||
// if there are still grid table entries, create new texts for them
|
// if there are still grid table entries, create new texts for them
|
||||||
while( i < m_texts->size() )
|
while( i < m_texts->size() )
|
||||||
|
|
Loading…
Reference in New Issue