From 6f3aa92ae07ff33c7ec3e0959d4e81604ca8e1b2 Mon Sep 17 00:00:00 2001 From: Lenny Khazan Date: Tue, 6 Jan 2026 02:56:57 +0000 Subject: [PATCH] Preserve group membership when updating footprints via IPC API --- pcbnew/api/api_handler_pcb.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pcbnew/api/api_handler_pcb.cpp b/pcbnew/api/api_handler_pcb.cpp index c1bd46eba4..c69fb1f7f8 100644 --- a/pcbnew/api/api_handler_pcb.cpp +++ b/pcbnew/api/api_handler_pcb.cpp @@ -511,9 +511,18 @@ HANDLER_RESULT API_HANDLER_PCB::handleCreateUpdateItemsIntern // can't use CopyFrom on them either. if( boardItem->Type() == PCB_FOOTPRINT_T || boardItem->Type() == PCB_GROUP_T ) { + // Save group membership before removal, since Remove() severs the relationship + PCB_GROUP* parentGroup = dynamic_cast( boardItem->GetParentGroup() ); + commit->Remove( boardItem ); item->Serialize( newItem ); - commit->Add( item.release() ); + + BOARD_ITEM* newBoardItem = item.release(); + commit->Add( newBoardItem ); + + // Restore group membership for the newly added item + if( parentGroup ) + parentGroup->AddItem( newBoardItem ); } else {