]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
*** empty log message ***
authorvsr <vsr@opencascade.com>
Thu, 12 Jul 2007 09:22:07 +0000 (09:22 +0000)
committervsr <vsr@opencascade.com>
Thu, 12 Jul 2007 09:22:07 +0000 (09:22 +0000)
src/Qtx/QtxPopupMgr.cxx
src/Qtx/QtxPopupMgr.h

index 3efd99ae17e7a3731c75ad80b32c5073a5130915..e418300fff391e84fa1050223f62316a8973c193 100644 (file)
@@ -290,6 +290,8 @@ void QtxPopupMgr::setSelection( QtxPopupSelection* sel )
 
   if ( mySelection )
     mySelection->setParent( this );
+  connect( mySelection, SIGNAL( destroyed( QObject* ) ), 
+          this,        SLOT( onSelectionDestroyed( QObject* ) ) );
 
   QtxActionMgr::triggerUpdate();
 }
@@ -625,6 +627,20 @@ QVariant QtxPopupMgr::parameter( const QString& name, const int idx ) const
   return val;
 }
 
+/*!
+  \brief Called when selection is destroyed.
+  
+  Prevents crashes when the selection object is destroyed outside the
+  popup manager.
+
+  \param o selection object being destroyed
+*/
+void QtxPopupMgr::onSelectionDestroyed( QObject* o )
+{
+  if ( o == mySelection )
+    mySelection = 0;
+}
+
 /*!
   \class QtxPopupSelection
   \brief This class is a part of the popup menu management system. 
index 2dbea128081a4462e058e9c2913dd8c0b064f931..9759f8c9559108e9615cb48d9f7237371fe0a32f 100644 (file)
@@ -86,6 +86,9 @@ private:
   bool               result( QtxEvalParser* p ) const;
   QVariant           parameter( const QString&, const int = -1 ) const;
 
+private slots:
+  void               onSelectionDestroyed( QObject* );
+
 private:
   typedef QMap<RuleType, QtxEvalExpr*> ExprMap;
   typedef QMap<QAction*, ExprMap>      RuleMap;