]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #236: Buttons 'N' and 'P' change selection of object under cursor to Next or...
authorvsv <vitaly.smetannikov@opencascade.com>
Fri, 7 Nov 2014 08:45:06 +0000 (11:45 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Fri, 7 Nov 2014 08:45:06 +0000 (11:45 +0300)
src/XGUI/XGUI_Viewer.cpp
src/XGUI/XGUI_Viewer.h

index 3a81496155da40783e179953e8384d92d2cc0349..47100f7c463e0e33c472f6c372d8978e939ce7f1 100644 (file)
@@ -458,7 +458,7 @@ void XGUI_Viewer::addView(QMdiSubWindow* theView)
           SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)));
 
   connect(aWindow, SIGNAL(keyReleased(XGUI_ViewWindow*, QKeyEvent*)), this,
-          SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)));
+          SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*)));
 
   //connect(aWindow, SIGNAL(contextMenuRequested( QContextMenuEvent* )),
   //        this,    SLOT  (onContextMenuRequested( QContextMenuEvent* )));
@@ -529,6 +529,8 @@ void XGUI_Viewer::onMouseMove(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent)
   Handle(V3d_View) aView3d = theWindow->viewPort()->getView();
   if (!aView3d.IsNull()) {
     myAISContext->MoveTo(theEvent->x(), theEvent->y(), aView3d);
+    if (myAISContext->HasDetected())
+      theWindow->viewPort()->setFocus(Qt::MouseFocusReason);
   }
 }
 
@@ -607,6 +609,20 @@ void XGUI_Viewer::updateViewsDrawMode() const
   }
 }
 
+//******************************************************
+void XGUI_Viewer::onKeyRelease(XGUI_ViewWindow* theView, QKeyEvent* theKey)
+{
+  Handle(V3d_View) aView = theView->viewPort()->getView();
+  bool noModifiers = (theKey->modifiers() == Qt::NoModifier);
+  if ((theKey->key() == Qt::Key_N) && noModifiers) {
+    myAISContext->HilightNextDetected(aView);
+  } else if ((theKey->key() == Qt::Key_P) && noModifiers) {
+    myAISContext->HilightPreviousDetected(aView);
+  } else {
+    emit keyRelease(theView, theKey);
+  }
+}
+
 //******************************************************
 //void XGUI_Viewer::onContextMenuRequested(QContextMenuEvent* theEvent)
 //{
index 2ae7cdd04feb2b5dfa73364bd174a35a07d7afaf..2cc4c02c05211d88624b22bff81c18fc954737a6 100644 (file)
@@ -182,6 +182,8 @@ signals:
   void onMousePressed(XGUI_ViewWindow* theWindow, QMouseEvent* theEvent);
   //void onContextMenuRequested(QContextMenuEvent* theEvent);
 
+  void onKeyRelease(XGUI_ViewWindow* theView, QKeyEvent* theKey);
+
  private:
   void addView(QMdiSubWindow* theView);
 
@@ -193,7 +195,9 @@ signals:
  private:
   XGUI_MainWindow* myMainWindow;
 
-  Handle(V3d_Viewer) myV3dViewer;Handle(AIS_Trihedron) myTrihedron;Handle(AIS_InteractiveContext) myAISContext;
+  Handle(V3d_Viewer) myV3dViewer;
+  Handle(AIS_Trihedron) myTrihedron;
+  Handle(AIS_InteractiveContext) myAISContext;
 
   XGUI::InteractionStyle myInteractionStyle;