X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNewGeom%2FNewGeom_SalomeViewer.cpp;h=86e2d8f1b2e5b61d42ce62c760279ed70a5676a8;hb=68420e410a9846ec7dcb2f4645030455bc374288;hp=c3c887ae8e71763f04ae01fdc30409815be02ff5;hpb=6faf13efbe9419c551f37cf79f392d184fb9d98b;p=modules%2Fshaper.git diff --git a/src/NewGeom/NewGeom_SalomeViewer.cpp b/src/NewGeom/NewGeom_SalomeViewer.cpp index c3c887ae8..86e2d8f1b 100644 --- a/src/NewGeom/NewGeom_SalomeViewer.cpp +++ b/src/NewGeom/NewGeom_SalomeViewer.cpp @@ -12,15 +12,33 @@ #include #include +NewGeom_SalomeView::NewGeom_SalomeView(OCCViewer_Viewer* theViewer) +: ModuleBase_IViewWindow(), myCurrentView(0) +{ + myViewer = theViewer; +} + Handle(V3d_View) NewGeom_SalomeView::v3dView() const { - SUIT_ViewManager* aMgr = myViewer->getViewManager(); - OCCViewer_ViewWindow* aWnd = static_cast(aMgr->getActiveView()); - Handle(V3d_View) aView = aWnd->getViewPort()->getView(); + Handle(V3d_View) aView; + if (myCurrentView) { + OCCViewer_ViewWindow* aWnd = static_cast(myCurrentView); + aView = aWnd->getViewPort()->getView(); + } return aView; } +QWidget* NewGeom_SalomeView::viewPort() const +{ + QWidget* aViewPort = 0; + if (myCurrentView) { + OCCViewer_ViewWindow* aWnd = static_cast(myCurrentView); + aViewPort = aWnd->getViewPort(); + } + return aViewPort; +} + //********************************************** //********************************************** //********************************************** @@ -127,14 +145,16 @@ void NewGeom_SalomeViewer::onSelectionChanged() } //********************************************** -void NewGeom_SalomeViewer::onMousePress(SUIT_ViewWindow*, QMouseEvent* theEvent) +void NewGeom_SalomeViewer::onMousePress(SUIT_ViewWindow* theView, QMouseEvent* theEvent) { + myView->setCurrentView(theView); emit mousePress(myView, theEvent); } //********************************************** -void NewGeom_SalomeViewer::onMouseRelease(SUIT_ViewWindow*, QMouseEvent* theEvent) +void NewGeom_SalomeViewer::onMouseRelease(SUIT_ViewWindow* theView, QMouseEvent* theEvent) { + myView->setCurrentView(theView); emit mouseRelease(myView, theEvent); if (myIsSelectionChanged) { emit selectionChanged(); @@ -143,14 +163,16 @@ void NewGeom_SalomeViewer::onMouseRelease(SUIT_ViewWindow*, QMouseEvent* theEven } //********************************************** -void NewGeom_SalomeViewer::onMouseDoubleClick(SUIT_ViewWindow*, QMouseEvent* theEvent) +void NewGeom_SalomeViewer::onMouseDoubleClick(SUIT_ViewWindow* theView, QMouseEvent* theEvent) { + myView->setCurrentView(theView); emit mouseDoubleClick(myView, theEvent); } //********************************************** void NewGeom_SalomeViewer::onMouseMove(SUIT_ViewWindow* theView, QMouseEvent* theEvent) { + myView->setCurrentView(theView); OCCViewer_ViewWindow* aViewWnd = dynamic_cast(theView); Handle(AIS_InteractiveContext) aContext = AISContext(); if (aContext->HasDetected()) // Set focus to provide key events in the view @@ -162,7 +184,12 @@ void NewGeom_SalomeViewer::onMouseMove(SUIT_ViewWindow* theView, QMouseEvent* th bool NewGeom_SalomeViewer::canDragByMouse() const { OCCViewer_Viewer* aViewer = mySelector->viewer(); - return (aViewer->interactionStyle() != 0); + SUIT_ViewWindow* aWnd = aViewer->getViewManager()->getActiveView(); + OCCViewer_ViewWindow* aViewWnd = dynamic_cast(aWnd); + if (aViewWnd) { + return (aViewWnd->interactionStyle() == 0); + } + return true; } @@ -201,8 +228,9 @@ void NewGeom_SalomeViewer::onDeleteView(SUIT_ViewWindow*) } //********************************************** -void NewGeom_SalomeViewer::onViewCreated(SUIT_ViewWindow*) +void NewGeom_SalomeViewer::onViewCreated(SUIT_ViewWindow* theView) { + myView->setCurrentView(theView); emit viewCreated(myView); }