From 07c80b705fa40449c0ce64008690bb526ed7bb1d Mon Sep 17 00:00:00 2001 From: Leonardo Zide Date: Tue, 3 Feb 2026 09:41:28 -0800 Subject: [PATCH] Fixed duplicate pieces not grouping correctly. --- common/lc_model.cpp | 17 ++++++++++++++--- common/piece.h | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/common/lc_model.cpp b/common/lc_model.cpp index cc8dc9f4..2519bae8 100644 --- a/common/lc_model.cpp +++ b/common/lc_model.cpp @@ -1287,7 +1287,7 @@ void lcModel::DuplicateSelectedPieces() for (size_t PieceIndex = 0; PieceIndex < mPieces.size(); PieceIndex++) { - lcPiece* Piece = mPieces[PieceIndex].get(); + const lcPiece* Piece = mPieces[PieceIndex].get(); if (!Piece->IsSelected()) continue; @@ -1305,7 +1305,7 @@ void lcModel::DuplicateSelectedPieces() lcGroup* Group = Piece->GetGroup(); if (Group) - Piece->SetGroup(GetNewGroup(Group)); + NewPiece->SetGroup(GetNewGroup(Group)); } EndObjectEditAction(std::move(PieceIndices)); @@ -1853,6 +1853,8 @@ void lcModel::RecordGroupPiecesAction(lcModelActionGroupPiecesMode Mode, const Q { std::unique_ptr ModelActionGroupPieces = std::make_unique(Mode, GroupName); + RunGroupPiecesAction(ModelActionGroupPieces.get(), true); + mActionSequence.emplace_back(std::move(ModelActionGroupPieces)); } @@ -1984,6 +1986,15 @@ void lcModel::EndActionSequence(const QString& Description) gMainWindow->UpdateModified(IsModified()); gMainWindow->UpdateUndoRedo(!mUndoHistory.empty() ? mUndoHistory.front()->Description : nullptr, !mRedoHistory.empty() ? mRedoHistory.front()->Description : nullptr); + for (const std::unique_ptr& ModelAction : mUndoHistory.front()->ModelActions) + { + if (const lcModelActionSelection* ModelActionSelection = dynamic_cast(ModelAction.get())) + { + gMainWindow->UpdateSelectedObjects(true); + break; + } + } + UpdateAllViews(); } @@ -4362,7 +4373,7 @@ void lcModel::FocusOrDeselectObject(lcObject* Object, uint32_t Section, lcSelect if (!Object->IsFocused(Section)) RecordSetFocusAction(Object, Section, SelectionMode); else - RecordSetFocusAction(nullptr, ~0, SelectionMode); + RecordSetFocusAction(nullptr, ~0U, SelectionMode); } else { diff --git a/common/piece.h b/common/piece.h index 6241f029..6f7cec52 100644 --- a/common/piece.h +++ b/common/piece.h @@ -152,7 +152,7 @@ public: mGroup = Group; } - lcGroup* GetGroup() + lcGroup* GetGroup() const { return mGroup; }