]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
CCAR: restore calls to begininsertrow, etc.
authorcaremoli <caremoli>
Thu, 1 Jul 2010 14:29:02 +0000 (14:29 +0000)
committercaremoli <caremoli>
Thu, 1 Jul 2010 14:29:02 +0000 (14:29 +0000)
src/SUIT/SUIT_TreeModel.cxx
src/Session/SALOME_Session_Server.cxx

index 69b9cfa951b35caa4f3f30e483ba9d79bc61c4f7..8291e6afa67af2081db215966a47cd60c038b1af 100755 (executable)
@@ -909,6 +909,7 @@ QModelIndex SUIT_TreeModel::index( int row, int column,
 */
 QModelIndex SUIT_TreeModel::parent( const QModelIndex& index ) const
 {
+  //std::cerr << "SUIT_TreeModel::parent " << index.row() << std::endl;
   if ( !index.isValid() )
     return QModelIndex();
 
@@ -1120,11 +1121,12 @@ void SUIT_TreeModel::updateTree( SUIT_DataObject* obj )
   else if ( obj->root() != root() )
     return;
 
-  emit layoutAboutToBeChanged();
 
   synchronize<ObjPtr,ItemPtr,SUIT_TreeModel::TreeSync>( obj, 
                                                         treeItem( obj ), 
                                                         SUIT_TreeModel::TreeSync( this ) );
+
+  emit layoutAboutToBeChanged();
   emit layoutChanged();
   emit modelUpdated();
 }
@@ -1228,11 +1230,11 @@ SUIT_TreeModel::TreeItem* SUIT_TreeModel::createItem( SUIT_DataObject* obj,
   int row = afterObj ? afterObj->position() + 1 : 0;
   //std::cerr << " SUIT_TreeModel::createItem " << row << ":" << afterObj << std::endl;
 
-  //beginInsertRows( parentIdx, row, row );
+  beginInsertRows( parentIdx, row, row );
 
   myItems[ obj ] = new TreeItem( obj, parent, after );
 
-  //endInsertRows();
+  endInsertRows();
 
   //obj->setModified(false);
 
@@ -1311,7 +1313,7 @@ void SUIT_TreeModel::removeItem( SUIT_TreeModel::TreeItem* item )
   QModelIndex parentIdx = index( parentObj, 0 );
   int row = item->position();
   
-  //beginRemoveRows( parentIdx, row, row );
+  beginRemoveRows( parentIdx, row, row );
   myItems.remove( obj );
 
   if ( obj == root() )
@@ -1321,7 +1323,7 @@ void SUIT_TreeModel::removeItem( SUIT_TreeModel::TreeItem* item )
 
   delete item;
 
-  //endRemoveRows();
+  endRemoveRows();
 }
 
 void SUIT_TreeModel::onUpdated( SUIT_DataObject* object)
index 40e5a7ad03799acc0840e6a737543c88b27f1db9..7e3be00c33c03653cb378f47c2fa0fbdf542748c 100755 (executable)
 #include <SUIT_Desktop.h>
 #include <SUIT_ResourceMgr.h>
 #include <SUIT_ExceptionHandler.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <stdexcept>
+#include <signal.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+
+void AttachDebugger();
+void Handler(int);
+
+typedef void (*sighandler_t)(int);
+sighandler_t setsig(int sig, sighandler_t handler)
+{
+  struct sigaction context, ocontext;
+  context.sa_handler = handler;
+  sigemptyset(&context.sa_mask);
+  context.sa_flags = 0;
+  if (sigaction(sig, &context, &ocontext) == -1)
+    return SIG_ERR;
+  return ocontext.sa_handler;
+}
+
+void AttachDebugger()
+{
+  if(getenv ("DEBUGGER"))
+    {
+      std::stringstream exec;
+      exec << "$DEBUGGER SALOME_Session_Server " << getpid() << "&";
+      std::cerr << exec.str() << std::endl;
+      system(exec.str().c_str());
+      while(1);
+    }
+}
+
+void Handler(int theSigId)
+{
+  std::cerr << "SIGSEGV: "  << std::endl;
+  AttachDebugger();
+  //to exit or not to exit
+  exit(1);
+}
+void terminateHandler(void)
+{
+  std::cerr << "Terminate: not managed exception !"  << std::endl;
+  AttachDebugger();
+}
+
+void unexpectedHandler(void)
+{
+  std::cerr << "Unexpected: unexpected exception !"  << std::endl;
+  AttachDebugger();
+}
+
 
 #include <Standard_Version.hxx>
 
@@ -346,6 +401,15 @@ void shutdownServers( SALOME_NamingService* theNS )
 // ---------------------------- MAIN -----------------------
 int main( int argc, char **argv )
 {
+
+  if(getenv ("DEBUGGER"))
+    {
+      setsig(SIGSEGV,&Handler);
+      setsig(SIGBUS,&Handler);
+      set_terminate(&terminateHandler);
+      set_unexpected(&unexpectedHandler);
+    }
+
   // Install Qt debug messages handler
   qInstallMsgHandler( MessageOutput );