Xcos MVC: implement clone / delete on the Model side
[scilab.git] / scilab / modules / scicos / src / cpp / view_scilab / LinkAdapter.cpp
index e70884b..a38174f 100644 (file)
@@ -400,12 +400,6 @@ static bool setLinkEnd(LinkAdapter& adaptor, Controller& controller, object_prop
         return false; // Must be an integer value
     }
 
-    // Disconnect the old port if it was connected
-    if (concernedPort != 0)
-    {
-        controller.setObjectProperty(concernedPort, PORT, CONNECTED_SIGNALS, unconnected);
-    }
-
     ScicosID parentDiagram;
     controller.getObjectProperty(adaptee->id(), BLOCK, PARENT_DIAGRAM, parentDiagram);
     std::vector<ScicosID> children;
@@ -546,6 +540,12 @@ static bool setLinkEnd(LinkAdapter& adaptor, Controller& controller, object_prop
         }
     }
 
+    // Disconnect the old port if it was connected. After that, concernedPort will be reused to designate the new port
+    if (concernedPort != 0)
+    {
+        controller.setObjectProperty(concernedPort, PORT, CONNECTED_SIGNALS, unconnected);
+    }
+
     nBlockPorts = static_cast<int>(sourceBlockPorts.size());
     if (nBlockPorts >= port)
     {
@@ -649,11 +649,8 @@ struct to
 
 template<> property<LinkAdapter>::props_t property<LinkAdapter>::fields = property<LinkAdapter>::props_t();
 
-LinkAdapter::LinkAdapter(const LinkAdapter& o) :
-    BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>(o) {}
-
-LinkAdapter::LinkAdapter(org_scilab_modules_scicos::model::Link* o) :
-    BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>(o)
+LinkAdapter::LinkAdapter(bool ownAdaptee, org_scilab_modules_scicos::model::Link* adaptee) :
+    BaseAdapter<LinkAdapter, org_scilab_modules_scicos::model::Link>(ownAdaptee, adaptee)
 {
     if (property<LinkAdapter>::properties_have_not_been_set())
     {