Salome HOME
Memory Leaks
[modules/superv.git] / src / SUPERVGUI / SUPERVGUI_Clipboard.cxx
index d286581b64672b12f7feb6a5729b90916ab0d315..a26faf868e0c3e9e7acf92105a6db6442fa80ad4 100644 (file)
@@ -136,9 +136,15 @@ QStringList getAllFunctions( SUPERV::Graph_var dataflow ) {
 void SUPERVGUI_Clipboard::pasteNode() {
   Trace("SUPERVGUI_Main::pasteNode");
   SUPERV::CNode_var aNode = getCopyNode();
-  if ( !CORBA::is_nil( aNode ) ) {
+  SUPERVGUI_Main* aMain = Supervision.getMain();
+  if ( !CORBA::is_nil( aNode ) && aMain ) {
     
-    SUPERV::Graph_var dataflow = Supervision.getMain()->getDataflow();
+    if ( !aMain->ReadyToModify() ) // null dataflow or executing, ..
+      return;
+
+    aMain->Editing(); // PAL6170: GUI->Engine: setting "Editing" flag, why here? -> PAL7960
+
+    SUPERV::Graph_var dataflow = aMain->getDataflow();
 
     switch ( aNode->Kind() ) {
 
@@ -361,7 +367,9 @@ void SUPERVGUI_Clipboard::pasteNode() {
 void SUPERVGUI_Clipboard::pastePort( SUPERVGUI_CanvasNode* node )
 {
   SUPERV::Port_var aPort = getCopyPort();
-  if ( !CORBA::is_nil(aPort) ) {
+  SUPERVGUI_Main* aMain = Supervision.getMain();
+  if ( !CORBA::is_nil(aPort) && aMain ) {
+
     SUPERV::INode_var aNode = node->getInlineNode();
     if (!CORBA::is_nil(aNode)) {
       QString aName = aPort->Name();
@@ -372,16 +380,20 @@ void SUPERVGUI_Clipboard::pastePort( SUPERVGUI_CanvasNode* node )
        QStringList aNames = node->getPortsNamesIN(aNode, true);
        if (aNames.contains(aName))
          QMessageBox::warning( QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_PORT_EXIST") );
-       else
+       else {
+         aMain->Editing(); // PAL6170: GUI->Engine: setting "Editing" flag, why here? -> PAL7960
          aPastePort = aNode->InPort(aName.latin1(), aType.latin1());
+       }
       }
       else {
        //check if port with such name is already exists
        QStringList aNames = node->getPortsNamesIN(aNode, false);
        if (aNames.contains(aName))
          QMessageBox::warning( QAD_Application::getDesktop(), tr("ERROR"), tr("MSG_PORT_EXIST") );
-       else
+       else {
+         aMain->Editing(); // PAL6170: GUI->Engine: setting "Editing" flag, why here? -> PAL7960
          aPastePort = aNode->OutPort(aName.latin1(), aType.latin1());
+       }
       }
       if ( !CORBA::is_nil(aPastePort) )
        node->createPort( aPastePort.in() );