]> SALOME platform Git repositories - modules/superv.git/commitdiff
Salome HOME
NRI : Merge from V1_2.
authornri <nri@opencascade.com>
Wed, 16 Jul 2003 10:47:36 +0000 (10:47 +0000)
committernri <nri@opencascade.com>
Wed, 16 Jul 2003 10:47:36 +0000 (10:47 +0000)
14 files changed:
src/SUPERVGUI/SUPERVGUI_ControlNode.cxx
src/SUPERVGUI/SUPERVGUI_ControlNode.h
src/SUPERVGUI/SUPERVGUI_Graph.cxx
src/SUPERVGUI/SUPERVGUI_Graph.h
src/SUPERVGUI/SUPERVGUI_GraphNode.cxx
src/SUPERVGUI/SUPERVGUI_GraphNode.h
src/SUPERVGUI/SUPERVGUI_Link.cxx
src/SUPERVGUI/SUPERVGUI_Link.h
src/SUPERVGUI/SUPERVGUI_Main.cxx
src/SUPERVGUI/SUPERVGUI_Main.h
src/SUPERVGUI/SUPERVGUI_Node.cxx
src/SUPERVGUI/SUPERVGUI_Port.cxx
src/SUPERVGUI/SUPERVGUI_Port.h
src/SUPERVGUI/SUPERVGUI_Service.cxx

index 0449291cad2f73268f38ad284df20970bb949f38..2636dbcae7e6994c61eb3f0030c119e15dbcf190 100644 (file)
@@ -184,6 +184,12 @@ void SUPERVGUI_StartControlNode::deletePort(SUPERVGUI_Port* thePort) {
 }
 
 
+QPoint SUPERVGUI_StartControlNode::getOutConnectPnt() {
+  return QPoint(pos().x() + width() -  LABEL_HEIGHT/2,
+               pos().y() + (height()/2));
+}
+
+
 //-----------------------------------------------------------
 //******************* End Node ******************************
 //-----------------------------------------------------------
@@ -294,6 +300,12 @@ void SUPERVGUI_EndControlNode::updateShape() {
 }
 
 
+QPoint SUPERVGUI_EndControlNode::getInConnectPnt() {
+  return QPoint(pos().x() + LABEL_HEIGHT/2, 
+               pos().y() + (height()/2));
+}
+
+
 //-----------------------------------------------------------
 //******************* GoTo Node *****************************
 //-----------------------------------------------------------
index fa2a3c76a74eb6f262b859b0bdb990d530cc2404..5fa06bc2bfcbac90a825eed20ca37934bb83891e 100644 (file)
@@ -39,6 +39,8 @@ class SUPERVGUI_StartControlNode: public SUPERVGUI_GraphNode {
   void setEndNode(SUPERVGUI_EndControlNode* theEndNode);
   SUPERVGUI_EndControlNode* getEndNode();
 
+  virtual QPoint getOutConnectPnt();
+
  public slots:
   void switchPorts();
   virtual void rename();
@@ -71,6 +73,8 @@ class SUPERVGUI_EndControlNode: public SUPERVGUI_GraphNode {
   virtual void showAll();
   virtual void updateShape();
 
+  virtual QPoint getInConnectPnt();
+
  public slots:
   void switchPorts();
 
index d4f83cb99d135df2395a7456a0b2b00bd04a1df0..bd450078adeeff64beef47d15fddb738e6170c73 100644 (file)
@@ -47,7 +47,7 @@ using namespace std;
       SUPERV_CNode aCNodeEnd = SUPERV::CNode::_narrow(nodes->NodesName[i]->Coupled()); \
       ihmNode = (SUPERVGUI_Node *)child(aCNode->Name(), "SUPERVGUI_Node"); \
       if (ihmNode == NULL) { \
-       main->addControlNode(aCNode, aCNodeEnd); \
+       main->addControlNode(aCNode, aCNodeEnd, false); \
       } else { \
         ResizeGraph(ihmNode, aCNode->X(), aCNode->Y()); \
        moveChild(ihmNode, aCNode->X(), aCNode->Y());  \
@@ -83,6 +83,7 @@ SUPERVGUI_Graph::SUPERVGUI_Graph(SUPERVGUI_Main* m):
     myNewLink(0)
 {
   Trace("SUPERVGUI_Graph::SUPERVGUI_Graph");
+  myIsControlView = false;
   myLinksList.setAutoDelete(true);
   viewport()->setMouseTracking(true);
 
@@ -199,14 +200,23 @@ void SUPERVGUI_Graph::draw() {
   aPixmap.fill(viewport()->paletteBackgroundColor());
   
   QPainter aPainter(&aPixmap);
-  SUPERVGUI_Link* aLink;
   QPoint aPos = viewportToContents(viewport()->pos());
-  for (aLink = myLinksList.first(); aLink; aLink = myLinksList.next()) {
-    aLink->isInRect(aPos.x(), aPos.y(), aWidth, aHeight);
-    if (aLink->isInRect(aPos.x(), aPos.y(), aWidth, aHeight)) {
-      aLink->paint(&aPainter, false);
+
+  if (myIsControlView) {
+    SUPERVGUI_CtrlLink* aLink;
+    QMap<QString, SUPERVGUI_CtrlLink>::Iterator it;    
+    for ( it = myCtrlLinks.begin(); it != myCtrlLinks.end(); ++it ) {
+      it.data().paint(&aPainter, false);
     }
-  }    
+  } else {
+    SUPERVGUI_Link* aLink;
+    for (aLink = myLinksList.first(); aLink; aLink = myLinksList.next()) {
+      aLink->isInRect(aPos.x(), aPos.y(), aWidth, aHeight);
+      if (aLink->isInRect(aPos.x(), aPos.y(), aWidth, aHeight)) {
+       aLink->paint(&aPainter, false);
+      }
+    }    
+  }
   bitBlt(viewport(), 0, 0, 
             &aPixmap, 0, 0, aWidth, aHeight, 
             Qt::CopyROP, true);
@@ -294,9 +304,17 @@ void SUPERVGUI_Graph::deletePoint() {
 
 
 void SUPERVGUI_Graph::deleteLink() {
-  deleteLink(mySelectedLink);
-  mySelectedLink = 0;
-  repaintContents();
+  QString aName;
+  if (mySelectedLink->isESInputPort())
+    aName = mySelectedLink->getInputPortES()->getPort()->Name();
+  else
+    aName = mySelectedLink->getInputPort()->getPort()->Name();
+
+  if (aName != "Default") {
+    deleteLink(mySelectedLink);
+    mySelectedLink = 0;
+    repaintContents();
+  }
 }
 
 
@@ -374,7 +392,9 @@ void SUPERVGUI_Graph::sketchEnd(SUPERVGUI_Port* thePort) {
         &&
        (aKind == SUPERV::InLineParameter || aKind == SUPERV::ServiceParameter))
       {
-       myNewLink->setInputPortES(dynamic_cast<SUPERVGUI_PortInESNode*>(thePort));
+       QString aName(aPort->Name());
+       if (aName != "Default")
+         myNewLink->setInputPortES(dynamic_cast<SUPERVGUI_PortInESNode*>(thePort));
       }
     else{ 
       if (aPort->IsLinked()) return;
@@ -384,10 +404,12 @@ void SUPERVGUI_Graph::sketchEnd(SUPERVGUI_Port* thePort) {
            && aPort->Kind() != SUPERV::InLineParameter) {
          return;
        }
-        else  //connection like Gate <--> Gate
+        else { //connection like Gate <--> Gate
          myNewLink->setInputPort(dynamic_cast<SUPERVGUI_PortIn*>(thePort));
-      } else
+       }
+      } else {
        myNewLink->setInputPort(dynamic_cast<SUPERVGUI_PortIn*>(thePort));
+      }
     }
 
   } else {
@@ -477,18 +499,31 @@ bool SUPERVGUI_Graph::createLinkPrs(SUPERV_Link theLink) {
   if (aInNode) {
     QString aName(theLink->InPort()->Name());
     aName += "Input";
-    SUPERVGUI_PortIn* aInPort =(SUPERVGUI_PortIn*)
-      aInNode->child(aName, "SUPERVGUI_PortIn");
-    if (aInPort) 
-      aNewLink->setInputPort(aInPort);
-    else {
-      delete aNewLink;
-      return false;
+    if (theLink->InPort()->Kind() == SUPERV::EndSwitchParameter) {
+      //If input port is EndSwitchParameter
+      SUPERVGUI_PortInESNode* aInPortES =(SUPERVGUI_PortInESNode*)
+       aInNode->child(aName, "SUPERVGUI_PortInESNode");        //returns null
+      if (aInPortES)
+       aNewLink->setInputPortES(aInPortES);
+      else {
+       delete aNewLink;
+       return false;
+      }
+    } else {
+      SUPERVGUI_PortIn* aInPort =(SUPERVGUI_PortIn*)
+       aInNode->child(aName, "SUPERVGUI_PortIn");
+      if (aInPort) 
+       aNewLink->setInputPort(aInPort);
+      else {
+       delete aNewLink;
+       return false;
+      }
     }
   } else {
     delete aNewLink;
     return false;
   }
+  aNewLink->setVisible(!myIsControlView);
   myLinksList.append(aNewLink);
   return true;
 }
@@ -526,7 +561,14 @@ void SUPERVGUI_Graph::setFullView() {
     aNode->showAll();
   }
   delete aNodeList;
+
+  myCtrlLinks.clear();
+  SUPERVGUI_Link* aLink;
+  for (aLink = myLinksList.first(); aLink; aLink = myLinksList.next()) {
+    aLink->setVisible(true);
+  }
   draw();
+  myIsControlView = false;
 }
 
 
@@ -539,7 +581,28 @@ void SUPERVGUI_Graph::setControlView() {
     aNode->hideAll();
   }
   delete aNodeList;
+  myCtrlLinks.clear();
+  SUPERVGUI_Link* aLink;
+  for (aLink = myLinksList.first(); aLink; aLink = myLinksList.next()) {
+    aLink->setVisible(false);
+
+    QString aOutName(aLink->getEngineLink()->OutPort()->Node()->Name());
+    QString aInName(aLink->getEngineLink()->InPort()->Node()->Name());
+    QString aKey = aOutName + aInName;
+
+    if (!myCtrlLinks.contains(aKey)) {
+      SUPERVGUI_GraphNode* aOutNode = (SUPERVGUI_GraphNode*)
+       child(aOutName, "SUPERVGUI_GraphNode");
+      if (!aOutNode) continue;
+      SUPERVGUI_GraphNode* aInNode = (SUPERVGUI_GraphNode*)
+       child(aInName, "SUPERVGUI_GraphNode");
+      if (!aInNode) continue;
+
+      myCtrlLinks[aKey] = SUPERVGUI_CtrlLink(this, aOutNode, aInNode);
+    }
+  }
   draw();
+  myIsControlView = true;
 }
 
 
index bcec75c5373afaeb8cfe109b6ec4ab911420eea0..dcde3ea9d585d129c28b5fee3ad8bf1e1bd16c43 100644 (file)
@@ -33,6 +33,9 @@ using namespace std;
 #include "SUPERVGUI_View.h"
 #include "SUPERVGUI_Node.h"
 #include "SUPERVGUI_Link.h"
+#include "SUPERVGUI_CtrlLink.h"
+#include <qmap.h>
+
 
 class SUPERVGUI_Main;
 
@@ -58,6 +61,8 @@ class SUPERVGUI_Graph: public SUPERVGUI_View {
 
     void setFullView();
     void setControlView();
+    bool isControlView() { return myIsControlView; }
+
     void deleteLink(SUPERVGUI_Link* theLink);
 
     void deleteNode(SUPERVGUI_Node* theNode);
@@ -105,9 +110,10 @@ private slots:
     int myAddLinkPntItem;
     int myDelLinkItem;
    
-
+    bool myIsControlView;
     SUPERVGUI_Link* myNewLink;
     QPtrList<SUPERVGUI_Link> myLinksList;
+    QMap<QString, SUPERVGUI_CtrlLink> myCtrlLinks;
 };
 
 #endif
index 283cf0f0de3b098dbb092d88223f977af022767a..c3c6c6c27266ccf5834b236ca1173d0dd256aeee 100644 (file)
@@ -288,6 +288,24 @@ void SUPERVGUI_GraphNode::updateLinksPrs(bool toCheckExisting) {
   }
   delete ihmList;
 
+  //Find PortInESNode
+  SUPERVGUI_PortInESNode* piES;
+  QObjectList* ihmListES = queryList("SUPERVGUI_PortInESNode");
+  QObjectListIt iES(*ihmListES);
+  while ((piES=(SUPERVGUI_PortInESNode*)iES.current()) != 0) {
+    ++iES;
+    if (piES->getPort()->IsLinked()) {
+      SUPERV_Links aLinks = piES->getPort()->Links();
+      for (int j=0; j<aLinks->length(); j++) {
+       if (toCheckExisting) {
+         if (aGraph->isLinkPrsExists(aLinks[j]))
+           continue;
+       }
+       aGraph->createLinkPrs(aLinks[j]);
+      }
+    }
+  }
+  delete ihmListES;
 }
 
 
@@ -402,3 +420,16 @@ void SUPERVGUI_GraphNode::updatePorts() {
     }
   }
 }
+
+
+/**
+ * Returns coordinates of connection point in content coordinates
+ */
+QPoint SUPERVGUI_GraphNode::getInConnectPnt() {
+  return QPoint(pos().x(), 
+               pos().y() + (height()/2));
+}
+QPoint SUPERVGUI_GraphNode::getOutConnectPnt() {
+  return QPoint(pos().x() + width(),
+               pos().y() + (height()/2));
+}
index f104b5c827a570f3025279774fc03349754f20fb..ce756bc863ffa3d0a53ef28a8d66ee64b62c574a 100644 (file)
@@ -32,6 +32,9 @@ class SUPERVGUI_GraphNode: public SUPERVGUI_Node {
 
   virtual void deletePort(SUPERVGUI_Port* thePort);
 
+  virtual QPoint getInConnectPnt();
+  virtual QPoint getOutConnectPnt();
+
   virtual void updateShape() {};
   virtual void updatePorts();
 
index 948ef6b84f559d9c7dea2a6205b6e6cd63fed903..1dacbea4373ef1e1c8d188328efecff66dd010a8 100644 (file)
@@ -45,6 +45,7 @@ SUPERVGUI_Link::SUPERVGUI_Link(SUPERVGUI_Graph* theGraph, SUPERV_Link theLink) {
   myHltPnt = -1;
   myPntMovingState = false;
   myPainter = 0;
+  myIsVisible = true;
   myTmpPen.setColor(SKETCH_CLR);
   myTmpPen.setWidth(LINE_WIDTH);
   myIsSelected = false;
@@ -241,7 +242,7 @@ void SUPERVGUI_Link::repaint() {
  * if toErase = true then it draws link by background color
  */
 void SUPERVGUI_Link::paint(bool toErase) {
-  if (!myGraph) return;
+  if ((!myGraph) || (!myIsVisible)) return;
   if (!myEngine && SUPERV_isNull(myEngine)) return;
   //  if (!isCreationComplete()) return;
 
@@ -267,7 +268,7 @@ void SUPERVGUI_Link::paint(bool toErase) {
  * Defines a pen and draws link using given painter
  */
 void SUPERVGUI_Link::paint(QPainter* thePainter, bool toErase) {
-  if (!myGraph) return;
+  if ((!myGraph) || (!myIsVisible)) return;
   if (!myEngine && SUPERV_isNull(myEngine)) return;
   //  if (!isCreationComplete()) return;
   thePainter->save();
@@ -294,6 +295,7 @@ void SUPERVGUI_Link::paint(QPainter* thePainter, bool toErase) {
  * Draws link using given painter
  */
 void SUPERVGUI_Link::drawLink(QPainter* thePainter) {
+  if (!myIsVisible) return;
   if (!isESInputPort())
     thePainter->moveTo(myPortIn->getConnectPnt());
   else
@@ -372,6 +374,20 @@ void SUPERVGUI_Link::drawTo(QPoint thePnt) {
 }
 
 
+//**********************************************************************
+/**
+ * Set link non visible
+ */
+void SUPERVGUI_Link::setVisible(bool theVisible) {
+  myIsVisible = theVisible;
+  if (myIsVisible) {
+    connectToEvents();
+  } else {
+    disconnect(myGraph, 0, this, 0);
+  }
+}
+
+
 //**********************************************************************
 /**
  * Checks full definition of the link
index 07048329b3eaa2da49fa41cbe82dc6b5dfa85207..34cfd6fe0de74704a79044ed399558fb2a790fad 100644 (file)
@@ -83,6 +83,8 @@ public:
 
   void removePoint(int thePnt);
 
+  void setVisible(bool theVisible);
+
   static void setOrthoMode(bool theIsOrtho)
     { OrthoMode = theIsOrtho; };
   
@@ -131,6 +133,8 @@ private:
 
   // Selection of Link
   bool myIsSelected;
+
+  bool myIsVisible;
   
   static bool OrthoMode;
   static bool LinkIsMoving;
index 31b3801c3ccd97d78b0b701c2cb4030910e656ba..f5b65bb3a14673717536b8dff31cda43df9550e2 100644 (file)
@@ -651,7 +651,7 @@ void SUPERVGUI_Main::addGOTONode(SUPERV_CNode theNode) {
 /**
  * Add Control node
  */
-void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode) {
+void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update) {
   switch (myCurrentView) {
   case GRAPH:
     {
@@ -664,8 +664,10 @@ void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theE
       graph->addChild(aStartPrs, theStartNode->X(), theStartNode->Y());
       graph->ResizeGraph(aEndPrs, theEndNode->X(), theEndNode->Y());
       graph->addChild(aEndPrs, theEndNode->X(), theEndNode->Y());
-      aStartPrs->updateLinksPrs();
-      aEndPrs->updateLinksPrs();
+      if (Update) {
+       aStartPrs->updateLinksPrs();
+       aEndPrs->updateLinksPrs();
+      }
       aStartPrs->sync();
       aEndPrs->sync();
       graph->repaintContents();
@@ -685,8 +687,10 @@ void SUPERVGUI_Main::addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theE
       graph->addChild(aStartPrs, theStartNode->X(), theStartNode->Y());
       graph->ResizeGraph(aEndPrs, theEndNode->X(), theEndNode->Y());
       graph->addChild(aEndPrs, theEndNode->X(), theEndNode->Y());
-      aStartPrs->updateLinksPrs();
-      aEndPrs->updateLinksPrs();
+      if (Update) {
+       aStartPrs->updateLinksPrs();
+       aEndPrs->updateLinksPrs();
+      }
       aStartPrs->sync();
       aEndPrs->sync();
       graph->repaintContents();
index b274fa837231e3c2fd749efffc163bf2145ced8c..300b1c23414a8d8df0f74f202bc78b78a2dc88b7 100644 (file)
@@ -87,7 +87,7 @@ class SUPERVGUI_Main: public SUPERVGraph_View {
     void checkIsInStudy();
     
     void addComputeNode(SUPERV_CNode theNode);
-    void addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode);
+    void addControlNode(SUPERV_CNode theStartNode, SUPERV_CNode theEndNode, bool Update);
     void addGOTONode(SUPERV_CNode theNode);
 
     void setPaletteBackgroundColor(const QColor& color);
index ba1a479e199fc898bebf75a9cd521dd4059f12c8..3c4515aad4899009162cbd6c16cd24918f3093fa 100644 (file)
@@ -88,14 +88,15 @@ SUPERVGUI_Node::SUPERVGUI_Node(QWidget* theParent, SUPERVGUI_Main* theMain, SUPE
 
   if (myMain->isEditable() && (getNodeType() != SUPERV::FactoryNode)
                            && (getNodeType() != SUPERV::ComputingNode)) {
-    if ((getNodeType() != SUPERV::EndLoopNode) /*&& (getNodeType() != SUPERV::EndSwitchNode)*/) {
+    if ((getNodeType() != SUPERV::EndLoopNode)) {
       QPopupMenu* aAddPortMnu = new QPopupMenu(this);
       aAddPortMnu->insertItem("Input", this, SLOT(addInputPort()));
       if (getNodeType() != SUPERV::LoopNode)
        aAddPortMnu->insertItem("Output", this, SLOT(addOutputPort()));
       
       myPopup->insertSeparator();
-      myPopup->insertItem("Edit Function", this, SLOT(editFunction()));
+      if ((getNodeType() != SUPERV::EndSwitchNode))
+       myPopup->insertItem("Edit Function", this, SLOT(editFunction()));
       myPopup->insertItem("Add Port", aAddPortMnu);
     }
   }
index 27beac30b8d42291cf484450c2b5a223101bc71d..842687eaa551826aac48cfed38a9980b01bb43f2 100644 (file)
@@ -269,11 +269,6 @@ void SUPERVGUI_PortIn::onDeleteLink(SUPERVGUI_Link*) {
   }
 }
 
-void SUPERVGUI_PortIn::deletePort() {
-  
-  SUPERVGUI_Port::deletePort();
-}
-
 
 
 //***********************************************************
@@ -397,11 +392,6 @@ void SUPERVGUI_PortOut::deleteLinks() {
 }
 
 
-void SUPERVGUI_PortOut::deletePort() {
-  
-  SUPERVGUI_Port::deletePort();
-}
-
 
 //***********************************************************
 // Input Port of EndSwitch Node
@@ -529,7 +519,3 @@ void SUPERVGUI_PortInESNode::onDeleteLink(SUPERVGUI_Link* theLink) {
   }
 }
 
-void SUPERVGUI_PortInESNode::deletePort() {
-  
-  SUPERVGUI_Port::deletePort();
-}
index e1bcd5ed01442a56d73d13d46f1b420263434cf3..99b81252e23f8689c90e858f22ee2f0386708f5b 100644 (file)
@@ -105,9 +105,6 @@ class SUPERVGUI_PortIn: public SUPERVGUI_Port {
     void onDeleteLink(SUPERVGUI_Link*);
 
 
-  protected slots:
-    virtual void deletePort();
-
   private:
     int   psd;
     int   psc;
@@ -150,10 +147,6 @@ class SUPERVGUI_PortOut: public SUPERVGUI_Port {
     void onDeleteLink(SUPERVGUI_Link*);
 
 
-  protected slots:
-    virtual void deletePort();
-
-
   private:
     int  pls;
     bool study;
@@ -191,9 +184,6 @@ class SUPERVGUI_PortInESNode: public SUPERVGUI_Port {
     void onDeleteLink(SUPERVGUI_Link*);
 
 
-  protected slots:
-    virtual void deletePort();
-
   private:
 //    int   psd;
     int   psc;
index f9cb9e9acfad155b3ae05e1466ef796682309e79..2b13b08f9d0f466ae2a8f7347aa5b00664b542c5 100644 (file)
@@ -129,9 +129,11 @@ SUPERVGUI_Service::SUPERVGUI_Service(SALOME_NamingService* ns):
 
   QPushButton* aComputeCBtn = new QPushButton(tr("TIT_ADDCNODE"), aCorbaPane); //!!
   connect(aComputeCBtn, SIGNAL(clicked()), this, SLOT(addComputeNode())); //!!
+  aComputeCBtn->setDefault(false); 
 
   QPushButton* aComputeBtn = new QPushButton(tr("TIT_ADDFNODE"), aCorbaPane);
   connect(aComputeBtn, SIGNAL(clicked()), this, SLOT(addFactoryNode()));
+  aComputeBtn->setDefault(true); 
 
   aBaseLayout->addWidget(aComputeBtn);
   aBaseLayout->addWidget(aComputeCBtn); //!!
@@ -411,7 +413,7 @@ void SUPERVGUI_Service::addInlineNode() {
        aEndNode->Coords(myX + LABEL_WIDTH*2, myY);
        myX += NODE_DX;
        myY += NODE_DY;
-       aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode));
+       aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode), true);
       }
       break;
       
@@ -430,7 +432,7 @@ void SUPERVGUI_Service::addInlineNode() {
        aEndNode->Coords(myX + LABEL_WIDTH*2, myY);
        myX += NODE_DX;
        myY += NODE_DY;
-       aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode));
+       aMain->addControlNode(SUPERV::CNode::_narrow(aStartNode), SUPERV::CNode::_narrow(aEndNode), true);
       }
       break;