Pieces should disappear from the list when deleted.
--HG-- branch : feature
This commit is contained in:
parent
d2ff75dedc
commit
ccc8da800f
|
@ -544,7 +544,7 @@ void VAbstractPattern::setCursor(const quint32 &value)
|
|||
* @param id tool id.
|
||||
* @return tool.
|
||||
*/
|
||||
VDataTool *VAbstractPattern::getTool(const quint32 &id)
|
||||
VDataTool *VAbstractPattern::getTool(quint32 id)
|
||||
{
|
||||
ToolExists(id);
|
||||
return tools.value(id);
|
||||
|
@ -556,13 +556,19 @@ VDataTool *VAbstractPattern::getTool(const quint32 &id)
|
|||
* @param id tool id.
|
||||
* @param tool tool.
|
||||
*/
|
||||
void VAbstractPattern::AddTool(const quint32 &id, VDataTool *tool)
|
||||
void VAbstractPattern::AddTool(quint32 id, VDataTool *tool)
|
||||
{
|
||||
Q_ASSERT_X(id != 0, Q_FUNC_INFO, "id == 0");
|
||||
SCASSERT(tool != nullptr)
|
||||
tools.insert(id, tool);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VAbstractPattern::RemoveTool(quint32 id)
|
||||
{
|
||||
tools.remove(id);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
VPiecePath VAbstractPattern::ParsePieceNodes(const QDomElement &domElement)
|
||||
{
|
||||
|
|
|
@ -92,8 +92,9 @@ public:
|
|||
|
||||
virtual void UpdateToolData(const quint32 &id, VContainer *data)=0;
|
||||
|
||||
static VDataTool* getTool(const quint32 &id);
|
||||
static void AddTool(const quint32 &id, VDataTool *tool);
|
||||
static VDataTool* getTool(quint32 id);
|
||||
static void AddTool(quint32 id, VDataTool *tool);
|
||||
static void RemoveTool(quint32 id);
|
||||
|
||||
static VPiecePath ParsePieceNodes(const QDomElement &domElement);
|
||||
static QVector<CustomSARecord> ParsePieceCSARecords(const QDomElement &domElement);
|
||||
|
|
|
@ -519,6 +519,12 @@ void VContainer::RemoveVariable(const QString &name)
|
|||
d->variables.remove(name);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VContainer::RemovePiece(quint32 id)
|
||||
{
|
||||
d->pieces->remove(id);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* @brief AddObject add object to container
|
||||
|
|
|
@ -168,6 +168,7 @@ public:
|
|||
template <typename T>
|
||||
void AddVariable(const QString& name, T *var);
|
||||
void RemoveVariable(const QString& name);
|
||||
void RemovePiece(quint32 id);
|
||||
|
||||
void UpdateGObject(quint32 id, VGObject* obj);
|
||||
void UpdateDetail(quint32 id, const VDetail &detail);
|
||||
|
|
|
@ -1140,6 +1140,23 @@ void VToolSeamAllowance::DeleteTool(bool ask)
|
|||
/* If UnionDetails tool delete detail no need emit FullParsing.*/
|
||||
connect(delDet, &DeletePiece::NeedFullParsing, doc, &VAbstractPattern::NeedFullParsing);
|
||||
}
|
||||
|
||||
// If UnionDetails tool delete the detail this object will be deleted only after full parse.
|
||||
// Deleting inside UnionDetails cause crash.
|
||||
// Because this object should be inactive from no one we disconnect all signals that may cause a crash
|
||||
// KEEP THIS LIST ACTUALL!!!
|
||||
disconnect(doc, 0, this, 0);
|
||||
if (QGraphicsScene *toolScene = scene())
|
||||
{
|
||||
disconnect(toolScene, 0, this, 0);
|
||||
}
|
||||
disconnect(m_dataLabel, 0, this, 0);
|
||||
disconnect(m_patternInfo, 0, this, 0);
|
||||
disconnect(m_grainLine, 0, this, 0);
|
||||
disconnect(m_sceneDetails, 0, this, 0);
|
||||
|
||||
hide();// User shouldn't see this object
|
||||
|
||||
qApp->getUndoStack()->push(delDet);
|
||||
|
||||
// Throw exception, this will help prevent case when we forget to immediately quit function.
|
||||
|
|
|
@ -1194,6 +1194,9 @@ void CreateUnitedDetail(quint32 id, const VToolUnionDetailsInitData &initData, q
|
|||
SCASSERT(toolDet != nullptr);
|
||||
bool ask = false;
|
||||
toolDet->Remove(ask);
|
||||
// We do not call full parse, so will need more to do more cleaning than usually
|
||||
initData.doc->RemoveTool(id);
|
||||
initData.data->RemovePiece(id);
|
||||
};
|
||||
|
||||
if (not initData.retainPieces)
|
||||
|
|
Loading…
Reference in New Issue
Block a user