]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix for bug 10505: Explode with 'Select Sub Shapes' is impossible
authorjfa <jfa@opencascade.com>
Fri, 25 Nov 2005 11:41:14 +0000 (11:41 +0000)
committerjfa <jfa@opencascade.com>
Fri, 25 Nov 2005 11:41:14 +0000 (11:41 +0000)
src/LightApp/LightApp_DataOwner.cxx
src/LightApp/LightApp_DataSubOwner.cxx
src/SUIT/SUIT_DataOwner.cxx
src/SUIT/SUIT_DataOwner.h

index 647b5d328ef4774470e4e8cd3870eaf39f5adf8e..6d01eb5fef8b85098756172a58d050748d136130 100644 (file)
@@ -2,8 +2,12 @@
 
 #include "LightApp_DataObject.h"
 
-#ifdef WNT
+#ifndef WNT
+#include <typeinfo>
+#define _typeinfo std::type_info
+#else
 #include <typeinfo.h>
+#define _typeinfo type_info
 #endif
 
 #include <iostream>
@@ -34,6 +38,12 @@ bool
 LightApp_DataOwner
 ::isEqual( const SUIT_DataOwner& obj ) const
 {
+  const _typeinfo& ti1 = typeid( obj );
+  const _typeinfo& ti2 = typeid( *(this) );
+
+  if (ti1 != ti2)
+    return false;
+
   const LightApp_DataOwner* other = dynamic_cast<const LightApp_DataOwner*>( &obj );
 
   return other && entry() == other->entry();
index 50c5ca3a301a219b12617b12c5da823f6ce3a4df..95de81a3f1b473bde50d1a9da67a07a384e158e8 100644 (file)
@@ -21,9 +21,11 @@ LightApp_DataSubOwner::~LightApp_DataSubOwner()
 /*!Checks: Is current data sub owner equal \a obj.*/
 bool LightApp_DataSubOwner::isEqual( const SUIT_DataOwner& obj ) const
 {  
-  const LightApp_DataSubOwner* other = dynamic_cast<const LightApp_DataSubOwner*>( &obj );
-
-  return other && entry() == other->entry() && index() == other->index();
+  if (LightApp_DataOwner::isEqual(obj)) {
+    const LightApp_DataSubOwner* other = dynamic_cast<const LightApp_DataSubOwner*>( &obj );
+    return other && index() == other->index();
+  }
+  return false;
 }
 
 /*!Gets index.*/
index 603da20aa4ebca26213286d7388ada230fbe5179..ebac9dc7f4c9caa1b56545228d933a0f01748c76 100755 (executable)
@@ -41,9 +41,18 @@ bool operator==( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
 //====================================================================
 //! Constructor (default)
 //====================================================================
-SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqal )
-: QValueList<SUIT_DataOwnerPtr>(),
-mySkipEqual( skipAllEqal )
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList()
+  : QValueList<SUIT_DataOwnerPtr>(),
+    mySkipEqual( true )
+{
+}
+
+//====================================================================
+//! Constructor (default)
+//====================================================================
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const bool skipAllEqual )
+  : QValueList<SUIT_DataOwnerPtr>(),
+    mySkipEqual( skipAllEqual )
 {
 }
 
@@ -51,18 +60,19 @@ mySkipEqual( skipAllEqal )
 //! Constructor (copy)
 //====================================================================
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l )
-: QValueList<SUIT_DataOwnerPtr>( l )
+  : QValueList<SUIT_DataOwnerPtr>( l ),
+    mySkipEqual( true )
 {
 }
 
 //====================================================================
 //! Constructor (copy)
 //====================================================================
-SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqal )
-: QValueList<SUIT_DataOwnerPtr>(),
-mySkipEqual( skipAllEqal )
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual )
+  : QValueList<SUIT_DataOwnerPtr>(),
+    mySkipEqual( skipAllEqual )
 {
-  if ( skipAllEqal == l.mySkipEqual )
+  if ( skipAllEqual == l.mySkipEqual )
     operator =( l );
   else
   {
@@ -78,7 +88,8 @@ mySkipEqual( skipAllEqal )
 //! Constructor (from stl)
 //====================================================================
 SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l )
-: QValueList<SUIT_DataOwnerPtr>( l )
+  : QValueList<SUIT_DataOwnerPtr>( l ),
+    mySkipEqual( true )
 {
 }
 #endif
@@ -87,9 +98,9 @@ SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>
 //====================================================================
 //! Constructor (from stl)
 //====================================================================
-SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqal )
-: QValueList<SUIT_DataOwnerPtr>(),
-mySkipEqual( skipAllEqal )
+SUIT_DataOwnerPtrList::SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqual )
+  : QValueList<SUIT_DataOwnerPtr>(),
+    mySkipEqual( skipAllEqual )
 {
   std::list<SUIT_DataOwnerPtr>::const_iterator beginIt = l.begin();
   std::list<SUIT_DataOwnerPtr>::const_iterator endIt = l.begin();
index 9c1b758b6987a6dce6625aa0acd6bd6acc20ab0e..ffff7fe9f91150b7de8748ac094768fde3cc4f40 100755 (executable)
@@ -36,12 +36,13 @@ bool operator==( const SUIT_DataOwnerPtr&, const SUIT_DataOwnerPtr& );
 class SUIT_EXPORT SUIT_DataOwnerPtrList : public QValueList<SUIT_DataOwnerPtr> 
 {
 public:
-  SUIT_DataOwnerPtrList( const bool skipAllEqal = true );//!< constructor
-  SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l );//!< copy constructor
-  SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqal );//!< copy constructor
+  SUIT_DataOwnerPtrList();                         //!< constructor
+  SUIT_DataOwnerPtrList( const bool skipAllEqual );//!< constructor
+  SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l );                         //!< copy constructor
+  SUIT_DataOwnerPtrList( const SUIT_DataOwnerPtrList& l, const bool skipAllEqual );//!< copy constructor
 #ifndef QT_NO_STL
-  SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l );//!< copy constructor for STL list
-  SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqal );//!< copy constructor for STL list
+  SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l );                         //!< copy constructor for STL list
+  SUIT_DataOwnerPtrList( const std::list<SUIT_DataOwnerPtr>& l, const bool skipAllEqual );//!< copy constructor for STL list
 #endif
 
   iterator append      ( const SUIT_DataOwnerPtr& x );//!< append function