Ignore:
Timestamp:
Feb 18, 2008, 7:19:24 PM (16 years ago)
Author:
garnier
Message:

correction partielle du #120 par l empechement de rentrer recursivement dans les fonctions move et rotate

Location:
trunk/geant4/visualization/OpenGL
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/geant4/visualization/OpenGL/include/G4OpenGLQtViewer.hh

    r725 r728  
    135135  /** To ensure key event are keep one by one */
    136136  bool fHoldKeyEvent;
     137  /** To ensure move event are keep one by one */
     138  bool fHoldMoveEvent;
     139  /** To ensure rotate event are keep one by one */
     140  bool fHoldRotateEvent;
    137141  bool fAutoMove;
    138142  QAction *fRotateAction;
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLQtViewer.cc

    r727 r728  
    291291  ,fContextMenu(0)
    292292  ,fMouseAction(STYLE1)
    293   ,fDeltaRotation(0.5)
     293  ,fDeltaRotation(1)
    294294  ,fDeltaSceneTranslation(0.01)
    295295  ,fDeltaDepth(0.01)
     
    297297  ,fDeltaMove(0.05)
    298298  ,fHoldKeyEvent(false)
     299  ,fHoldMoveEvent(false)
     300  ,fHoldRotateEvent(false)
    299301  ,fAutoMove(false)
    300302{
     
    15221524void G4OpenGLQtViewer::moveScene(G4double dx,G4double dy, G4double dz,bool mouseMove,bool mAutoMove)
    15231525{
     1526  if (fHoldMoveEvent)
     1527    return;
     1528  fHoldMoveEvent = true;
     1529
    15241530  if( mAutoMove == false) {
    15251531    fAutoMove = true;
     
    15361542        coefTrans = ((G4double)getSceneNearWidth())/((G4double)WinSize_y);
    15371543      }
     1544#ifdef GEANT4_QT_DEBUG
     1545      printf("Coef trans %f\n",coefTrans);
     1546#endif
    15381547    } else {
    15391548      coefTrans = getSceneNearWidth()*fDeltaSceneTranslation;
     
    15451554    ((QApplication*)G4Qt::getInstance ())->processEvents();
    15461555  }
     1556
     1557  fHoldMoveEvent = false;
    15471558}
    15481559
     
    15551566void G4OpenGLQtViewer::rotateScene(G4double dx, G4double dy,bool mAutoRotate)
    15561567{
     1568  if (fHoldRotateEvent)
     1569    return;
     1570  fHoldRotateEvent = true;
     1571
    15571572  if( mAutoRotate == false) {
    15581573    fAutoMove = true;
    15591574  }
    1560   dx = dx * fDeltaRotation;
    1561   dy = dy * fDeltaRotation;
    15621575  G4Vector3D vp;
    15631576  G4Vector3D up;
     
    15951608 
    15961609    if (fVP.GetLightsMoveWithCamera()) {
    1597       delta_alpha = dy;
    1598       delta_theta = -dx;
     1610      delta_alpha = dy * fDeltaRotation;
     1611      delta_theta = -dx * fDeltaRotation;
    15991612    } else {
    1600       delta_alpha = -dy;
    1601       delta_theta = dx;
     1613      delta_alpha = -dy * fDeltaRotation;
     1614      delta_theta = dx * fDeltaRotation;
    16021615    }   
    16031616 
     
    16491662    ((QApplication*)G4Qt::getInstance ())->processEvents();
    16501663  }
     1664
     1665  fHoldRotateEvent = false;
    16511666}
    16521667
     
    19992014#endif
    20002015    if (event->key() == Qt::Key_Plus) {
    2001       fDeltaPosX =fDeltaPosX*(1+fDeltaRotation);
    2002       fDeltaPosY =fDeltaPosY*(1+fDeltaRotation);
    2003       printf("rotate + %f %f\n",fDeltaPosX,fDeltaPosY);
     2016      fDeltaRotation = fDeltaRotation/0.7;
    20042017    }
    20052018    else if (event->key() == Qt::Key_Minus) {
    2006       fDeltaPosX =fDeltaPosX*(1-fDeltaRotation);
    2007       fDeltaPosY =fDeltaPosY*(1-fDeltaRotation);
    2008       printf("rotate - %f %f\n",fDeltaPosX,fDeltaPosY);
     2019      fDeltaRotation = fDeltaRotation*0.7;
    20092020    }
    20102021  } else {
  • trunk/geant4/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc

    r725 r728  
    364364  G4MouseMoveEvent(event->x(),event->y(),event->buttons());
    365365#endif
    366 #ifdef GEANT4_QT_DEBUG
    367366  if (hasPendingEvents ())
    368367    G4MouseMoveEvent(event->x(),event->y(),event->buttons(),true);
    369 #endif
    370368}
    371369
Note: See TracChangeset for help on using the changeset viewer.