Skip to content

Commit

Permalink
Call deleteLater for GraphicsViews when unloading a class (#6975)
Browse files Browse the repository at this point in the history
  • Loading branch information
adeas31 committed Nov 23, 2020
1 parent 0b558b5 commit 637d5ad
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 7 deletions.
7 changes: 0 additions & 7 deletions OMEdit/OMEditLIB/Element/Element.cpp
Expand Up @@ -2733,13 +2733,6 @@ void Element::referenceElementChanged()
*/
void Element::referenceElementDeleted()
{
#ifdef QT_NO_DEBUG
// sanity check to avoid crashes just in release mode
if (!(mpGraphicsView && mpGraphicsView->getModelWidget() && mpGraphicsView->getModelWidget()->getLibraryTreeItem())) {
return;
}
#endif // #ifdef QT_NO_DEBUG

if (mElementType == Element::Port) {
setVisible(false);
if (mpReferenceComponent && mpGraphicsView->getModelWidget()->getLibraryTreeItem()->getLibraryType() == LibraryTreeItem::OMS) {
Expand Down
8 changes: 8 additions & 0 deletions OMEdit/OMEditLIB/Modeling/LibraryTreeWidget.cpp
Expand Up @@ -2919,6 +2919,14 @@ void LibraryTreeModel::unloadClassHelper(LibraryTreeItem *pLibraryTreeItem, Libr
pMdiSubWindow->deleteLater();
}
pLibraryTreeItem->getModelWidget()->clearGraphicsViews();
if (pLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()) {
pLibraryTreeItem->getModelWidget()->getDiagramGraphicsView()->deleteLater();
pLibraryTreeItem->getModelWidget()->setDiagramGraphicsView(0);
}
if (pLibraryTreeItem->getModelWidget()->getIconGraphicsView()) {
pLibraryTreeItem->getModelWidget()->getIconGraphicsView()->deleteLater();
pLibraryTreeItem->getModelWidget()->setIconGraphicsView(0);
}
// if ModelWidget is used by DiagramWindow
if (MainWindow::instance()->getPlotWindowContainer()->getDiagramSubWindowFromMdi()) {
MainWindow::instance()->getPlotWindowContainer()->getDiagramWindow()->removeDiagram(pLibraryTreeItem->getModelWidget());
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditLIB/Modeling/ModelWidgetContainer.h
Expand Up @@ -509,7 +509,9 @@ class ModelWidget : public QWidget
QToolButton* getDiagramViewToolButton() {return mpDiagramViewToolButton;}
QToolButton* getTextViewToolButton() {return mpTextViewToolButton;}
QToolButton* getDocumentationViewToolButton() {return mpDocumentationViewToolButton;}
void setDiagramGraphicsView(GraphicsView *pDiagramGraphicsView) {mpDiagramGraphicsView = pDiagramGraphicsView;}
GraphicsView* getDiagramGraphicsView() {return mpDiagramGraphicsView;}
void setIconGraphicsView(GraphicsView *pIconGraphicsView) {mpIconGraphicsView = pIconGraphicsView;}
GraphicsView* getIconGraphicsView() {return mpIconGraphicsView;}
UndoStack* getUndoStack() {return mpUndoStack;}
BaseEditor* getEditor() {return mpEditor;}
Expand Down

0 comments on commit 637d5ad

Please sign in to comment.