0025436: Visualization - AIS_InteractiveContext::HilightPreviousDetected() should...
authorisk <isk@opencascade.com>
Wed, 12 Nov 2014 11:27:50 +0000 (14:27 +0300)
committerbugmaster <bugmaster@opencascade.com>
Fri, 21 Nov 2014 11:02:43 +0000 (14:02 +0300)
src/AIS/AIS_LocalContext_1.cxx
src/ViewerTest/ViewerTest_ObjectCommands.cxx
src/ViewerTest/ViewerTest_ViewerCommands.cxx
tests/v3d/edge/A10 [new file with mode: 0644]

index c2701f9..2301294 100644 (file)
@@ -1455,9 +1455,10 @@ Standard_Integer AIS_LocalContext::HilightPreviousDetected (const Handle(V3d_Vie
     return 0;
   }
 
+  const Standard_Integer aLen = myDetectedSeq.Length();
   if (--myCurDetected < 1)
   {
-    myCurDetected = 1;
+    myCurDetected = aLen;
   }
   Handle(SelectMgr_EntityOwner) anOwner = myMainVS->Picked (myDetectedSeq (myCurDetected));
   if (anOwner.IsNull())
index 427d134..ef27aac 100644 (file)
@@ -4256,6 +4256,51 @@ static Standard_Integer VSetSelectionMode (Draw_Interpretor& /*di*/,
   return 0;
 }
 
+//===============================================================================================
+//function : VSelectionNext
+//purpose  : 
+//===============================================================================================
+static Standard_Integer VSelectionNext(Draw_Interpretor& /*theDI*/,
+                                 Standard_Integer /*theArgsNb*/,
+                                 const char** /*theArgVec*/)
+{
+  // Check errors
+  Handle(AIS_InteractiveContext) anAISContext = ViewerTest::GetAISContext();
+  Handle(V3d_View) aView = ViewerTest::CurrentView();
+
+  if (anAISContext.IsNull())
+  {
+    std::cerr << "Call vinit before!" << std::endl;
+    return 1;
+  }
+
+  anAISContext->HilightNextDetected(aView);
+  return 0;
+}
+
+//===============================================================================================
+//function : VSelectionPrevious
+//purpose  : 
+//===============================================================================================
+static Standard_Integer VSelectionPrevious(Draw_Interpretor& /*theDI*/,
+                                 Standard_Integer /*theArgsNb*/,
+                                 const char** /*theArgVec*/)
+{
+  // Check errors
+  Handle(AIS_InteractiveContext) anAISContext = ViewerTest::GetAISContext();
+  Handle(V3d_View) aView = ViewerTest::CurrentView();
+
+  if (anAISContext.IsNull())
+  {
+    std::cerr << "Call vinit before!" << std::endl;
+    return 1;
+  }
+
+  anAISContext->HilightPreviousDetected(aView);
+  return 0;
+}
+
+
 //==========================================================================
 //class   : Triangle 
 //purpose : creates Triangle based on AIS_InteractiveObject. 
@@ -5983,6 +6028,14 @@ void ViewerTest::ObjectCommands(Draw_Interpretor& theCommands)
     "    0 if mode is to be switched off\n", 
     __FILE__, VSetSelectionMode, group);
 
+  theCommands.Add("vselnext",
+    "vselnext : hilight next detected",
+    __FILE__, VSelectionNext, group);
+
+  theCommands.Add("vselprev",
+    "vselnext : hilight previous detected",
+    __FILE__, VSelectionPrevious, group);
+
   theCommands.Add("vtriangle",
     "vtriangle Name PointName PointName PointName", 
     __FILE__, VTriangle,group);
index a17dd12..66c7c13 100644 (file)
@@ -2013,6 +2013,16 @@ static LRESULT WINAPI ViewerWindowProc( HWND hwnd,
         {
           c[0] = THE_KEY_DELETE;
         }
+        // comma
+        else if (wParam == VK_OEM_COMMA)
+        {
+          c[0] = ',';
+        }
+        // dot
+        else if (wParam == VK_OEM_PERIOD)
+        {
+          c[0] = '.';
+        }
         VT_ProcessKeyPress (c);
       }
       break;
diff --git a/tests/v3d/edge/A10 b/tests/v3d/edge/A10
new file mode 100644 (file)
index 0000000..273311b
--- /dev/null
@@ -0,0 +1,19 @@
+puts "============"
+puts "CR25436"
+puts "Test case check work of the new commands vselnext and vselprev"
+puts "============"
+puts ""
+
+box b 10 10 10
+vdisplay b
+vfit
+vselmode 2 1
+vmoveto 30 101
+
+vselnext
+vselnext
+vselnext
+
+vselprev
+vselprev
+vselprev