MeasureDistance
- Abort mode via ESCAPE added BoxZoom, BoxSelection and BoxElementSelection - Change the cursor to give the user feedback about active mode. - Abort mode via ESCAPE
This commit is contained in:
@@ -53,6 +53,7 @@
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Quantity.h>
|
||||
#include <Inventor/MarkerBitmaps.h>
|
||||
#include <Command.h>
|
||||
|
||||
using namespace Gui;
|
||||
|
||||
@@ -242,11 +243,14 @@ PointMarker::PointMarker(View3DInventorViewer* iv) : view(iv),
|
||||
vp(new ViewProviderPointMarker)
|
||||
{
|
||||
view->addViewProvider(vp);
|
||||
previousSelectionEn = view->isSelectionEnabled();
|
||||
view->setSelectionEnabled(false);
|
||||
}
|
||||
|
||||
PointMarker::~PointMarker()
|
||||
{
|
||||
view->removeViewProvider(vp);
|
||||
view->setSelectionEnabled(previousSelectionEn);
|
||||
delete vp;
|
||||
}
|
||||
|
||||
@@ -318,11 +322,10 @@ void ViewProviderMeasureDistance::measureDistanceCallback(void * ud, SoEventCall
|
||||
const SoKeyboardEvent * ke = static_cast<const SoKeyboardEvent*>(ev);
|
||||
const SbBool press = ke->getState() == SoButtonEvent::DOWN ? true : false;
|
||||
if (ke->getKey() == SoKeyboardEvent::ESCAPE) {
|
||||
n->setHandled();
|
||||
// Handle it on key up, because otherwise upper layer will handle it too.
|
||||
if (!press) {
|
||||
n->setHandled();
|
||||
view->setEditing(false);
|
||||
view->removeEventCallback(SoEvent::getClassTypeId(), measureDistanceCallback, ud);
|
||||
pm->deleteLater();
|
||||
endMeasureDistanceMode(ud, view, n, pm);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -350,10 +353,16 @@ void ViewProviderMeasureDistance::measureDistanceCallback(void * ud, SoEventCall
|
||||
}
|
||||
}
|
||||
else if (mbe->getButton() != SoMouseButtonEvent::BUTTON1 && mbe->getState() == SoButtonEvent::UP) {
|
||||
n->setHandled();
|
||||
view->setEditing(false);
|
||||
view->removeEventCallback(SoEvent::getClassTypeId(), measureDistanceCallback, ud);
|
||||
pm->deleteLater();
|
||||
endMeasureDistanceMode(ud, view, n, pm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ViewProviderMeasureDistance::endMeasureDistanceMode(void * ud, Gui::View3DInventorViewer* view, SoEventCallback * n, PointMarker *pm)
|
||||
{
|
||||
n->setHandled();
|
||||
view->setEditing(false);
|
||||
view->removeEventCallback(SoEvent::getClassTypeId(), ViewProviderMeasureDistance::measureDistanceCallback, ud);
|
||||
Application::Instance->commandManager().testActive();
|
||||
pm->deleteLater();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user