mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Merge
Fix crash when close project At time of closing project, if a master element(may be every linkable element) is selected and the editor dock display a lot of available slave, qet crash.
This commit is contained in:
@@ -1959,18 +1959,25 @@ void QETDiagramEditor::activateProject(ProjectView *project_view) {
|
|||||||
activateWidget(project_view);
|
activateWidget(project_view);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*** @brief QETDiagramEditor::projectWasClosed
|
||||||
Gere la fermeture d'une ProjectView
|
* Manage the close of a project.
|
||||||
@param project_view ProjectView fermee
|
* @param project_view
|
||||||
*/
|
*/
|
||||||
void QETDiagramEditor::projectWasClosed(ProjectView *project_view) {
|
void QETDiagramEditor::projectWasClosed(ProjectView *project_view)
|
||||||
|
{
|
||||||
QETProject *project = project_view -> project();
|
QETProject *project = project_view -> project();
|
||||||
if (project) {
|
if (project)
|
||||||
|
{
|
||||||
pa -> elementsPanel().projectWasClosed(project);
|
pa -> elementsPanel().projectWasClosed(project);
|
||||||
m_element_collection_widget->removeProject(project);
|
m_element_collection_widget->removeProject(project);
|
||||||
undo_group.removeStack(project -> undoStack());
|
undo_group.removeStack(project -> undoStack());
|
||||||
QETApp::unregisterProject(project);
|
QETApp::unregisterProject(project);
|
||||||
}
|
}
|
||||||
|
//When project is closed, a lot of signal are emited, notably if there is an item selected in a diagram.
|
||||||
|
//In some special case, since signal/slot connection can be direct or queued, some signal are handled after QObject is deleted, and crash qet
|
||||||
|
//notably in the function Diagram::elements when she call items() (I don't know exactly why).
|
||||||
|
//set nullptr to "m_selection_properties_editor->setDiagram()" fix this crash
|
||||||
|
m_selection_properties_editor->setDiagram(nullptr);
|
||||||
project_view -> deleteLater();
|
project_view -> deleteLater();
|
||||||
project -> deleteLater();
|
project -> deleteLater();
|
||||||
}
|
}
|
||||||
@@ -2175,7 +2182,7 @@ void QETDiagramEditor::removeDiagramFromProject() {
|
|||||||
*/
|
*/
|
||||||
void QETDiagramEditor::diagramWasAdded(DiagramView *dv)
|
void QETDiagramEditor::diagramWasAdded(DiagramView *dv)
|
||||||
{
|
{
|
||||||
connect(dv, SIGNAL(selectionChanged()), this, SLOT(selectionChanged()));
|
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateModeActions()));
|
||||||
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateModeActions()));
|
connect(dv, SIGNAL(modeChanged()), this, SLOT(slot_updateModeActions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user